rm(list=ls())
graphics.off()
windows(record=TRUE)

library(maptools)
## Loading required package: sp
## Checking rgeos availability: TRUE
library(spdep)
## Loading required package: Matrix
library(ggmap)
## Loading required package: ggplot2
precisa.baixar = !('brasilmun2010_new.shp' %in% dir())

if (precisa.baixar) {
  download.file('http://ufrn.schmert.net/dados/brasilmun2010_new.shp',
                 destfile='brasilmun2010_new.shp',mode='wb')
  download.file('http://ufrn.schmert.net/dados/brasilmun2010_new.shx',
                destfile='brasilmun2010_new.shx',mode='wb')
  download.file('http://ufrn.schmert.net/dados/brasilmun2010_new.dbf',
                destfile='brasilmun2010_new.dbf',mode='wb')
}

mapa = readShapePoly('brasilmun2010_new')

# indices para os polígonos corr. ao RN
RN = which( mapa@data$NAME2_ == 'RIO GRANDE DO NORTE')

##### 
# baixando um qmap (quick map) do RN, de Google Maps
base = qmap("Rio Grande do Norte", zoom=7) 
## Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=Rio+Grande+do+Norte&zoom=7&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false
## Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=Rio+Grande+do+Norte&sensor=false
# mostrar como um gráfico
base

# convertendo os polígonos para RN para um data.frame, usando fortify

RGdN = fortify(mapa[RN,])
## Regions defined for each Polygons
head(RGdN)
##        long       lat order  hole piece  group   id
## 1 -36.67565 -6.270016     1 FALSE     1 1072.1 1072
## 2 -36.67254 -6.275317     2 FALSE     1 1072.1 1072
## 3 -36.66257 -6.278566     3 FALSE     1 1072.1 1072
## 4 -36.65478 -6.272263     4 FALSE     1 1072.1 1072
## 5 -36.63065 -6.268561     5 FALSE     1 1072.1 1072
## 6 -36.62603 -6.285928     6 FALSE     1 1072.1 1072
# mostrar o mapa basico, com mais uma camada (municipios do RN)
base + geom_polygon(data=RGdN, aes(x=long,y=lat,group=id), fill='darkgreen',
                    col='white',alpha=.30)

# repete o processo, mas com maior zoom, só com Natal, 
# e com outro tipo de mapa
base = qmap("Natal, Rio Grande do Norte", zoom=11, source='osm') 
## Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=Natal,+Rio+Grande+do+Norte&zoom=11&size=640x640&maptype=terrain&sensor=false
## Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=Natal,+Rio+Grande+do+Norte&sensor=false
base

Natal = which( mapa@data$NAME1_ == "Natal")

poligono.Natal = fortify(mapa[Natal,])
## Regions defined for each Polygons
# mostrar o mapa basico, com mais uma camada (municipios do RN)
base + geom_polygon(data=poligono.Natal, aes(x=long,y=lat,group=id), fill='orange',
                    alpha=.20, col='red',lwd=2)