Toggle navigation
Go
Log-in
Register
Home
Go to Wiki
Wiki Index
Document Index
User Index
Main
Go to Space
Document Index
Baixando e Consolidando Malhas do IBGE 2013
wp.Criando informação georreferenciada no R
zz: Baixando e Consolidando Malhas do IBGE 2013
Wiki source code of
zz: Baixando e Consolidando Malhas do IBGE 2013
More actions
Content
Comments
Attachments
History
Information
Show line numbers
O IBGE divulga ao público as [[malhas digitais da divisão territorial brasileira>>url:ftp://geoftp.ibge.gov.br/malhas_digitais/municipio_2013/||rel="__blank"]]. Nessa página serão ilustrados alguns comandos em R que executam o //download// automático dos //shapefiles// (separados por UF) e que consolidam as malhas (ou, na linguagem do ArcGIS, fazem o "//append//" das malhas) em um novo //shapefile//. As malhas mais recentes consideram a divisão política de 2013. Os dados disponibilizados pelo IBGE contém as malhas de município, microrregião, mesorregião e macrorregião. Nessa página o foco será dado nas malhas de microrregião. Os comandos em R serão exibidos ao longo do texto que segue. Para reproduzi-los, basta copiar os códigos e colar em um //script// R para então executá-los. As principais funcionalidades usadas aqui estão disponíveis nos pacotes [[//sp//>>url:https://cran.r-project.org/web/packages/sp/index.html]] e [[maptools;>>url:https://cran.r-project.org/web/packages/maptools/index.html]]. O resultado das operações abaixo é a malha nacional de microrregiões que será armazenada no novo //shapefile//. = 1. Download de todas as malhas = Nos comandos abaixo há um //looping// que irá acessar cada diretório do [[ftp de malhas linkado acima>>url:ftp://geoftp.ibge.gov.br/malhas_digitais/municipio_2013/||rel="__blank"]], e fazer o //download// automático dos arquivos zipados em seu conteúdo. Logo após, os arquivo são descompactadas e armazenadas no diretório especificado em 'dir.malhas', que é um diretório escolhido por você em uma janela que o R irá abrir. Antes de executar, é necessário instalar o pacote "//RCurl//". {{code language="R"}} library(RCurl) # local ftp das malhas ftp.path <- "ftp://geoftp.ibge.gov.br/malhas_digitais/municipio_2013/" # all.files: é uma lista todos os subdiretórios do ftp acima all.files <- getURL( ftp.path , dirlistonly = TRUE ) all.files <- scan( text = all.files , what = "character", quiet = T ) # escolher o diretório local de destino para as malhas. No arquivo escolhido, é criado o diretório "originais" dir.malha <- choose.dir() dir.create(file.path(dir.malha,"originais")) dest.files <- file.path(dir.malha,"originais") # cria arquivo temporário onde as malhas, zipadas, serão armazenadas tf <- tempfile() ### baixando todos os arquivos no ftp for ( curFile in all.files ){ ## execução somente nos diretórios if(!grepl("Leia",curFile)){ ## endereço diretório ftp da UF data.file <- paste0( ftp.path , curFile , "/") ## listando arquivos no diretorios dir.files <- getURL(data.file, dirlistonly = TRUE) dir.files <- scan( text = dir.files , what = "character", quiet = T ) ## baixando cada arquivo da UF for(arquivo in dir.files){ arquivo.web <- paste0(data.file,arquivo) download.file( arquivo.web , tf , mode = "wb" ) ## cria diretório da UF dir.create(file.path(dest.files,curFile)) ## descompactando arquivo unzipped.files <- unzip( tf , exdir = file.path(dest.files,curFile)) Sys.sleep(3) } } else{ ## agora sim, baixando o "leia-me" data.file <- paste0(ftp.path,curFile) download.file( data.file ,file.path(dest.files,curFile),mode="wb") } } {{/code}} = 2. Carregando e concatenando dois objetos //sp// = O objetivo agora é criar um só arquivo com a malha de microrregiões do Brasil, que está separada por UFs. Para isso será necessário: 1. Carregar os //shapefiles// 1. Concatenar (fazer o "//append//") os polígonos 1. Salvar os polígonos unidos em um novo //shapefile// Para carregar o //shapefile// de polígonos, o pacote //maptools// diponibiliza a função //readShapePoly//, que lê o arquivo //.shp// e armazena em um objeto de classe "//sp//". É necessário informar o nome da coluna identificadora dos polígonos no argumento "IDvar". Segundo a [[documentação das malhas de 2013>>attach:Leia-me_Malha_2013_jul2015.pdf||rel="__blank"]], para as microrregiões essa coluna é "CD_GEOCMI". Os comandos abaixo carregam os //shapes// de microrregião do estado de São Paulo (código 35) e Rio de Janeiro (código 33). Antes de executar, é necessário instalar os pacotes //sp// e //maptools//. {{code language="R"}} library(sp) library(maptools) # diretório de trabalho na pasta selecionada setwd(dest.files) # carregando malha de microrregiões de são paulo sp_poly <- readShapePoly("SP/35MIE250GC_SIR.shp",IDvar="CD_GEOCMI") rj_poly <- readShapePoly("RJ/33MIE250GC_SIR.shp",IDvar="CD_GEOCMI") {{/code}} Existindo dois objetos //sp// carregados no R, a função //spRbind// concatena ambos formando um novo objeto //sp//. Os comandos abaixo concatenam os //shapes// carregados anteriormente. Logo após, três mapas são //plotados// no R: i) Polígonos de São Paulo, ii) Polígonos do Rio de Janeiro e iii) Polígonos concatenados das duas regiões. {{code language="R"}} # criando novo 'sp' juntando são paulo e rj concat_poly <- spRbind(sp_poly,rj_poly) # mapas plot(sp_poly) plot(rj_poly) plot(concat_poly) {{/code}} [[image:Criando informação georreferenciada no R@poligonos_sp.png||height="344" width="490"]] Polígonos de microrregiões do estado de São Paulo [[image:Criando informação georreferenciada no R@poligonos_rj.png||height="339" width="484"]] Polígonos de microrregiões do estado do Rio de Janeiro [[image:Criando informação georreferenciada no R@poligonos_concat.png||height="341" width="486"]] Polígonos anteriores concatenados em um só = 3. Carregando todas as malhas e concatenando em um só objeto //sp// = Conhecendo a dinâmica do processo, basta executar um comando iterativo (um //for//) para carregar os //shapefiles// de cada subdiretório e concatenar em um objeto //sp// final, seguindo os comandos abaixo. Ao final do //for//, o mapa abaixo é desenhado contendo os polígonos concatenados {{code language="R"}} ## lista de UFs no diretório lista_ufs <- list.dirs()[-1] # for na lista de ufs. cada uf da listanomeia um diretorio for (uf in lista_ufs){ ## no diretório da uf, pegando os nomes dos shapes de microrregião (padrão xxMIxxxx.shp) shape <- list.files(uf,pattern="MI.*\\.shp") ## lendo os arquivos .shp que têm o padrão acima shp <- readShapePoly(file.path(uf,shape),IDvar="CD_GEOCMI") ## se existe 'malha_bra_prov', novo shape será concatenado nele. Caso contrário, 'malha_bra_prov' será o primeiro shape if(exists("malha_bra_prov")){ malha_bra_prov <- spRbind(malha_bra_prov,shp) } else{ malha_bra_prov <- shp } } # renomeando shape resultante e excluindo o provisório malha.bra.micro <- malha_bra_prov rm(malha_bra_prov) # vendo o mapa do Brasil plot(malha.bra.micro,col="red") {{/code}} [[image:Criando informação georreferenciada no R@poligonos_brasil.png||height="368" width="524"]] Polígonos de microrregiões do Brasil consolidados no R. = 4. Salvando objeto //sp// em novo //shapefile// = Finalmente, para salvar o objeto //sp// e criar um novo //shapefile//, basta executar o comando //writeShapePoly()// do pacote //maptools//. O comando salva além da extenção //.shp// os arquivos //.shx// e //.dbf//. {{code language="R"}} writePolyShape(malha.bra.micro,file.path(dir.malha,"malha_bra_mun13.shp")) {{/code}} Todo o procedimento acima pode ser realizado para as demais divisões territoriais do Brasil disponibilizadas pelo IBGE (municípios, mesorregiões e UF). = 5 - Referências = 1. Pacote [[//sp//>>url:https://cran.r-project.org/web/packages/sp/index.html]]; 1. Pacote [[maptools>>url:https://cran.r-project.org/web/packages/maptools/index.html]]; 1. [[Leia-me da malha 2013>>attach:Leia-me_Malha_2013_jul2015.pdf||rel="__blank"]]\\
Applications
Blog
Dashboard
User Index
Quick Links
Sandbox