Conforme a página oficial do IBGE:
A Tabela de Códigos de Municípios, elaborada pelo IBGE, apresenta a lista dos municípios brasileiros associados a um código composto de 7 dígitos, sendo os dois primeiros referentes ao código do estado.
Na prática, os dados encontrados em formato .DBF contém mais do que os municípios, mas também distritos, subdistritos, bairros e setores, em uma hierarquia de códigos de 7 a 15 dígitos, respectivamente.
Fonte dos dados:
ftp://geoftp.ibge.gov.br/organizacao_territorial/localidades/Shapefile_SHP/BR_Localidades_2010_v1.dbf
Mais arquivos de dados do IBGE podem ser encontrados em:
ftp://geoftp.ibge.gov.br/
Descrição dos Campos Finais para Features Geomedia, Shape e KML de Pontos de Localidades 2010 em 28/11/2011.
Tabela convertida da Planilha .XLS encontrada em: ftp://geoftp.ibge.gov.br/organizacao_territorial/localidades/descritivo_campos_localidades_2010.xls
# | Geomedia e KML | Shape | Tipo | Tam. | Descrição |
---|---|---|---|---|---|
1 | ID | ID | Autonumber | - | Contagem automárica de geometrias ponto oriundas de setor |
2 | CD_GEOCODIGO | CD_GEOCODI | Text | 20 | Geocódigo do setor (15 dígitos numéricos) |
3 | TIPO | TIPO | Text | 10 | Classificação de Tipo (Urbano ou Rural, 6 dígitos alfa-numéricos) |
4 | CD_GEOCODBA | CD_GEOCODB | Text | 20 | Geocódigo do bairro (12 dígitos numéricos) |
5 | NM_BAIRRO | NM_BAIRRO | Text | 60 | Nome do bairro |
6 | CD_GEOCODSD | CD_GEOCODS | Text | 20 | Geocódigo do subdistrito (11 dígitos numéricos) |
7 | NM_SUBDISTRITO | NM_SUBDIST | Text | 60 | Nome do subdistrito |
8 | CD_GEOCODDS | CD_GEOCODD | Text | 20 | Geocódigo do distrito (9 dígitos numéricos) |
9 | NM_DISTRITO | NM_DISTRIT | Text | 60 | Nome do distrito |
10 | CD_GEOCODMU | CD_GEOCODM | Text | 20 | Geocódigo do Município (7 dígitos numéricos) |
11 | NM_MUNICIPIO | NM_MUNICIP | Text | 60 | Nome do Município |
12 | NM_MICRO | NM_MICRO | Text | 100 | Nome Micro-região |
13 | NM_MESO | NM_MESO | Text | 100 | Nome Meso-região |
14 | NM_UF | NM_UF | Text | 60 | Nome da UF |
15 | CD_NIVEL | CD_NIVEL | Text | 1 | Código do Nível da Localidade |
16 | CD_CATEGORIA | CD_CATEGOR | Text | 5 | Código da Categoria da Localidade |
17 | NM_CATEGORIA | NM_CATEGOR | Text | 50 | Nome da Categoria da Localidade |
18 | NM_LOCALIDADE | NM_LOCALID | Text | 60 | Nome da Localidade |
19 | LONG | LONG | Double | 6 dec. | Longitude da Localidade em grau decimal |
20 | LAT | LAT | Double | 6 dec. | Latitude da Localidade em grau decimal |
21 | ALT | ALT | Double | 2 dec. | Altitude da Localidade, oriunda de SRTM em metros |
nome campo | valor min | valor max | zero | null | blank | [curto] mais_longo |
---|---|---|---|---|---|---|
id |
|
|
[-] | |||
cd_geocodi | 110001515000001 | 530010805200123 | [110001515000001] 110001515000001 | |||
tipo cd_geocodb nm_bairro |
RURAL |
URBANO 521830005002 progresso |
|
[RURAL] URBANO [] 110004905003 [] Zona de Adensamento Controlado (ZAC - São Silvestre) |
||
cd_geocods nm_subdist |
11000151500 |
53001080520 ÁREA DE PLANEJA |
|
[11000151500] 11000151500 [] QUARTA REGIÃO ADMINISTRATIVA (PRAIA DE CARAPEBUS) |
||
cd_geocodd | 110001515 | 530010805 | [110001515] 110001515 | |||
nm_distrit | ABADIA | ÓLEO | [BAÚ] NÚCLEO COLONIAL PIO XII (SÃO GERÔNIMO) | |||
cd_geocodm nm_municip nm_micro nm_meso |
1100015 |
5300108 ÓLEO ÓBIDOS ZONA DA MATA |
|
[1100015] 1100015 [] VILA BELA DA SANTÍSSIMA TRINDADE [] SERGIPANA DO SERTÃO DO SÃO FRANCISCO [] CENTRO NORTE DE MATO GROSSO DO SUL |
||
nm_uf | ACRE | TOCANTINS | [ACRE] RIO GRANDE DO NORTE | |||
cd_nivel | 1 | 6 | [2] 2 | |||
cd_categor | 00001 | 85 | [15] 00001 | |||
nm_categor | ALDEIA INDÍGENA | VILA | [AUI] PROJETO DE ASSENTAMENTO | |||
nm_localid | 1 | ÓRFÃO | [4] JARDIM CACHOEIRA CHÁCARA CLIMÁTICA BOCAINA PLANALTO DA SERRA | |||
long |
|
|
[-] | |||
lat |
|
|
[-] | |||
alt |
|
|
|
|
[-] | |
gmrotation |
|
|
|
[-] |
Um teste com a biblioteca Tastypie gerou as seguintes URLs para acesso REST ao model cidades.models.MesoRegiao:
^muni/ ^api/ ^(?P<resource_name>mesoregiao)/$ [name='api_dispatch_list']
^muni/ ^api/ ^(?P<resource_name>mesoregiao)/schema/$ [name='api_get_schema']
^muni/ ^api/ ^(?P<resource_name>mesoregiao)/set/(?P<pk_list>\w[\w/;-]*)/$ [name='api_get_multiple']
^muni/ ^api/ ^(?P<resource_name>mesoregiao)/(?P<pk>\w[\w/-]*)/$ [name='api_dispatch_detail']
Acessando a primeira URL com parâmetros:
http://localhost:8000/muni/api/mesoregiao/?limit=3&format=json
Resultado:
{"meta": {"limit": 3, "next": "/muni/api/mesoregiao/?offset=3&limit=3&format=json",
"offset": 0, "previous": null, "total_count": 137},
"objects": [
{"id": "21", "nome": "Agreste Alagoano", "nome_ascii": "Agreste Alagoano",
"regiao": 2, "resource_uri": "/muni/api/mesoregiao/21/", "uf": "AL"},
{"id": "43", "nome": "Agreste Paraibano", "nome_ascii": "Agreste Paraibano",
"regiao": 2, "resource_uri": "/muni/api/mesoregiao/43/", "uf": "PB"},
{"id": "47", "nome": "Agreste Pernambucano", "nome_ascii": "Agreste Pernambucano",
"regiao": 2, "resource_uri": "/muni/api/mesoregiao/47/", "uf": "PE"}
]}
URL de detalhe:
http://localhost:8000/muni/api/mesoregiao/11/?format=json
Resultado:
{"id": "11", "nome": "Metropolitana de Bel\u00e9m", "nome_ascii": "Metropolitana de Belem",
"regiao": 1, "resource_uri": "/muni/api/mesoregiao/11/", "uf": "PA"}
URL de conjunto:
http://localhost:8000/muni/api/mesoregiao/set/11;15/?format=json
Resultado:
{"objects": [
{"id": "11", "nome": "Metropolitana de Bel\u00e9m", "nome_ascii": "Metropolitana de Belem",
"regiao": 1, "resource_uri": "/muni/api/mesoregiao/11/", "uf": "PA"},
{"id": "15", "nome": "Leste Rondoniense", "nome_ascii": "Leste Rondoniense",
"regiao": 1, "resource_uri": "/muni/api/mesoregiao/15/", "uf": "RO"}
]}
URL do esquema da API e dados:
http://localhost:8000/muni/api/mesoregiao/schema/?format=json
Resultado:
{"allowed_detail_http_methods": ["get", "post", "put", "delete", "patch"],
"allowed_list_http_methods": ["get", "post", "put", "delete", "patch"],
"default_format": "application/json",
"default_limit": 20,
"fields": {
"id": {"blank": false, "default": "", "help_text": "Unicode string...",
"nullable": false, "readonly": false, "type": "string", "unique": true},
"nome": {"blank": false, "default": "No default provided.", "help_text": "Uni..",
"nullable": false, "readonly": false, "type": "string", "unique": false},
"nome_ascii": {"blank": false, "default": "No default provided.", "help_text": "Uni...",
"nullable": false, "readonly": false, "type": "string", "unique": false},
"regiao": {"blank": false, "default": "No default provided.",
"help_text": "Integer data. Ex: 2673", "nullable": false, "readonly": false, "type": "integer", "unique": false},
"resource_uri": {"blank": false, "default": "No default provided.", "help_text": "Uni...",
"nullable": false, "readonly": true, "type": "string", "unique": false},
"uf": {"blank": false, "default": "No default provided.", "help_text": "Uni..",
"nullable": false, "readonly": false, "type": "string", "unique": false}
}
}
Experimentei as bibliotecas python-geohash , bem documentada e empacotada, e a Geohash 1.0rc1, referenciada pela primeira.
Fiquei com a Geohash, por ser escrita em Python puro, facilitando a instalação em hosts compartilhados e na nuvem.