Um pacote em python para acessar bases cartográficas do IBGE
O cartpy é uma ferramenta para facilitar a análise da evolução territorial dos municípios brasileiros. O fco do pacote é sobre bases cartográficas mais antigas (1872-1991). Para um pacote que dá o acesso mais amplo às bases cartográficas do IBGE veja (geobr).
Abaixo seguem instruções de instalação e uso do cartpy
O pacote está disponível no índice de pacotes do python (PyPi) e, assim, pode facilmente ser instalado usando:
pip install cartpy
O cartpy possui duas classes, Year e Municipio, vamos apresentar o uso básico do pacote abordando cada classe individualmente.
Essa classe serve basicamente para dar acesso direto às bases do IBGE. Assim, digamos que estejamos interessados em baixar os dados do ano de 1872, data do primeiro censo brasileiro. Para isso, basta fazer:
import cartpy
data1872=cartpy.Year(1872)
Com método get_geodata temos acesso à base em formato de dataframe do geopandas:
sf=data1872.get_geodata()
sf.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f3fa1c11e10>
Se o usuário estiver interessado em apenas um estado, basta especificar o código ou a sigla:
data1872.get_geodata(state='BA').plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f3fa0d7aa50>
data1872.get_geodata(state=35).plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f3fa0d1f3d0>
Também é possível ter acesso à base de municípios específicos, caso em que também é preciso especificar o estado. Novamente é possível usa o código ou o nome da unidade federativa em questão
data1872.get_geodata(state='MG',county='Juiz De Fora').plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f3fa0af28d0>
data1872.get_geodata(state='SP',county=3526902).plot() #Limeira
<matplotlib.axes._subplots.AxesSubplot at 0x7f3fa0cba690>
Qualquer das bases pode ser salva como um shapefile usando:
sf.to_file('filename.shp')
A classe Municipio() oferece uma forma simplificada de ter acesso a diversos dados cartográficos dos municípios brasileiros em perspectiva histórica.
Essa classe aceita qualquer string quando é instanciada, mas só aceitará a aplicação de seus respectivos métodos se a string usada corresponder ao município. Para evitar frustrações, é interessante usar o método search para verificar qual a ortografia da base:
mun=cartpy.Municipio('Barreiro')
mun.search(year=1991)
1991
Barreiros: ['PE']
Sao Jose Do Barreiro: ['SP']
Barreira: ['CE']
Barreiras: ['BA']
Careiro: ['AM']
Agora instanciamos novamente a classe, corrigindo a ortografia para ficar igual a base:
mun=cartpy.Municipio('Sao Jose Do Barreiro')
Na versão atual, a classe Municipio tem os seguintes métodos:
mun.get_code(state='SP',year=1991)
3549607
mun.all_names(code=3549607)
Sao Jose Do Barreiro
Sao Jose Dos Barreiros
Barreiro
mun.get_map(state='SP',year=1991)
Outras funções podem ser acessadas pelo método dir()