Dados do Rio

MariaDB

Página DATA.RIO/IPP Locais de Referência
Página DATA.RIO/IPP Locais de Referência

Este texto mostra como exportar coordenadas geográficas do site DATA.RIO da Prefeitura da Cidade do Rio de Janeiro / Instituto Municipal de Urbanismo Pereira Passos.

8.9.1 – Exportação dos dados

Na página do portal procure por Locais de Referência para abrir a página Locais de Referência, de onde os dados usados neste exemplo serão baixados. Na página exibida, ao se clicar no menu suspenso Download▼, são mostradas três opções para baixar o Conjunto de Dados Completo: Planilha (CSV), KML e Shapefile. Na planilha (arquivo Locais_de_Referência.csv) é usada a referência espacial EPSG Projection 29183 - SAD69 / UTM zone 23S (Brasil de 48°Oeste a 42°Oeste) e não a WGS-84.

Para evitar a conversão das coordenadas de UTM para graus decimais, foi baixado o arquivo KML (Locais_de_Referência.kml), que já tem as coordenadas convertidas, e desenvolvido o programa escrito em Python (Locais_de_Referencia.py) mostrado abaixo, para converter o arquivo KML em um arquivo com os campos delimitados pelo caractere de tabulação para ser carregado no banco de dados:

#!/usr/bin/env ipython
# -*- coding: utf-8 -*-
"""
@summary: Este programa lê o arquivo 'Locais_de_Referência.kml',
          baixado do Data.Rio / Instituto Pereira Passos em
          https://www.data.rio/datasets/locais-de-referência,
          e o transforma no arquivo delimitado com os campos
          separados pelo caractere de tabulação (\t)
          'Locais_de_Referência.tsv', para carga no SGBD MariaDB
          através do comando LOAD DATA.

@since: 2020-11-02

@author: "Halley"
"""

from pykml import parser


def embranco(texto):
    return not (texto and texto.strip())


caminho = "/home/halley/geo/pcrj/"
kml = "Locais_de_Referência.kml"
tsv = "Locais_de_Referência.tsv"
saida = open(caminho + tsv, "w")
with open(caminho + kml, "r") as f:
    pasta = parser.parse(f).getroot().Document.Folder

for p in pasta.Placemark:
    ident = ''
    nome = ''
    descr = ''
    ender = ''
    categ = ''
    for e in p.ExtendedData:
        for s in e.SchemaData:
            for t in s.SimpleData:
                n = t.attrib["name"]
                if embranco(t.text):
                    v = '\\N'
                else:
                    v = t.text
                if n == 'OBJECTID':
                    ident = v.strip()
                elif n == 'Nome':
                    nome = v.strip()
                elif n == 'Descricao':
                    descr = v.strip()
                elif n == 'Endereco':
                    ender = v.strip()
    for g in p.Point:
        coord = (g.coordinates.__str__()).split(',')
    linha = ident + '\t' + nome + '\t' + descr + '\t' + coord[0] + '\t' + coord[1] + "\n"
    saida.write(linha)
Criação da tabela rio_locais_referencia

Para armazenar os dados do Município do Rio de Janeiro contidos no arquivo gerado Locais_de_Referência.tsv, foi criada a tabela rio_locais_referencia. 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 `rio_locais_referencia`;

CREATE TABLE `rio_locais_referencia` (
`OBJECTID`         INTEGER,        -- Identificador do local
`nome`             VARCHAR(64),    -- Nome do local
`descricao`        VARCHAR(512),   -- Descrição do local
`longitude`        DECIMAL(16,13), -- longitude do local
`latitude`         DECIMAL(16,13), -- latitude do local
`coordenadas`      POINT,          -- longitude e latitude do local
PRIMARY KEY(`OBJECTID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Carga da tabela

Para carregar a tabela rio_locais_referencia a partir do arquivo Locais_de_Referência.tsv foi usado o script mostrado abaixo:

TRUNCATE TABLE `rio_locais_referencia`;

LOAD DATA LOCAL
	INFILE '/home/halley/geo/pcrj/Locais_de_Referência.tsv'
	INTO TABLE `rio_locais_referencia`
	FIELDS TERMINATED BY '\t'
	OPTIONALLY ENCLOSED BY '\"'
	LINES TERMINATED BY '\n'
	IGNORE 1 LINES
    (`OBJECTID`, `nome`, `descricao`, `longitude`, `latitude`)
    SET
    `coordenadas` = POINT(`longitude`, `latitude`);
Consultas

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

MariaDB [geoespacial]> -- Dados sobre o Morro do Cochrane
MariaDB [geoespacial]> SELECT *
    -> FROM `rio_locais_referencia`
    -> WHERE `nome` = 'Morro do Cochrane';
OBJECTID|nome             |descricao                                            |longitude        |latitude         |coordenadas                                |
--------|-----------------|-----------------------------------------------------|-----------------|-----------------|-------------------------------------------|
       6|Morro do Cochrane|Elevação revestida por florestas - 718 m de altitude.|-43.2637599280013|-22.9820326998278|POINT (-43.2637599280013 -22.9820326998278)|
1 row in set (0.002 sec)
MariaDB [geoespacial]> -- Shopping Centers no Município do Rio de Janeiro
MariaDB [geoespacial]> SELECT `nome`, `descricao`, `longitude`, `latitude`, `coordenadas`
    -> FROM `rio_locais_referencia`
    -> WHERE `descricao` LIKE  '%Shopping Center%'
    -> ORDER BY `nome`;
nome                           |descricao                                                                                                                                                             |longitude        |latitude         |coordenadas                                |
-------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------|-----------------|-------------------------------------------|
Barra Garden Shopping Center   |Shopping Center                                                                                                                                                       |-43.3427975053570|-23.0007464199001|POINT (-43.342797505357 -23.0007464199001) |
Barra Point Shopping Center    |Shopping Center                                                                                                                                                       |-43.3090048746749|-23.0064338523584|POINT (-43.3090048746749 -23.0064338523584)|
Barra Shopping                 |Shopping Center aberto de Segunda a Sábado das 10 às 22 horas e Domingos das 15 às 21 horas - Av. das Américas, 4.666-Tel. (21) 3089-1000.                            |-43.3580783847369|-22.9975236230415|POINT (-43.3580783847369 -22.9975236230415)|
Botafogo Praia Shopping        |Shopping Center                                                                                                                                                       |-43.1826922119912|-22.9474595308353|POINT (-43.1826922119912 -22.9474595308353)|
Carioca Shopping               |Shopping Center                                                                                                                                                       |-43.3108570028641|-22.8502139193789|POINT (-43.3108570028641 -22.8502139193789)|
Casa Shopping                  |Shopping Center localizado na Av. Ayrton Senna, 2150 - Barra da Tijuca - Tel. 2430-8000 - Aberto Seg. 12h-22h, Ter-Sab. 10h-22h e Dom. 15h-21h.                       |-43.3636195129865|-22.9917637208286|POINT (-43.3636195129865 -22.9917637208286)|
Center Shopping Rio            |Shopping Center                                                                                                                                                       |-43.3610369502238|-22.9247000828141|POINT (-43.3610369502238 -22.9247000828141)|
Downtown                       |Shopping Center                                                                                                                                                       |-43.3185657033674|-23.0048081645669|POINT (-43.3185657033674 -23.0048081645669)|
Gavea Trade Center             |Shopping Center                                                                                                                                                       |-43.2301464534483|-22.9767587993285|POINT (-43.2301464534483 -22.9767587993285)|
Guadalupe Shopping             |Shopping Center                                                                                                                                                       |-43.3814790314347|-22.8363279490654|POINT (-43.3814790314347 -22.8363279490654)|
Ilha Plaza Shopping            |Shopping Center localizado na Ilha do Governador. Av. Maestro Paulo e Silva, 400. Telefone (21) 2462-2616.                                                            |-43.2024646119387|-22.8027217825637|POINT (-43.2024646119387 -22.8027217825637)|
Itauna Shopping                |Shopping Center                                                                                                                                                       |-43.4293598217270|-23.0052128404171|POINT (-43.429359821727 -23.0052128404171) |
Madureira Shopping Rio         |Shopping Center localizado na Estrada do Portela, 222 - Madureira - Tel. 2488-1342 - Aberto de Seg. a Sab. Das 10h-22h e Dom 12h-21h.                                 |-43.3410579671408|-22.8705852306249|POINT (-43.3410579671408 -22.8705852306249)|
New York City Center           |Shopping Center                                                                                                                                                       |-43.3608391342246|-22.9992649550391|POINT (-43.3608391342246 -22.9992649550391)|
Norte Shopping                 |Shopping Center localizado em Del Castilho. Av. Dom Helder Câmara, 5474. Telefone 3089-4444. Aberto de Segunda a Sábado das 11 às 22 horas. Domingo de 15 às 21 horas.|-43.2831888807574|-22.8862920829555|POINT (-43.2831888807574 -22.8862920829555)|
Recreio Shopping               |Shopping Center localizado na Av. das Américas, 19019 - Recreio dos Bandeirantes - Tel. 2490-4100 - Aberto diariamente das 8h às 18h.                                 |-43.4883234708136|-23.0212163016720|POINT (-43.4883234708136 -23.021216301672) |
Rio Design Center              |Shopping Center                                                                                                                                                       |-43.2185495583507|-22.9835830930925|POINT (-43.2185495583507 -22.9835830930925)|
Rio Shopping                   |Shopping Center com acesso pela Estrada do Gabinal na Freguesia - Jacarepaguá.                                                                                        |-43.3448057250946|-22.9430694938721|POINT (-43.3448057250946 -22.9430694938721)|
Rio Sul                        |Rio Sul Shopping Center - Rua Lauro Muller, 116 - Botafogo - Tel. 2545-7200 / 2545-7279. Aberto Diariamente das 10 às 22 horas.                                       |-43.1770325028923|-22.9570977051809|POINT (-43.1770325028923 -22.9570977051809)|
Sao Conrado Fashion Mall       |Shopping Center localizado na Estrada da Gávea, 899 - São Conrado. Aberto diariamente das 10 às 22 horas. Telefone (21) 3083-0300.                                    |-43.2595138904688|-22.9962416410446|POINT (-43.2595138904688 -22.9962416410446)|
Shopping 45                    |Shopping Center                                                                                                                                                       |-43.2320011021627|-22.9246788871069|POINT (-43.2320011021627 -22.9246788871069)|
Shopping Barra Square          |Shopping Center                                                                                                                                                       |-43.3501211446180|-23.0005719828039|POINT (-43.350121144618 -23.0005719828039) |
Shopping Cassino Atlantico     |Shopping Center                                                                                                                                                       |-43.1897525949419|-22.9862008840880|POINT (-43.1897525949419 -22.986200884088) |
Shopping Center de Copacabana  |Shopping Center                                                                                                                                                       |-43.1877878442274|-22.9663492738942|POINT (-43.1877878442274 -22.9663492738942)|
Shopping Center de Madureira   |Shopping Center                                                                                                                                                       |-43.3360757809623|-22.8787870165424|POINT (-43.3360757809623 -22.8787870165424)|
Shopping Center do Brasil      |Shopping Center                                                                                                                                                       |-43.2833827277849|-22.9035927144170|POINT (-43.2833827277849 -22.903592714417) |
Shopping Center Iguatemi       |Shopping Center                                                                                                                                                       |-43.2504789879524|-22.9194783228130|POINT (-43.2504789879524 -22.919478322813) |
Shopping Center Paco do Ouvidor|Shopping Center                                                                                                                                                       |-43.1762363975172|-22.9026656654649|POINT (-43.1762363975172 -22.9026656654649)|
Shopping da Gavea              |Shopping Center                                                                                                                                                       |-43.2282853961988|-22.9755913308001|POINT (-43.2282853961988 -22.9755913308001)|
Shopping Downtown              |Shopping Center localizado na Av. Das Américas, 500 - Barra da Tijuca - Tel. 2494-7072 - Aberto diariamente das 10h às 22h.                                           |-43.3171188473388|-23.0037639716518|POINT (-43.3171188473388 -23.0037639716518)|
Shopping Rio Off Price         |Shopping Center                                                                                                                                                       |-43.1778748370088|-22.9548145347411|POINT (-43.1778748370088 -22.9548145347411)|
Shopping Tijuca                |Shopping Center                                                                                                                                                       |-43.2355845815243|-22.9218773176717|POINT (-43.2355845815243 -22.9218773176717)|
Shopping Via Parque            |Shopping Center localizado na Av. Ayrton Senna, 3000 - Barra da Tijuca. Aberto de segunda a sábado das 10h às 22h. Domingo das 15h às 21h. Telefone (21) 2421-9222.   |-43.3633941560944|-22.9827731704025|POINT (-43.3633941560944 -22.9827731704025)|
Tijuca Off Shopping            |Shopping Center                                                                                                                                                       |-43.2351985666863|-22.9231800057339|POINT (-43.2351985666863 -22.9231800057339)|
West Shopping                  |Shopping Center localizado em Campo Grande. Estrada do Mendanha, 555. Telefone 2414-9000. Aberto diariamente das 10 às 22 horas.                                      |-43.5576534785653|-22.8844221619204|POINT (-43.5576534785653 -22.8844221619204)|
35 rows in set (0.001 sec)

Mapa - Shopping Centers no Município do Rio de Janeiro