Dados do NGA GEOnet Names Server (GNS)

MariaDB

Página do banco de dados geográficos NGA GEOnet Names Server (GNS)
Página do banco de dados geográficos NGA GEOnet Names Server (GNS)

Este texto mostra como baixar dados de NGA GEOnet Names Server (GNS) e importar para uma tabela do MariaDB.

O GEOnet Names Server (GNS) é o repositório oficial de grafias padrão de todos os nomes geográficos estrangeiros, sancionado pelo Conselho dos Estados Unidos sobre Nomes Geográficos (US BGN). O banco de dados também contém grafias variantes (referências cruzadas), que são úteis para finalidades de consulta, bem como grafias de escrita não romana de muitos desses nomes. Todas as feições geográficas no banco de dados contêm informações sobre localização, divisão administrativa e qualidade. O banco de dados pode ser usado para uma variedade de propósitos, incluindo o estabelecimento de grafias oficiais de nomes de lugares estrangeiros, cartografia, GIS, GEOINT e localização de lugares. O GNS não contém nenhum dado para os Estados Unidos da América ou suas áreas dependentes.

Download de dados do GNS

A página Country Files (GNS) contém arquivos completos de Nomes Geográficos para Áreas Geopolíticas do GNS (em conformidade com a norma ISO/IEC 10646 [Unicode UTF-8] de 18 de julho de 2002).

O arquivo contendo os dados para o Brasil, br.zip, pode ser baixado clicando no link Download Country Files na aba da esquerda da página, para abrir a página Country Files (GNS) e, então, clicando no link BRAZIL, ou se copiando o endereço do link e utilizando o programa wget.

$ wget https://geonames.nga.mil/gns/html/cntyfile/br.zip
--2020-10-22 10:45:49--  https://geonames.nga.mil/gns/html/cntyfile/br.zip
Resolvendo geonames.nga.mil (geonames.nga.mil)... 214.37.41.76
Conectando-se a geonames.nga.mil (geonames.nga.mil)|214.37.41.76|:443... conectado.
A requisição HTTP foi enviada, aguardando resposta... 200 OK
Tamanho: 14900100 (14M) [application/x-zip-compressed]
Salvando em: “br.zip”

br.zip                      100%[=========================================>]  14,21M   468KB/s    em 36s     

2020-10-22 10:46:28 (400 KB/s) - “br.zip” salvo [14900100/14900100]

Ao se listar o arquivo br.zip, obtemos as seguintes informações:

$ 7z l br.zip 

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=pt_BR.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs AMD FX(tm)-4300 Quad-Core Processor             (600F20),ASM,AES-NI)

Scanning the drive for archives:
1 file, 14900100 bytes (15 MiB)

Listing archive: br.zip

--
Path = br.zip
Type = zip
Physical Size = 14900100

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2020-10-16 11:57:38 .....     33079378      7517988  br.txt
2020-10-16 11:57:56 .....      3142247       503905  br_administrative_a.txt
2020-10-16 11:57:58 .....      8563509      2024245  br_hydrographic_h.txt
2020-10-16 11:58:02 .....       855471       204592  br_localities_l.txt
2020-10-16 11:58:02 .....     13977403      3111801  br_populatedplaces_p.txt
2020-10-16 11:58:10 .....         6955         2205  br_transportation_r.txt
2020-10-16 11:58:10 .....      4058194       926639  br_spot_s.txt
2020-10-16 11:58:12 .....      2469229       605005  br_hypsographic_t.txt
2020-10-16 11:58:14 .....         8316         2227  br_vegetation_v.txt
2020-10-16 11:58:14 .....          297          179  br_disclaimer.txt
------------------- ----- ------------ ------------  ------------------------
2020-10-16 11:58:14           66160999     14898786  10 files
Criação da tabela gnsbr

O arquivo br.txt, obtido após a descompactação do arquivo br.zip, contém na primeira linha os nomes de todas as suas colunas. A página Pre-Positioned Country files format (Unicode UTF-8) contém a descrição de todas essas colunas. Usando-se estas informações foi criada a tabela gnsbr conforme mostrado abaixo:

DROP TABLE IF EXISTS `gnsbr`;

CREATE TABLE `gnsbr` (
`RC`                 DECIMAL(1),     -- Region Font Code
`UFI`                DECIMAL(16),    -- Unique Feature Identifier
`UNI`                DECIMAL(16),    -- Unique Name Identifier
`LAT`                DECIMAL(10,6),  -- Latitude
`LON`                DECIMAL(10,6),  -- Longitude
`DMS_LAT`            VARCHAR(9),     -- Latitude of the feature in degrees, minutes, seconds and hemisphere (DMSH)
`DMS_LON`            VARCHAR(10),    -- Longitude of the feature in degrees, minutes, seconds and hemisphere (DMSH)
`MGRS`               VARCHAR(15),    -- Military Grid Reference System coordinates
`JOG`                VARCHAR(7),     -- Joint Operations Graphic reference
`FC`                 VARCHAR(1),     -- Feature Class
`DSG`                VARCHAR(6),     -- Feature Designation Code
`PC`                 VARCHAR(1),     -- Populated Place Class
`CC1`                VARCHAR(255),   -- Primary Geopolitical Code
`ADM1`               VARCHAR(2),     -- Primary administrative division code
`POP`                DECIMAL(16),    -- Population figures (no longer maintained; contains no values)
`ELEV`               DOUBLE,         -- Elevation in meters (no longer maintained; contains no values)
`CC2`                VARCHAR(255),   -- Secondary Geopolitical Code
`NT`                 VARCHAR(2),     -- Name Type
`LC`                 VARCHAR(3),     -- Language Code (ISO 639-3)
`SHORT_FORM`         VARCHAR(128),   -- A part of the full name that could substitute for the full name
`GENERIC`            VARCHAR(128),   -- The descriptive part of the full name such as Cerro (mountain), Arroyo (river), or Golfo (gulf) 
`SORT_NAME_RO`       VARCHAR(255),   -- Sort name - reading order
`FULL_NAME_RO`       VARCHAR(255),   -- Full name - reading order
`FULL_NAME_ND_RO`    VARCHAR(255),   -- Full name - reading order with no diacritics
`SORT_NAME_RG`       VARCHAR(255),   -- Sort name - reversed generic
`FULL_NAME_RG`       VARCHAR(255),   -- Full name - reversed generic
`FULL_NAME_ND_RG`    TEXT,           -- Full name - reversed generic with no diacritics
`NOTE`               TEXT,           -- This field holds a geopolitical policy note concerning the feature, populated when CC1 and ADM1 are NULL, and it could contain multiple notes
`MODIFY_DATE`        VARCHAR(10),    -- The date a new feature was added or any part of an existing feature was modified (YYYY-MM-DD)
`DISPLAY`            VARCHAR(255),   -- Comma-separated non-spaced scale range values to aid in the visualization and selection of features.
`NAME_RANK`          DECIMAL(16),    -- A numeric value (1 - n) used to facilitate the display/visualization of the names associated with a feature
`NAME_LINK`          DECIMAL(38),    -- Unique Name Identifier (UNI) that links romanized names to their non-Roman script equivalent and vice-versa
`TRANSL_CD`          VARCHAR(32),    -- Transliteration Code
`NM_MODIFY_DATE`     VARCHAR(10),    -- The date a new name was added or any part of an existing name was modified (YYYY-MM-DD)
`F_EFCTV_DT`         VARCHAR(10),    -- Feature effectivity date. The documented date a feature came into existence (YYYY-MM-DD)
`F_TERM_DT`          VARCHAR(10),    -- Feature termination date. The date a feature could no longer be verified on cartographic source or imagery (YYYY-MM-DD)
`coordenadas`        POINT           -- longitude e latitude do ponto geográfico
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Carga da tabela

Para carregar a tabela gnsbr a partir do arquivo br.txt foi usado o script mostrado abaixo:

TRUNCATE TABLE `gnsbr`;

LOAD DATA LOCAL
	INFILE '/home/halley/geo/gns/br.txt'
	INTO TABLE `gnsbr`
	FIELDS TERMINATED BY '\t'
	OPTIONALLY ENCLOSED BY '\"'
	LINES TERMINATED BY '\n'
	IGNORE 1 LINES
    (RC, UFI, UNI, LAT, LON, DMS_LAT, DMS_LON, MGRS, JOG, FC, DSG, PC,
     CC1, ADM1, @pop, @elev, CC2, NT, LC, SHORT_FORM, GENERIC,
     SORT_NAME_RO, FULL_NAME_RO, FULL_NAME_ND_RO, SORT_NAME_RG,
     FULL_NAME_RG, FULL_NAME_ND_RG, NOTE, MODIFY_DATE, DISPLAY, @name_rank,
     @name_link, TRANSL_CD, NM_MODIFY_DATE, F_EFCTV_DT, F_TERM_DT)
    SET
    POP = IF(@pop = '', NULL , @pop),
    ELEV = IF(@elev = '', NULL , @elev),
    NAME_RANK = IF(@name_rank = '', NULL , @name_rank),
    NAME_LINK = IF(@name_link = '', NULL , @name_link),
    coordenadas = POINT(LON, LAT);
Consultas

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

MariaDB [geoespacial]> -- Coordenadas do Aeroporto Santos Dumont
MariaDB [geoespacial]> SELECT `FULL_NAME_RO`, `MGRS`, `LAT`, `LON`, `coordenadas`
    -> FROM `gnsbr`
    -> WHERE `DSG` = 'AIRP' AND FULL_NAME_RO LIKE '%Santos Dumont%';
FULL_NAME_RO           |MGRS           |LAT       |LON       |coordenadas                 |
-----------------------|---------------|----------|----------|----------------------------|
Aeroporto Santos Dumont|23KPQ8823865286|-22.909852|-43.164640|POINT (-43.16464 -22.909852)|
1 row in set (0.174 sec)
MariaDB [geoespacial]> -- Coordenadas dos aeroportos do Brasil
MariaDB [geoespacial]> SELECT `FULL_NAME_RO`, `MGRS`, `LAT`, `LON`
    -> FROM `gnsbr`
    -> WHERE `DSG` = 'AIRP'
    -> ORDER BY `SORT_NAME_RO`;
+-----------------------------------------------------------------------------+-----------------+------------+------------+
| FULL_NAME_RO                                                                | MGRS            | LAT        | LON        |
+-----------------------------------------------------------------------------+-----------------+------------+------------+
| Aeroporto Bartolomeu de Gusmão                                              | 23KPQ3184263988 | -22.926973 | -43.714271 |
| Aeroporto da Pampulha                                                       | 23KPU1007304777 | -19.849983 | -43.948772 |
| Aeroporto de Jacarepagua                                                    | 23KPQ6698657106 | -22.985973 | -43.370899 |
| Aeroporto Deputado José Afonso de Almeida                                   | 22KFV0837839745 | -23.147623 | -49.941355 |
| Aeroporto Hercílio Luz                                                      | 22JGQ4255236811 | -27.671110 | -48.540953 |
| Aeroporto Internacional de Salvador                                         | 24LWL7229972256 | -12.914221 | -38.333534 |
| Aeroporto Internacional do Brasília                                         | 23LJC8884042662 | -15.875632 | -47.905412 |
| Aeroporto Internacional do Galeão                                           | 23KPQ8043877444 | -22.800928 | -43.242073 |
| Aeroporto Internacional do Recife                                           | 25LBM8825700904 |  -8.129310 | -34.921719 |
| Aeroporto Internacional do Rio de Janeiro (Galeão - Antônio Carlos Jobim)   | 23KPQ8043877444 | -22.800928 | -43.242073 |
| Aeroporto Internacional Salgado Filho                                       | 22JDM8271882125 | -29.991667 | -51.179167 |
| Aeroporto Santos Dumont                                                     | 23KPQ8823865286 | -22.909852 | -43.164640 |
| Alta Floresta                                                               | 21LWK9803109334 |  -9.865442 | -56.105916 |
| Altamira                                                                    | 22MCB6068640345 |  -3.253092 | -52.253889 |
| Aragarças                                                                   | 22LCH6711841790 | -15.899475 | -52.241281 |
| Arapiraca                                                                   | 24LYQ4405323368 |  -9.732442 | -36.775471 |
| Arcoverde                                                                   | 24LYR1091870169 |  -8.407208 | -37.084428 |
| Augusto Severo                                                              | 25MBP5127446315 |  -5.909344 | -35.246532 |
| Barcelos                                                                    | 20MND0901691535 |  -0.981316 | -62.918968 |
| Barreirinha                                                                 | 21MVS9358891414 |  -2.791854 | -57.057691 |
| Belmonte                                                                    | 24LWH1335744999 | -15.873994 | -38.875241 |
| Borba                                                                       | 21MTR1110612459 |  -4.406281 | -59.602974 |
| Brasilia International Airport                                              | 23LJC8884042662 | -15.875632 | -47.905412 |
| Cacoal                                                                      | 20LPN6608035722 | -11.432852 | -61.477636 |
| Campo dos Palmares                                                          | 25LAK9262847519 |  -9.510026 | -35.799452 |
| Cangapara                                                                   | 23MQN1221943078 |  -6.843953 | -43.079596 |
| Casa Nova                                                                   | 24LTQ8573286149 |  -9.166593 | -40.949959 |
| Conceição do Araguaia                                                       | 22LFR8699176824 |  -8.348034 | -49.301920 |
| Costa Marques                                                               | 20LLM6393926542 | -12.421277 | -64.251766 |
| Dois de Julho                                                               | 24LWL7135572572 | -12.911385 | -38.342244 |
| Eduardo Gomes International Airport                                         | 20MRB2839963895 |  -3.036758 | -60.045951 |
| Fazenda Canada                                                              | 23LPD0279738298 | -15.028508 | -44.043729 |
| Garanhuns                                                                   | 24LYR7209320180 |  -8.855853 | -36.526205 |
| Guararapes                                                                  | 25LBM8825700904 |  -8.129310 | -34.921719 |
| Gurupi                                                                      | 22LGN0338601583 | -11.739449 | -49.133739 |
| Ilhéus                                                                      | 24LVJ9677162190 | -14.814507 | -39.030009 |
| Irecê                                                                       | 24LSN8916144650 | -11.342319 | -41.847615 |
| Itacoatiara                                                                 | 21MUS3532454321 |  -3.126380 | -58.481930 |
| Jaciara                                                                     | 21LYC1715736728 | -15.939257 | -54.971310 |
| Jacobina                                                                    | 24LUN3048365563 | -11.162909 | -40.552415 |
| Januária                                                                    | 23LNC6557988737 | -15.477762 | -44.388633 |
| João Durval Carneiro                                                        | 24LWM0519445305 | -12.254491 | -38.952243 |
| Lençóis                                                                     | 24LTM4442518545 | -12.486225 | -41.351457 |
| Macapá                                                                      | 22NDF9202505620 |   0.050843 | -51.071667 |
| Magalhaes de Almeida                                                        | 23MPR2332605203 |  -4.475646 | -43.888406 |
| Manicoré                                                                    | 20MPU9062257362 |  -5.811327 | -61.278396 |
| Marechal Cunha Machado                                                      | 23MNT8522014029 |  -2.587018 | -44.233396 |
| Marechal Rondon                                                             | 21LWC9460369351 | -15.652094 | -56.117336 |
| Maués                                                                       | 21MVS1950027219 |  -3.372353 | -57.724659 |
| Monte Alegre                                                                | 21MZT2554479111 |  -1.995820 | -54.073935 |
| Óbidos                                                                      | 21MXT6517393454 |  -1.868050 | -55.515018 |
| Oriximiná                                                                   | 21MXU2942810565 |  -1.713515 | -55.836423 |
| Parintins                                                                   | 21MWT2494804070 |  -2.677331 | -56.775557 |
| Penedo                                                                      | 24LYP6639964276 | -10.265040 | -36.567948 |
| Petrolina                                                                   | 24LUQ2849764213 |  -9.366815 | -40.561758 |
| Petrolina Southeast                                                         | 24LUQ3550861333 |  -9.393134 | -40.498041 |
| Pinto Martins                                                               | 24MWA5184782586 |  -3.776298 | -38.533060 |
| Ponta Pelada                                                                | 21MSS6803951773 |  -3.146185 | -59.986370 |
| Porto Nacional                                                              | 22LGP8452014023 | -10.717784 | -48.398830 |
| Presidente Castro Pinto                                                     | 25MBN8448109427 |  -7.148057 | -34.951515 |
| Presidente Juscelino Kubitschek International                               | 23LJC8884042662 | -15.875632 | -47.905412 |
| Propriá                                                                     | 24LYP3736263569 | -10.273307 | -36.832848 |
| Redenção                                                                    | 22LFS1239812045 |  -8.031815 | -49.980024 |
| Santa Maria                                                                 | 24LYN1119484732 | -10.987424 | -37.067188 |
| São Félix do Xingu                                                          | 22MCT9475065798 |  -6.641343 | -51.952159 |
| Senhor do Bonfim                                                            | 24LUP7115542782 | -10.466375 | -40.177282 |
| Sobradinho                                                                  | 24LTQ9995553604 |  -9.461484 | -40.822091 |
| Socrates Mariani Bittencour                                                 | 24LSK9569122061 | -14.256491 | -41.820068 |
| Teresina                                                                    | 23MQQ4160540080 |  -5.061970 | -42.820832 |
| Vitória da Conquista                                                        | 24LTJ9969256076 | -14.862236 | -40.861725 |
+-----------------------------------------------------------------------------+-----------------+------------+------------+
70 rows in set (0.132 sec)

Mapa - Aeroportos do Brasil pelos dados do NGA GEOnet Names Server (GNS)