Dados do IBGE

MariaDB

Página de Downloads de Geociências do IBGE
Página de Downloads de Geociências do IBGE

Este texto mostra como exportar coordenadas geográficas do IBGE (Instituto Brasileiro de Geografia e Estatística) e importar para uma tabela do MariaDB.

Baixar os dados do IBGE

Na página de Downloads de Geociências do IBGE, pasta organização do territórioestrutura territoriallocalidadesShapefile_SHP, foi baixado o arquivo BR_Localidades_2010_v1.dbf.

$ wget https://geoftp.ibge.gov.br/organizacao_do_territorio/estrutura_territorial/localidades/Shapefile_SHP/BR_Localidades_2010_v1.dbf
--2020-10-20 07:47:01--  https://geoftp.ibge.gov.br/organizacao_do_territorio/estrutura_territorial/localidades/Shapefile_SHP/BR_Localidades_2010_v1.dbf
Resolvendo geoftp.ibge.gov.br (geoftp.ibge.gov.br)... 170.84.40.11
Conectando-se a geoftp.ibge.gov.br (geoftp.ibge.gov.br)|170.84.40.11|:443... conectado.
A requisição HTTP foi enviada, aguardando resposta... 200 OK
Tamanho: 18231776 (17M)
Salvando em: “BR_Localidades_2010_v1.dbf”

BR_Localidades_2010_v1.dbf  100%[=========================================>]  17,39M  1,19MB/s    em 14s     

2020-10-20 07:47:17 (1,27 MB/s) - “BR_Localidades_2010_v1.dbf” salvo [18231776/18231776]
Conversão dos dados do IBGE para o formato CSV

O arquivo BR_Localidades_2010_v1.dbf, baixado do IBGE, é facilmente aberto pelo Libre Office Calc. Para ver as letras acentuadas corretamente escolha a codificação Western Europe (ISO-8859-1). Na primeira linha da planilha aparece, para cada coluna, seu nome, tipo de dado e precisão. A planilha aberta pode ser salva como um arquivo delimitado CSV, com os campos separados pelo caractere de tabulação e com a codificação UTF-8 para posterior carga no MariaDB, através do comando Salvar como.

Criação da tabela br_localidades

Para armazenar os dados do Brasil contidos no arquivo baixado BR_Localidades_2010_v1.dbf, foi criada a tabela br_localidades, conforme especificado na primeira linha da planilha. Foi adicionada às colunas originais a coluna coordenadas, do tipo de geometria Point, para receber a longitude e a latitude do ponto geográfico.

DROP TABLE IF EXISTS `br_localidades`;

CREATE TABLE `br_localidades` (
`ID`           DECIMAL(10,0),
`CD_GEOCODI`   VARCHAR(20),
`TIPO`         VARCHAR(10),
`CD_GEOCODB`   VARCHAR(20),
`NM_BAIRRO`    VARCHAR(60),
`CD_GEOCODS`   VARCHAR(20),
`NM_SUBDIST`   VARCHAR(60),
`CD_GEOCODD`   VARCHAR(20),
`NM_DISTRIT`   VARCHAR(60),
`CD_GEOCODM`   VARCHAR(20),
`NM_MUNICIP`   VARCHAR(60),
`NM_MICRO`     VARCHAR(100),
`NM_MESO`      VARCHAR(100),
`NM_UF`        VARCHAR(60),
`CD_NIVEL`     VARCHAR(1),
`CD_CATEGOR`   VARCHAR(5),
`NM_CATEGOR`   VARCHAR(50),
`NM_LOCALID`   VARCHAR(60),
`LON`          DECIMAL(24,6),
`LAT`          DECIMAL(24,6),
`ALT`          DECIMAL(24,5),
`GMRotation`   DECIMAL(24,5),
`coordenadas`  POINT,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Carga da tabela

Para carregar a tabela br_localidades a partir do arquivo BR_Localidades_2010_v1.csv foi usado o script mostrado abaixo:

TRUNCATE TABLE `br_localidades`;

LOAD DATA LOCAL
    INFILE '/home/halley/geo/ibge/BR_Localidades_2010_v1.csv'
    IGNORE
    INTO TABLE `br_localidades`
    FIELDS TERMINATED BY '\t'
    OPTIONALLY ENCLOSED BY '\"'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (`ID`, `CD_GEOCODI`, `TIPO`, `CD_GEOCODB`, `NM_BAIRRO`, `CD_GEOCODS`,
     `NM_SUBDIST`, `CD_GEOCODD`, `NM_DISTRIT`, `CD_GEOCODM`, `NM_MUNICIP`,
     `NM_MICRO`, `NM_MESO`, `NM_UF`, `CD_NIVEL`, `CD_CATEGOR`, `NM_CATEGOR`,
     `NM_LOCALID`, @lon, @lat, @alt, @GMRotation)
    SET
    `LON` = CONVERT(REPLACE(@lon,',','.'), DECIMAL(24,6)),
    `LAT` = CONVERT(REPLACE(@lat,',','.'), DECIMAL(24,6)),
    `ALT` = CONVERT(REPLACE(@alt,',','.'), DECIMAL(24,5)),
    `GMRotation` = CONVERT(REPLACE(@GMRotation,',','.'), DECIMAL(24,5)),
    `coordenadas` = POINT(`LON`, `LAT`);
Consultas

Abaixo estão mostrados exemplos de consultas aos dados carregados:

MariaDB [geoespacial]> SELECT *
    -> FROM  `br_localidades`
    -> WHERE `NM_UF` = 'RIO DE JANEIRO'
    -> AND   `NM_MUNICIP` = 'ANGRA DOS REIS'
    -> AND   `NM_BAIRRO` = 'FRADE';
ID   |CD_GEOCODI     |TIPO  |CD_GEOCODB  |NM_BAIRRO|CD_GEOCODS |NM_SUBDIST|CD_GEOCODD|NM_DISTRIT|CD_GEOCODM|NM_MUNICIP    |NM_MICRO           |NM_MESO       |NM_UF         |CD_NIVEL|CD_CATEGOR|NM_CATEGOR|NM_LOCALID|LON       |LAT       |ALT    |GMRotation|coordenadas                  |
-----|---------------|------|------------|---------|-----------|----------|----------|----------|----------|--------------|-------------------|--------------|--------------|--------|----------|----------|----------|----------|----------|-------|----------|-----------------------------|
14902|330010015000001|URBANO|330010015057|FRADE    |33001001500|          |330010015 |CUNHAMBEBE|3300100   |ANGRA DOS REIS|BAÍA DA ILHA GRANDE|SUL FLUMINENSE|RIO DE JANEIRO|2       |15        |VILA      |CUNHAMBEBE|-44.436164|-22.966426|2.90834|   0.00000|POINT (-44.436164 -22.966426)|
1 row in set (0.033 sec)
MariaDB [geoespacial]> -- Distância do Centro de Angra dos Reis até a Vila do Abraão na Ilha Grande
MariaDB [geoespacial]> SELECT distancia(a.coordenadas, b.coordenadas) AS distancia
    -> FROM `br_localidades` a, `br_localidades` b
    -> WHERE (a.`NM_UF` = 'RIO DE JANEIRO' AND a.`NM_MUNICIP` = 'ANGRA DOS REIS' AND a.`NM_BAIRRO` = 'CENTRO')
    ->   AND (b.`NM_UF` = 'RIO DE JANEIRO' AND b.`NM_MUNICIP` = 'ANGRA DOS REIS' AND b.`NM_BAIRRO` = 'VILA DO ABRAÃO');
+--------------------+
| distancia          |
+--------------------+
| 22.101994850292716 |
+--------------------+
1 row in set (0.038 sec)
MariaDB [geoespacial]> -- Municípios do Estado do Rio de Janeiro
MariaDB [geoespacial]> SELECT `NM_MUNICIP`, `NM_MESO`, `LAT`, `LON` 
    -> FROM  `br_localidades`
    -> WHERE `NM_UF` = 'RIO DE JANEIRO'
    -> AND   `NM_CATEGOR` = 'CIDADE';
+---------------------------------+---------------------------------+------------+------------+
| NM_MUNICIP                      | NM_MESO                         | LAT        | LON        |
+---------------------------------+---------------------------------+------------+------------+
| ANGRA DOS REIS                  | SUL FLUMINENSE                  | -23.009116 | -44.319627 |
| APERIBÉ                         | NOROESTE FLUMINENSE             | -21.619422 | -42.104917 |
| ARARUAMA                        | BAIXADAS                        | -22.877438 | -42.341096 |
| AREAL                           | CENTRO FLUMINENSE               | -22.236912 | -43.101070 |
| ARMAÇÃO DOS BÚZIOS              | BAIXADAS                        | -22.757764 | -41.887749 |
| ARRAIAL DO CABO                 | BAIXADAS                        | -22.967638 | -42.028336 |
| BARRA DO PIRAÍ                  | SUL FLUMINENSE                  | -22.469596 | -43.828452 |
| BARRA MANSA                     | SUL FLUMINENSE                  | -22.545301 | -44.172431 |
| BELFORD ROXO                    | METROPOLITANA DO RIO DE JANEIRO | -22.764556 | -43.399625 |
| BOM JARDIM                      | CENTRO FLUMINENSE               | -22.153305 | -42.417211 |
| BOM JESUS DO ITABAPOANA         | NOROESTE FLUMINENSE             | -21.134497 | -41.677680 |
| CABO FRIO                       | BAIXADAS                        | -22.880765 | -42.020075 |
| CACHOEIRAS DE MACACU            | METROPOLITANA DO RIO DE JANEIRO | -22.467571 | -42.663164 |
| CAMBUCI                         | NOROESTE FLUMINENSE             | -21.577277 | -41.908636 |
| CARAPEBUS                       | NORTE FLUMINENSE                | -22.182595 | -41.664011 |
| COMENDADOR LEVY GASPARIAN       | CENTRO FLUMINENSE               | -22.033359 | -43.217224 |
| CAMPOS DOS GOYTACAZES           | NORTE FLUMINENSE                | -21.751899 | -41.330476 |
| CANTAGALO                       | CENTRO FLUMINENSE               | -21.981840 | -42.365978 |
| CARDOSO MOREIRA                 | NORTE FLUMINENSE                | -21.496157 | -41.613296 |
| CARMO                           | CENTRO FLUMINENSE               | -21.929312 | -42.609718 |
| CASIMIRO DE ABREU               | BAIXADAS                        | -22.479537 | -42.204211 |
| CONCEIÇÃO DE MACABU             | NORTE FLUMINENSE                | -22.087872 | -41.867759 |
| CORDEIRO                        | CENTRO FLUMINENSE               | -22.027777 | -42.363031 |
| DUAS BARRAS                     | CENTRO FLUMINENSE               | -22.058906 | -42.515098 |
| DUQUE DE CAXIAS                 | METROPOLITANA DO RIO DE JANEIRO | -22.785253 | -43.309888 |
| ENGENHEIRO PAULO DE FRONTIN     | METROPOLITANA DO RIO DE JANEIRO | -22.543685 | -43.679477 |
| GUAPIMIRIM                      | METROPOLITANA DO RIO DE JANEIRO | -22.519596 | -42.978330 |
| IGUABA GRANDE                   | BAIXADAS                        | -22.839057 | -42.222125 |
| ITABORAÍ                        | METROPOLITANA DO RIO DE JANEIRO | -22.745863 | -42.860343 |
| ITAGUAÍ                         | METROPOLITANA DO RIO DE JANEIRO | -22.871251 | -43.775041 |
| ITALVA                          | NOROESTE FLUMINENSE             | -21.425103 | -41.690965 |
| ITAOCARA                        | NOROESTE FLUMINENSE             | -21.670503 | -42.077730 |
| ITAPERUNA                       | NOROESTE FLUMINENSE             | -21.210591 | -41.886203 |
| ITATIAIA                        | SUL FLUMINENSE                  | -22.497015 | -44.562772 |
| JAPERI                          | METROPOLITANA DO RIO DE JANEIRO | -22.644819 | -43.653786 |
| LAJE DO MURIAÉ                  | NOROESTE FLUMINENSE             | -21.205721 | -42.131174 |
| MACAÉ                           | NORTE FLUMINENSE                | -22.368705 | -41.775064 |
| MACUCO                          | CENTRO FLUMINENSE               | -21.990230 | -42.257074 |
| MAGÉ                            | METROPOLITANA DO RIO DE JANEIRO | -22.654349 | -43.040246 |
| MANGARATIBA                     | METROPOLITANA DO RIO DE JANEIRO | -22.961712 | -44.041127 |
| MARICÁ                          | METROPOLITANA DO RIO DE JANEIRO | -22.916955 | -42.819824 |
| MENDES                          | METROPOLITANA DO RIO DE JANEIRO | -22.517423 | -43.721487 |
| MESQUITA                        | METROPOLITANA DO RIO DE JANEIRO | -22.768088 | -43.429224 |
| MIGUEL PEREIRA                  | METROPOLITANA DO RIO DE JANEIRO | -22.455427 | -43.474676 |
| MIRACEMA                        | NOROESTE FLUMINENSE             | -21.411163 | -42.198411 |
| NATIVIDADE                      | NOROESTE FLUMINENSE             | -21.043757 | -41.976440 |
| NILÓPOLIS                       | METROPOLITANA DO RIO DE JANEIRO | -22.807514 | -43.416610 |
| NITERÓI                         | METROPOLITANA DO RIO DE JANEIRO | -22.896452 | -43.075823 |
| NOVA FRIBURGO                   | CENTRO FLUMINENSE               | -22.286461 | -42.532771 |
| NOVA IGUAÇU                     | METROPOLITANA DO RIO DE JANEIRO | -22.759835 | -43.450345 |
| PARACAMBI                       | METROPOLITANA DO RIO DE JANEIRO | -22.609727 | -43.709385 |
| PARAÍBA DO SUL                  | CENTRO FLUMINENSE               | -22.161982 | -43.289544 |
| PARATY                          | SUL FLUMINENSE                  | -23.219414 | -44.710859 |
| PATY DO ALFERES                 | METROPOLITANA DO RIO DE JANEIRO | -22.427415 | -43.424871 |
| PETRÓPOLIS                      | METROPOLITANA DO RIO DE JANEIRO | -22.510599 | -43.177337 |
| PINHEIRAL                       | SUL FLUMINENSE                  | -22.515674 | -44.000355 |
| PIRAÍ                           | SUL FLUMINENSE                  | -22.628757 | -43.899351 |
| PORCIÚNCULA                     | NOROESTE FLUMINENSE             | -20.962608 | -42.040156 |
| PORTO REAL                      | SUL FLUMINENSE                  | -22.432948 | -44.296901 |
| QUATIS                          | SUL FLUMINENSE                  | -22.409919 | -44.262711 |
| QUEIMADOS                       | METROPOLITANA DO RIO DE JANEIRO | -22.717430 | -43.555670 |
| QUISSAMÃ                        | NORTE FLUMINENSE                | -22.106640 | -41.472509 |
| RESENDE                         | SUL FLUMINENSE                  | -22.471184 | -44.443613 |
| RIO BONITO                      | METROPOLITANA DO RIO DE JANEIRO | -22.711272 | -42.625998 |
| RIO CLARO                       | SUL FLUMINENSE                  | -22.731727 | -44.139406 |
| RIO DAS FLORES                  | SUL FLUMINENSE                  | -22.171862 | -43.576433 |
| RIO DAS OSTRAS                  | BAIXADAS                        | -22.523941 | -41.936967 |
| RIO DE JANEIRO                  | METROPOLITANA DO RIO DE JANEIRO | -22.876652 | -43.227875 |
| SANTA MARIA MADALENA            | CENTRO FLUMINENSE               | -21.966094 | -42.014445 |
| SANTO ANTÔNIO DE PÁDUA          | NOROESTE FLUMINENSE             | -21.535977 | -42.177912 |
| SÃO FRANCISCO DE ITABAPOANA     | NORTE FLUMINENSE                | -21.480138 | -41.117720 |
| SÃO FIDÉLIS                     | NORTE FLUMINENSE                | -21.643627 | -41.755592 |
| SÃO GONÇALO                     | METROPOLITANA DO RIO DE JANEIRO | -22.829547 | -43.032335 |
| SÃO JOÃO DA BARRA               | NORTE FLUMINENSE                | -21.640458 | -41.050348 |
| SÃO JOÃO DE MERITI              | METROPOLITANA DO RIO DE JANEIRO | -22.802331 | -43.371885 |
| SÃO JOSÉ DE UBÁ                 | NOROESTE FLUMINENSE             | -21.360221 | -41.941232 |
| SÃO JOSÉ DO VALE DO RIO PRETO   | METROPOLITANA DO RIO DE JANEIRO | -22.149740 | -42.923368 |
| SÃO PEDRO DA ALDEIA             | BAIXADAS                        | -22.837203 | -42.103529 |
| SÃO SEBASTIÃO DO ALTO           | CENTRO FLUMINENSE               | -21.954463 | -42.130220 |
| SAPUCAIA                        | CENTRO FLUMINENSE               | -21.993956 | -42.914175 |
| SAQUAREMA                       | BAIXADAS                        | -22.931127 | -42.496694 |
| SEROPÉDICA                      | METROPOLITANA DO RIO DE JANEIRO | -22.743011 | -43.701925 |
| SILVA JARDIM                    | BAIXADAS                        | -22.654330 | -42.389826 |
| SUMIDOURO                       | CENTRO FLUMINENSE               | -22.050669 | -42.678626 |
| TANGUÁ                          | METROPOLITANA DO RIO DE JANEIRO | -22.733937 | -42.721172 |
| TERESÓPOLIS                     | METROPOLITANA DO RIO DE JANEIRO | -22.409005 | -42.962957 |
| TRAJANO DE MORAES               | CENTRO FLUMINENSE               | -22.061380 | -42.054815 |
| TRÊS RIOS                       | CENTRO FLUMINENSE               | -22.117448 | -43.211609 |
| VALENÇA                         | SUL FLUMINENSE                  | -22.244719 | -43.704844 |
| VARRE-SAI                       | NOROESTE FLUMINENSE             | -20.929298 | -41.863295 |
| VASSOURAS                       | METROPOLITANA DO RIO DE JANEIRO | -22.409008 | -43.663874 |
| VOLTA REDONDA                   | SUL FLUMINENSE                  | -22.509968 | -44.093522 |
+---------------------------------+---------------------------------+------------+------------+
92 rows in set (0.014 sec)

Nota - Pelo Google Maps, a distância entre Angra dos Reis e a Vila do Abraão na Ilha Grande, em linha reta, é de 21,48 km.

Mapa - Municípios do Estado do Rio de Janeiro