/ Tecnologia / Integração do … / 8.4 Dados de …

8.4 Dados de Buenos Aires

MongoDB

Dados de Buenos Aires
Dados de Buenos Aires

Este texto mostra como baixar dados com coordenadas geográficas da página Datasets da Cidade de Buenos Aires e importar para uma coleção do MongoDB.

8.4.1 – Baixar os dados dos bairros de Buenos Aires

O arquivo GeoJSON com a localização dos bairros da cidade de Buenos Aires foi baixado da página Barrios (GeoJSON).

8.4.2 – Criação de uma coleção no MongoDB para importar os dados de Buenos Aires Data

Para importar os dados baixados da página Barrios (GeoJSON), foi criada a coleção buenosairesbarrios utilizando os comandos:

$ mongo
MongoDB shell version v4.4.1
connecting to: mongodb://127.0.0.1:27017/
Implicit session: session { "id" : UUID("63ca4537-663d-428f-813c-82f189f40af9") }
MongoDB server version: 4.4.1
> // Usar o banco de dados reficio
> use reficio;
switched to db reficio
> // Se a coleção buenosairesbarrios tiver documentos estes serão apagados
> db.getCollection("buenosairesbarrios").drop();
false
> // Criar a coleção buenosairesbarrios
> db.createCollection("buenosairesbarrios", {}, { collation: { locale: "es", strength: 1 } } );
{ "ok" : 1 }
> // Mostrar as informações sobre a coleção
> db.getCollectionInfos({ name: "buenosairesbarrios" })
[
	{
		"name" : "buenosairesbarrios",
		"type" : "collection",
		"options" : {
			
		},
		"info" : {
			"readOnly" : false,
			"uuid" : UUID("d5b9e969-5cde-498d-8a8d-74d5a0c2101c")
		},
		"idIndex" : {
			"v" : 2,
			"key" : {
				"_id" : 1
			},
			"name" : "_id_"
		}
	}
]
> 
8.4.3 – Importação dos dados

A importação dos dados baixados da página Barrios (GeoJSON) para a coleção buenosairesbarrios do MongoDB, foi realizada usando o utilitário mongoimport, conforme mostrado abaixo:

$ mongoimport \
>      --stopOnError \
>      --db reficio \
>      --collection buenosairesbarrios \
>      --file barrios.geojson
2020-10-20T12:38:40.977-0300    connected to: mongodb://localhost/
2020-10-20T12:38:41.114-0300    1 document(s) imported successfully. 0 document(s) failed to import.
8.4.4 – Um documento para cada ponto

Como pode ser visto acima, todos os dados foram importados para um único documento. Para colocar cada bairro em um documento distinto, foi criada e preenchida a coleção barrios_porteños, conforme mostrado abaixo:

$ mongo
MongoDB shell version v4.4.1
connecting to: mongodb://127.0.0.1:27017/
Implicit session: session { "id" : UUID("63ca4537-663d-428f-813c-82f189f40af9") }
MongoDB server version: 4.4.1
> // Usar o banco de dados reficio
> use reficio;
switched to db reficio
> // Se a coleção barrios_porteños tiver documentos estes serão apagados
> db.getCollection("barrios_porteños").drop();
false
> // Criar a coleção barrios_porteños
> db.createCollection("barrios_porteños", {}, { collation: { locale: "es", strength: 1 } } );
{ "ok" : 1 }
> // Criar um documento em barrios_porteños para cada bairro em buenosairesbarrios
> db.buenosairesbarrios.find().forEach(function(data) {
...     db.barrios_porteños.insert( data.features );
... });
> // Mostrar as informações sobre a coleção
> db.getCollectionInfos({ name: "barrios_porteños" })
[
	{
		"name" : "barrios_porteños",
		"type" : "collection",
		"options" : {
			
		},
		"info" : {
			"readOnly" : false,
			"uuid" : UUID("5a724e29-49cd-4877-bd0a-a64fc3a8dddc")
		},
		"idIndex" : {
			"v" : 2,
			"key" : {
				"_id" : 1
			},
			"name" : "_id_"
		}
	}
]
> 
8.4.5 – Programa escrito em Python para listar os bairros de Buenos Aires
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
@summary: Este programa realiza uma consulta à coleção barrios_porteños
          do banco de dados reficio do MongoDB e lista os nomes dos
          bairros da Cidade de Buenos Aires em ordem alfabética.

@since: 2020-10-20

@author: "Reficio"
"""
import numpy as np
from pymongo import MongoClient

conn = MongoClient('localhost', 27017)
db = conn.reficio
barrios_porteños = db.barrios_porteños

# Array com os bairros de Buenos Aires
barrios = []
for barrio in barrios_porteños.find():
    barrios.append( np.array(barrio['properties']['barrio']) )

# Imprimir os bairros em ordem alfabética
for barrio in sorted(barrios):
    print(barrio)

A execução deste programa produziu o seguinte resultado:

AGRONOMIA
ALMAGRO
BALVANERA
BARRACAS
BELGRANO
BOCA
BOEDO
CABALLITO
CHACARITA
COGHLAN
COLEGIALES
CONSTITUCION
FLORES
FLORESTA
LINIERS
MATADEROS
MONSERRAT
MONTE CASTRO
NUEVA POMPEYA
NUÑEZ
PALERMO
PARQUE AVELLANEDA
PARQUE CHACABUCO
PARQUE CHAS
PARQUE PATRICIOS
PATERNAL
PUERTO MADERO
RECOLETA
RETIRO
SAAVEDRA
SAN CRISTOBAL
SAN NICOLAS
SAN TELMO
VELEZ SARSFIELD
VERSALLES
VILLA CRESPO
VILLA DEL PARQUE
VILLA DEVOTO
VILLA GRAL. MITRE
VILLA LUGANO
VILLA LURO
VILLA ORTUZAR
VILLA PUEYRREDON
VILLA REAL
VILLA RIACHUELO
VILLA SANTA RITA
VILLA SOLDATI
VILLA URQUIZA
8.3.7 Mapa do Bairro da Recoleta conforme especificado no arquivo baixado