SAUDAÇÕES!

Seja bem vindo à página do professor Pedro Albuquerque. Para saber mais sobre meu currículo, disciplinas ministradas e interesses de pesquisa, navegue no menu disponível no topo da página.
Mostrando postagens com marcador Google Map. Mostrar todas as postagens
Mostrando postagens com marcador Google Map. Mostrar todas as postagens

quinta-feira, 15 de dezembro de 2016

Mapas Temáticos usando o R - Parte 2.


Como continuação do post Mapas Temáticos usando o R, mostraremos aqui como é possível unir informações pontuais (Point Process) e dados regionais (Lattice Data) além de unir esses dados com o Google maps.

O primeiro passo é a obtenção da malha (shapefile) e dos dados (DadosMapa.csv) para o processo de georeferenciamento.

O primeiro passo é invocar as bibliotecas necessárias bem como definir o Working Directory no qual o arquivo DadosMapa.csv está e também a pasta Shapes

#Limpa o Working Directory
rm(list=ls())
#Define working directory
setwd("C:\\Blog\\ExemploMapas")
#Invoca os pacotes necessários
library(RColorBrewer)
library(maptools)
library(rgdal)
library(rgeos)
library(RgoogleMaps)
library(sp)
library(spdep)
library(ggmap)
library(plyr)
library(Hmisc)

Em seguida, importamos para o R os dados e a malha de interesse:

#Importa os dados
dados<-read.csv("DadosMapa.csv")
#Lê os shapefiles que estão na pasta Shapes dentro do working directory
sfn <- readOGR("Shapes","11MUE250GC_SIR",verbose = FALSE) 
Uma vez lidos os dados e malhas, é preciso saber qual a região devemos importar do GoogleMaps, para isso fazemos:
#Bounding box a ser utilizada no ggmap
b <- bbox(sfn)
#Cria uma variável ID para o georeferenciamento
sfn@data$id <- rownames(sfn@data)
#Define a projeção (Shapefile)
sfn <- spTransform(sfn, CRS("+proj=longlat +datum=WGS84"))
#Cria um SpatialPointsDataFrame com as latitudes e longitudes dos dados
spdf <- SpatialPointsDataFrame(coords=dados[,c("Longitude","Latitude")], data=dados)
#Define a projeção para os pontos
proj4string(spdf) <-CRS("+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0")
#Trasnforma o objeto espacial em um objeto que pode ser lido pelo ggplot2
sfn.df <- fortify(sfn, region="CD_GEOCMU")
#Substring a variável ID para ficar com 6 dígitos (ignora o dígito verificador)
sfn.df$V007<-substr(sfn.df$id,1,6)
#Left Join do CSV com o Shapefile
sfn.df<-merge(sfn.df,dados,by="V007",all.x=T)
#Ordena os dados
sfn.df<-sfn.df[order(sfn.df$order), ] 
Finalmente, após a união dos dados com o Shapefile podemos construir o mapa. Para isso passamos como argumento do ggmap a bounding box obtida nos passos anteriores e definimos também as cores, escalas, títulos do mapa:
#Aumenta ou diminui a Bounding Box (aumenta em 1%)
bbox <- ggmap::make_bbox(sfn.df$long, sfn.df$lat, f = 0.1)
#Escolhe as cores
myPalette <- colorRampPalette(rev(brewer.pal(11, "Spectral")))
#Obtêm o mapa do Google Maps (Existem outras possibilidades...)
map <- get_map(location=bbox, source='google', maptype = 'terrain', color='bw')
#Constrói o mapa:
map <- ggmap(map, base_layer=ggplot(data=sfn.df, aes(x=long, y=lat)), 
             extent = "normal", maprange=FALSE)
map <- map + geom_polygon(data=sfn.df,aes(x = long, y = lat, group = group, fill=Valor), alpha = .6)  
map <- map +   geom_path(aes(x = long, y = lat, group = group),
                         data = sfn.df, colour = "grey50", alpha = .7, size = .4, linetype=2)  
map <- map + coord_equal() 
map <- map + scale_fill_gradientn(colours = myPalette(4))
map<-map+  geom_point(aes(x=Longitude, y=Latitude),color="black", size=1,
                      alpha = 0.70,
                      data=spdf@data)
map<-map +  ggtitle("Postos SINE") +  labs(x="Longitude",y="Latitude") 
#Plota o mapa
plot(map)
Pode-se ainda definir outras bases para o shapefile, alguns exemplos são apresentados a seguir:
##Pode-se trocar o código:
map <- get_map(location=bbox, source='google', maptype = 'terrain', color='bw')
##Do bloco anterior, por algum desses outros:
#map <- get_map(location=bbox, source='osm', color='bw'))
#map <- get_map(location=bbox, source='stamen', color='watercolor'))
#map <- get_map(location=bbox, source='stamen', color='toner'))
#map <- get_map(location=bbox, source='stamen', color='terrain'))
#map <- get_map(location = bbox, source = 'google', maptype = 'terrain')
#map <- get_map(location = bbox, source = 'google', maptype = 'satellite')
#map <- get_map(location = bbox, source = 'google', maptype = 'roadmap')
#map <- get_map(location = bbox, source = 'google', maptype = 'hybrid')

quarta-feira, 26 de setembro de 2012

QGIS - Aplicações em geomarketing - Parte 2.


Dando continuidade sobre as operações no Quantum Gis em especial com aplicações em Geomarketing demonstrarei aqui como adicionar ao mapa: ruas ou imagens de satélites oriundas do Google Maps.

Esse tipo de análise é útil quando deseja-se estudar o impacto de variáveis georeferenciadas e a sua relação com possíveis estruturas como ruas, shoppings, parques, etc..

Assumindo que a primeira parte do post QGIS - Aplicações em geomarketing - Parte 1, tenha sido realizada podemos seguir aqui com uma nova análise.

Adicionando Layers do Google Map no QGis.

Considere a malha de setor censitário de Brasília, a mesma malha publicada no post QGIS - Aplicações em geomarketing - Parte 1.

Após realizar a projeção em: Projected Coordinate Systems → Universe Transverse Mercartor (UTM) → SAD69/ UTM Zone 23S (procedimento explicado no primeiro post) e ter salvo a nova malha já projetada, a tela do Qgis deverá ser algo como:


Para adicionar a malha do Google Map no Qgis precisamos adicionar um plugin no Qgis.

Os plugins são compilações de funções, usualmente criadas pelos usuários do Qgis que realizam determinadas tarefas.

O primeiro passo para adicionar a malha do Google Map no Qgis precisamos adicionar um novo repositório de plugins no software.

Para isso, execute os seguintes procedimentos: Plugins → Fetch Python Plugins... na tela que surgir escolha a aba Repositories, a seguinte surgirá:


O plugin que necessitamos chama-se OpenLayers Plugin.

Para que ele fique disponível, precisamos adicionar o seguinte repositório: http://build.sourcepole.ch/qgis/plugins.xml. Para isso, clique no botão Add e adicione o nome do repositório (por exemplo, Repositorio) e o endereço (nesse caso http://build.sourcepole.ch/qgis/plugins.xml) e clique no botão OK:


Na aba plugins procure pelo plugin OpenLayers e adicione-o. Para isso, clique nele e pressione o botão Install plugin:


Após esse procedimento, feche a janela. Em seguida, para adicionarmos a malha do Google Map no ambiente do Qgis faça no Menu: Plugins → OpenLayers plugin → Add Google Streets layers:


Como o QGis funciona como um sistema de camadas (Layers) a camada superior se subrepõem as demais, assim, caso a malha BSB esteja sobre a malha Google Streets a seguinte imagem surge:


Para trocar a ordem das camadas basta segurar a camada desejada e arrastar para a posição de interesse. Entretanto, não é possível observar as ruas sobre a malha BSB, para isso, podemos reduzir a visibilidade da camada BSB.

Para isso, dê dois cliques com o botão direito sobre a cor do Layer BSB (nesse caso o quadrado em lilás), caso o procedimento tenha sido executado corretamente a seguinte tela surgirá:


Faça a transparência igual a 50%:


Em seguida clique no botão OK:


Com a transparência alterada para 50% boa parte das estruturas existentes no Google Street podem ser observadas nesse novo mapa e análises podem ser formuladas com base nesse novo mapa.