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 geomarketing. Mostrar todas as postagens
Mostrando postagens com marcador geomarketing. 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')

segunda-feira, 16 de maio de 2016

Geomarketing com Aprendizado de Máquina.


Geomarketing é um campo interessante de pesquisa que objetiva auxiliar os analistas de marketing em suas decisões através do GIS (Geographic Information Systems).

A proposta desse post é apresentar o mesmo processo de modelagem desenvolvido no trabalhos Mercado de comida japonesa no Distrito Federal : análise das oportunidades de negócio por meio de Geomarketing e Máquinas de Suporte Vetorial.

Basicamente, o processe de modelagem envolve os seguintes passos baseados no trabalho de Silva, C.A (2014) [pág. 70]:


O primeiro passo é obter as variáveis de interesse na mesma unidade observacional da malha digital que será utilizada no Geomarketing:

#Limpa o workspace
rm(list=ls())
### Define o  Working Directory
setwd("C:\\Users\\Dados\\POF 2008")
source("LeBasesPosicaoFixa.R")
### Cria um novo arquivo somente com as informações necessárias
# Seleciona tudo: 
fselpr<-function(x) x
#Seleciona somente UF 53: fselpr <- function(x) x[substring(x,3,4)==53]
rcsel.pfix(file.inp="T_MORADOR_S.txt", file.out="MORADOR.txt",
           first=c(3,5,8,9,11,12,60,112),
           last=c(4,7,8,10,11,13,62,127),
           fselpr)
###Lê os dados do arquivo de interesse
dados<-read.table("MORADOR.txt")
###Deleta o arquivo MORADOR.txt
file.remove("MORADOR.txt")
#Coloca os nomes das variáveis
colnames(dados)<-c("COD_UF","NUM_SEQ","NUM_DV","COD_DOMC","NUM_UC","NUM_INFORMANTE",
                   "IDADE_ANOS","RENDA_BRUTA_MONETARIA")
#Coloca os labels nas variáveis
library(Hmisc)
label(dados$COD_UF)<-'CÓDIGO DA UF'
label(dados$NUM_SEQ)<-'NÚMERO SEQUENCIAL'
label(dados$NUM_DV)<-'DV DO SEQUENCIAL'
label(dados$COD_DOMC)<-'NÚMERO DO DOMICÍLIO'
label(dados$NUM_UC)<-'NÚMERO DA UC'
label(dados$NUM_INFORMANTE)<-'NÚMERO DO INFORMANTE'
label(dados$IDADE_ANOS)<-'IDADE CALCULADA EM ANOS'
label(dados$RENDA_BRUTA_MONETARIA)<-'RENDA MONETÁRIA MENSAL DA UC'
describe(dados)
##Lê os dados do arquivo T_DESPESA_INDIVIDUAL_S.txt
rcsel.pfix(file.inp="T_DESPESA_INDIVIDUAL_S.txt", file.out="DESPESA.txt",
           first=c(3,5,8,9,11,12,44,46,53),
           last=c(4,7,8,10,11,13,45,50,63), fselpr)
###Lê os dados do arquivo de interesse
desp<-read.table("DESPESA.txt")
###Deleta o arquivo DESPESA.txt
file.remove("DESPESA.txt")
#Coloca os nomes das variáveis
colnames(desp)<-c("COD_UF","NUM_SEQ","NUM_DV","COD_DOMC","NUM_UC",
                  "NUM_INF","NUM_QUADRO","COD_ITEM","VAL_DESPESA")
#Coloca os labels nas variáveis
label(desp$COD_UF)<-'CÓDIGO DA UF'
label(desp$NUM_SEQ)<-'NÚMERO SEQUENCIAL'
label(desp$NUM_DV)<-'DV DO SEQUENCIAL'
label(desp$COD_DOMC)<-'NÚMERO DO DOMICÍLIO'
label(desp$NUM_UC)<-'NÚMERO DA UC'
label(desp$NUM_INF)<-'NÚMERO DO INFORMANTE'
label(desp$NUM_QUADRO)<-'NÚMERO DO QUADRO'
label(desp$COD_ITEM)<-'CÓDIGO DO ITEM'
label(desp$VAL_DESPESA)<-'VALOR DA DESPESA / AQUISIÇÃO'
O código anterior utiliza as bases da Pesquisa de Orçamentos Familiares de 2008: T_DESPESA_INDIVIDUAL_S.txt e T_MORADOR_S.txt além da função de leitura LeBasesPosicaoFixa.R. Em seguida, as bases de morador e despesas são unidas através do merge entre os dados:
#Mostrar até 8 casas decimais 
options("scipen" = 8)
##Faz o merge entre as bases
#Renomeia a variável NUM_INFORMANTE
colnames(dados)[6]<-"NUM_INF"
#Faz o merge
tudo<-merge(dados,desp,by=c("COD_UF","NUM_SEQ","NUM_DV","COD_DOMC",
                            "NUM_UC","NUM_INF"),all=TRUE)
#Obtêm a base somente com os itens 101 e 102 do quadro 28
ingresso<-tudo[which(tudo$NUM_QUADRO==28&
                       tudo$COD_ITEM%in%c(101,201)),]
As últimas linhas obtêm somente os registros para o gasto com ingressos para cinema e teatro. Esses valores podem ser consultados na documentação da POF 2008. Como os dados de interesse estão por Setor Censitário ou Área de Ponderação, precisamos estudar quais variáveis já existem nessas bases para padronizar com as variáveis da POF. Para isso, é necessário consultar o documento Descrição das variáveis - Microdados da amostra do Censo. Nesse exercício, vamos trabalhar com as variáveis V6036 – Idade calculada em anos e V5070 - Rendimento familiar per capita em julho de 2010 assim a leitura dos dados é feito de maneira similar:
### Cria um novo arquivo somente com as informações necessárias
# Seleciona tudo: 
fselpr<-function(x) x
rcsel.pfix(file.inp="Amostra_Pessoas_53.txt", file.out="CENSO.txt",
           first=c(8,62,406),
           last=c(20,64,413),
           fselpr)
###Lê os dados do arquivo de interesse
censo<-read.table("CENSO.txt")
###Deleta o arquivo CENSO.txt
file.remove("CENSO.txt")
#Coloca os nomes das variáveis
colnames(censo)<-c("CD_APONDE","IDADE_ANOS","RENDA_BRUTA_MONETARIA")
#Arruma a renda pois tem duas casas decimais
censo$RENDA_BRUTA_MONETARIA<-censo$RENDA_BRUTA_MONETARIA/100
Note que o arquivo Amostra_Pessoas_53.txt pode ser obtido diretamente do sítio do IBGE. Nesse exercício não utilizaremos os pesos amostrais fornecidos para que a abordagem seja a mais simples possível, dessa forma, precisamos obter por Área de Ponderação a idade média e a renda média:
#Remove outliers
censo<-censo[which(censo$RENDA_BRUTA_MONETARIA<999999),]
#Calcula a média da idade e renda por área de ponderação:
library(dplyr)
by_pes <- group_by(censo,CD_APONDE)
geo<-summarise(by_pes, 
               IDADE_ANOS=mean(IDADE_ANOS), 
               RENDA_BRUTA_MONETARIA=mean(RENDA_BRUTA_MONETARIA)
               )
Em seguida, precisamos treinar a Máquina de Suporte Vetorial para que reconheça o padrão de consumo médio nas regiões, para isso fazemos:
#Junta os dads com quem incluisve não gatsou com ingresso
#Faz o merge
pof<-merge(dados,ingresso,
           by=c("COD_UF","NUM_SEQ","NUM_DV","COD_DOMC",
                "NUM_UC","NUM_INF"),all=TRUE)
#Quando VAL_DESPESA==NA então não gastou com ingresso
pof$VAL_DESPESA[is.na(pof$VAL_DESPESA)]<-0
#Treina a máquina
library(kernlab)
svm<-ksvm(VAL_DESPESA~IDADE_ANOS.x+RENDA_BRUTA_MONETARIA.x,data=pof,
          C = 1, epsilon = 0.1,type="eps-svr",kernel="rbfdot",
          kpar=list(sigma=4),cross=3)
Aqui novamente por simplicidade, não faremos uma busca exaustiva nos parâmetros ótimos do SVM para tentar manter a abordagem o mais simples possível. Uma vez treinada a máquina, fazemos a previsão do valor gasto com ingressos na base do CENSO:
#Faz a previsão:
colnames(geo)<-c("CD_APONDE","IDADE_ANOS.x","RENDA_BRUTA_MONETARIA.x")
VAL_DESPESA<-predict(svm,geo)
#Junta com a base do CENSo o valor predito
geo<-cbind(geo,VAL_DESPESA)
Pronto!! Apesar do modelo não ter se ajustado muito bem (pois não procuramos pelos parâmetros ótimos e nem utilizamos o peso amostral para ponderar as estatísticas) podemos agora esboçar o mapa com as previsões de gasto com ingressos:
#Baixa a imagem do mapa
library(ggmap)
library(RgoogleMaps)
CenterOfMap <- geocode("Brasilia, DF")
#Pode usar terrain, toner, satellite
BSB <- get_map(c(lon=CenterOfMap$lon, lat=CenterOfMap$lat),zoom = 12, maptype = "satellite", source = "google")
BSB <- ggmap(BSB)
BSB 
#Abre a malha
library(rgdal)
library(rgeos)
library(ggplot2)
library(plyr)
sfn <- readOGR(".","BRASILIA_area_de_ponderacao") 
#Bounding box 
b <- bbox(sfn)
#Junta o mapa com os dados de previsão
sfn@data$id <- rownames(sfn@data)
sfn@data   <- join(sfn@data, geo, by="CD_APONDE")
#Cria a projeção
sfn <- spTransform(sfn, CRS("+proj=longlat +datum=WGS84"))
#Cria o objeto ggplot
sfn.df <- fortify(sfn)
sfn.df     <- join(sfn.df,sfn@data, by="id")
#Faz o mapa
BSB<-BSB + geom_polygon(data = sfn.df, aes(x = long, y = lat, group = group, fill = VAL_DESPESA), 
                        colour = 'grey',  alpha = .4, size = .1) +
  theme(legend.position = "left", title = element_blank())
BSB


sábado, 29 de setembro de 2012

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


Nesse post mostrarei como elaborar mapas temáticos no Quantum Gis.

Mapas temáticos são úteis quando deseja-se apresentar geograficamente variáveis oriundas de algum banco de dados.

Para o exercício contido aqui é importante que o leitor tenha reproduzido os exercícios dos posts anteriores (Parte 1 e Parte 2), assim a compreensão será completa.

Elaborando mapas temáticos.

Para executar esse exercício faça o download da malha digital de columbus. No arquivo Dados Columbus.zip os principais itens são:

  • Columbus.shp
  • Dados.dbf

Lembrando que para trabalhar com mapas no formato digital é necessário pelo menos três arquivos: *.shp, *.shx e *.dbf. Todos com o mesmo nome, por exemplo, Columbus.shp, Columbus.shx e Columbus.dbf.

Além desses arquivos, pode ser interessante adicionar a tabela do mapa outras variáveis. No caso da malha Columbus.shp a tabela com os dados chama-se Dados.dbf.

O Quantum Gis aceita a importação de arquivos em diversos formatos, o mais comum é o formato *.dbf.

Isso não é uma restrição a sua análise, já que softwares como Excel, Access, Open Office, SPSS, SAS, R, etc. são capazes de converter suas bases nativas para o formato *.dbf.

Particularmente, o software que eu mais gosto para fazer esse tipo de conversão é o StatTransfer (o problema é que ele não é gratuito).

Realizando o JOIN entre as tabelas do mapa e base de dados.


Para realizar a união (join) entre os dados (Dados.dbf) e a malha (Columbus.shp) é necessário inicialmente que ambos os arquivos possuam uma variável chave essa variável será responsável pela determinação de quais observações da base de dados (Dados.dbf) estarão associadas aos polígonos da malha digital (Columbus.shp).

É importante que as variáveis tenham o mesmo formato, isso é, se uma é caractere a outra variável deverá ser caractere, se é numérica, ambas devem ser numéricas. Se uma tem 6 dígitos a outra também deverá ter seis dígitos.

Graficamente, podemos representar da seguinte forma:


Uma boa prática é utilizar variáveis chave que sejam numéricas. Assim evitamos problemas com acentuação, letras maiúsculas, minúsculas, etc..

Usualmente, as principais variáveis chave são:

  • Código do município.
  • Código do setor censitário.
  • CEP.

No caso do nosso exercício, a variável chave chama-se POLYID em ambos os arquivos Dados.dbf e Columbus.shp.

Adicionando a malha no ambiente QGis.

Como demonstrado nos posts anteriores, admita que a malha já esteja projetada e adicionada no ambiente QGis.

Graficamente, devemos ter algo como:


Em seguida devemos fazer a junção (join) entre os dados (Dados.dbf) e a malha (Columbus.shp) para isso arraste o arquivo Dados.dbf para o ambiente QGis. Essa base aparecerá no campo Layers como mostrado abaixo:


Em seguida, clique com o botão direito do mouse sobre o Layer columbus e escolha a opção Properties. Na tela que surge clique na aba Joins.


Clique no botão "soma" e assim surgirá o seguinte formulário:


A variável chave em ambos os campos é POLYID. Em seguida clique no botão OK:


Finalmente, clique no botão Apply e posteriormente no botão OK. Para saber se as variáveis foram adicionadas corretamente, clique com o botão direito do mouse sobre o Layer columbus e escolha a opção Open Attribute Table. Se o procedimento foi realizado corretamente, haverá novas variáveis na base de dados do Layer columbus. Essa malha com novas variáveis pode ser salva, evitando assim a repetição de procedimento no futuro.

Pintando o mapa.

Agora, podemos visualizar a distribuição da criminalidade em Columbus, para isso, faremos um mapa temático.

O primeiro passo é clicar com o botão direito do mouse sobre o Layer columbus e escolher a opção Properties. Na tela que surge escolha a aba
Style:


Escolha então a opção Graduated:


Na caixa Column escolha a variável que desejamos representar espacialmente (aqui será a variável CRIME), na caixa Mode há algumas opções, aqui escolheremos a opção Natural Breaks (Jenks) que minimiza a variância interna em cada uma das classes. O número de classes escolhidas aqui é 5 e pintaremos o mapa na escala de laranjas:


Clique no botão Apply e posteriormente no botão OK. O resultado é o seguinte:


Para exportamos o mapa final para um formato de imagem procedemos da seguinte forma: clique no botão New Print Compose:


Na tela que surge, clicamos no botão Add New Map e com o mouse definimos onde gostaríamos que o mapa estivesse na imagem:


Usando o mouse representamos onde o mapa deverá estar:


Para adicionar a legenda, clicamos no botão Add new legend:


Novamente usando o mouse posicionamos onde a legenda deverá estar. Por fim usando a janela Item properties podemos editar as opções da legenda:


Para salvar o mapa fazemos File → Export as PDF.... É claro que você pode salvar a imagem em outros formatos também.

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.

sexta-feira, 14 de setembro de 2012

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


Quantum GIS (freqüentemente abreviado QGIS) é um sistema multi-plataforma livre e de código aberto para a análise de Sistemas de Informação Geográfica (SIG), que fornece dados de visualização, edição além de capacidades para análise.

A utilização de sistemas SIG em administração possui diversas aplicações, a principal é em Geomarketing.

Geomarketing é a integração de sistemas geográficos em vários aspectos de marketing, incluindo vendas e distribuição.

A pesquisa em Geomarketing é usualmente realizada por meio do uso de parâmetros geográficos em metodologia de pesquisa de marketing, incluindo amostragem, coleta de dados, análise e apresentação.

A base central de Geomarketing é o mapa digital, representado usualmente por um arquivo shapefile. No Brasil, o principal fornecedor de malhas digitais é o IBGE. Para baixar as malhas vá ao endereço ftp://geoftp.ibge.gov.br/malhas_digitais.

Vale realçar que não basta baixar apenas o arquivo em formato *.shp, mas na mesma pasta é necessário a existência de pelo menos outros dois arquivos: *.shx e *.dbf

O geomarketing é uma disciplina dentro da análise de marketing que usa geolocalização (informação geográfica) no processo de planejamento e implementação de atividades de marketing.

Esse campo pode ser usado em qualquer aspecto do mix de marketing - o produto, preço, promoção, ou praça (segmentação geográfica).

Segmentos de mercado também se correlacionam com a localização, e isto pode ser útil na gestão de marketing. O geomarketing já é uma metodologia aplicada com sucesso no setor financeiro através da identificação de caixas eletrônicos geradores de tráfego e criação de hotspots baseados em parâmetros geográficos integrados com o comportamento do cliente.

Nesse post, mostrarei um exemplo de como utilizar o Quantum GIS para a uma análise simples do mercado de escolas em Brasília.

Utilizando o Quantum GIS.

Antes de fazer qualquer análise é necessário que se saiba qual a região deseja-se estudar. No exemplo desse post trabalharemos com o setor censitário do IBGE para Brasília em 2010.

Baixe a malha de Brasília em 2010 e extraia todos os arquivos em uma mesma pasta (53SEE250GC_SIR.shp, 53SEE250GC_SIR.shx, 53SEE250GC_SIR.dbf e 53SEE250GC_SIR.prj).

Vá ao menu e escolha Layer → Add Vector Layer. É posível também adicionar o Layer apenas arrastando o arquivo 53SEE250GC_SIR.shp para o ambiente Quantum GIS Desktop.


Após a escolha da opção Add Vector Layer a seguinte tela surge:


Há três opções disponíveis:

  1. File: Abre apenas um único shapefile.
  2. Directory: Abre todos os arquivos shapefile presentes no diretório indicado.
  3. Database: Abre os shapefile que estão em formato de base de dados.
  4. Protocol: Abre o layer por meio de protocolos.

Aqui trabalharemos com a opção File. Na opção Dataset o endereço do shapefile deve ser especificado e na opção Enconding a formatação dos caracteres do Layer deve ser especificado (caso não saiba qual formatação usar utilize a opção System).

Caso tenha dado certo a seguinte imagem surgirá:



Definindo a projeção da malha para mapas no Brasil.

Antes de mais nada, vamos adicionar ao mapa uma Scale Bar. Para isso vá em View → Decorations → Scale Bar.

Surgirá a seguinte tela:


Marque a opção Enable Scale Bar. A escala surgirá no canto superior direito do QGis Desktop. O próximo passo é definir a projeção da malha digital. No canto inferior direito da tela do QGis Desktop clique no ícone CRS Status:


A seguinte tela surgirá:


Marque a opção Enable "on the fly" CRS Transformation e escolha a opção Projected Coordinate Systems → Universe Transverse Mercartor (UTM)
→ SAD69/ UTM Zone 23S


As opções produzem a seguinte tela:


Clique em Apply e depois OK. A escala agora deve estar em quilômetros e agora podemos trabalhar com essa nova projeção.

É necessário salvar esse mapa projetado e então trabalhar com o mapa salvo. Para isso clique com o botão direito no Layer e escolha a opção Save as....


Defina o local para salvar o novo arquivo em Browse, aqui denominado BSB.shp e na caixa de texto CRS clique no botão Browse e escolha a opção Projected Coordinate Systems → Universe Transverse Mercartor (UTM)
→ SAD69/ UTM Zone 23S
. Depois clique em OK.


Remova o Layer antigo do ambiente QGis Desktop (basta clicar com o botão direito sobre o Layer e escolher a opção Remove) e adicione o novo Layer BSB.shp.

Selecionando polígonos em uma determinada distância.

Suponha que queiramos selecionar os polígonos que estão a uma distância (em raio) de até 10 quilômetros de uma determinada região. Ou seja, essa pode ser a influência do nosso produto e por isso desejamos estudar as regiões que estão a esse alcance geográfico.

Particularmente, suponha que queiramos obter todos os polígonos que estão a 10 quilômetros do polígono com número do setor censitário igual a CD_GEOCODI=530010805230054.

O primeiro passo é selecionar o polígono de interesse, para isso, clique com o botão direito no Layer BSB e escolha a opção Open Attribute Table:


A seguinte tala surgirá:


Para selecionarmos o polígono de interesse na caixa de texto Look for coloque o número de polígono desejado (530010805230054) e na Combo Box ao lado de in escolha a variável CD_GEOCODI em seguida clique na opção Search:


O polígono selecionado estará sublinhado de azul na tabela de dados, após esses passos feche a tabela no botão Close. O setor censitário escolhido estará realçado no mapa:


O próximo passo é salvar apenas o polígono desejado, para isso, clique com o botão direito no Layer BSB e escolha a opção Save selection as...:


Dê o nome de Selecionado.shp, escolha o local onde será salvo e confira se o CRS possui a mesma projeção do mapa, isso é: SAD69/ UTM Zone 23S.


Adicione o novo Shapefile no ambiente QGis Desktop:


Para selecionar os polígonos que estão a uma distância de 10 Km do setor censitário em verde, precisamos agora encontrar o centroide do polígono. Para isso, vá ao menu do QGis Desktop e escolha as opções: Vector → Geometry Tools → Polygon centroids , na caixa de texto Input polygon vector layer escolha o Layer: Selecionado.shp e defina o Layer que conterá o centro de massa do setor censitário desejado, no nosso caso denominamos de Centroid.shp:


Caso o procedimento tenha sido realizado de maneira correta, o centroide estará presente no mapa:


Para selecionar os polígonos que estão a uma distância de 10 Km (10000 metros) do setor censitário de interesse, vá ao menu e escolha as opções: Vector → Geoprocessing Tools → Buffer(s).

Escolha o Layer: Centroid.shp informe o raio desejado (10000 metros) e dê o nome do novo Layer com a circunferência de 10Km em relação ao setor censitário escolhido, aqui demos o nome de Raio10.shp:


O novo Layer com um raio de 10 Km surgirá:


Por fim, procuramos pela interseção entre os Layers: BSB e Raio10. Para obter essa interseção vá ao menu e escolha as opções: Vector → Data Management Tools → Join Attributes by location:


em seguida clique no botão OK. Os Layers: BSB e Raio10 são escolhidos e a malha final (Final.shp) com a interseção dos polígonos que possuem distância de seus centroids até o centroid do setor censitário de interesse de 10 Km é produzido:


Podemos retirar a seleção dos Layers que não nos interesse e dexar somente os Layers: BSB e Final habilitados: