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
Hide line numbers
1: 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. 2: 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//. 3: 4: = 1. Download de todas as malhas = 5: 6: 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//". 7: 8: {{code language="R"}} 9: library(RCurl) 10: 11: # local ftp das malhas 12: ftp.path <- "ftp://geoftp.ibge.gov.br/malhas_digitais/municipio_2013/" 13: 14: # all.files: é uma lista todos os subdiretórios do ftp acima 15: all.files <- getURL( ftp.path , dirlistonly = TRUE ) 16: all.files <- scan( text = all.files , what = "character", quiet = T ) 17: 18: # escolher o diretório local de destino para as malhas. No arquivo escolhido, é criado o diretório "originais" 19: dir.malha <- choose.dir() 20: dir.create(file.path(dir.malha,"originais")) 21: dest.files <- file.path(dir.malha,"originais") 22: 23: # cria arquivo temporário onde as malhas, zipadas, serão armazenadas 24: tf <- tempfile() 25: 26: ### baixando todos os arquivos no ftp 27: for ( curFile in all.files ){ 28: 29: ## execução somente nos diretórios 30: if(!grepl("Leia",curFile)){ 31: 32: ## endereço diretório ftp da UF 33: data.file <- paste0( ftp.path , curFile , "/") 34: 35: ## listando arquivos no diretorios 36: dir.files <- getURL(data.file, dirlistonly = TRUE) 37: dir.files <- scan( text = dir.files , what = "character", quiet = T ) 38: 39: ## baixando cada arquivo da UF 40: for(arquivo in dir.files){ 41: arquivo.web <- paste0(data.file,arquivo) 42: download.file( arquivo.web , tf , mode = "wb" ) 43: 44: ## cria diretório da UF 45: dir.create(file.path(dest.files,curFile)) 46: 47: ## descompactando arquivo 48: unzipped.files <- unzip( tf , exdir = file.path(dest.files,curFile)) 49: 50: Sys.sleep(3) 51: } 52: } else{ 53: ## agora sim, baixando o "leia-me" 54: data.file <- paste0(ftp.path,curFile) 55: download.file( data.file ,file.path(dest.files,curFile),mode="wb") 56: } 57: 58: } 59: {{/code}} 60: 61: = 2. Carregando e concatenando dois objetos //sp// = 62: 63: 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: 64: 65: 1. Carregar os //shapefiles// 66: 1. Concatenar (fazer o "//append//") os polígonos 67: 1. Salvar os polígonos unidos em um novo //shapefile// 68: 69: 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//. 70: 71: {{code language="R"}} 72: 73: library(sp) 74: library(maptools) 75: 76: # diretório de trabalho na pasta selecionada 77: setwd(dest.files) 78: 79: # carregando malha de microrregiões de são paulo 80: sp_poly <- readShapePoly("SP/35MIE250GC_SIR.shp",IDvar="CD_GEOCMI") 81: rj_poly <- readShapePoly("RJ/33MIE250GC_SIR.shp",IDvar="CD_GEOCMI") 82: 83: {{/code}} 84: 85: 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. 86: 87: {{code language="R"}} 88: # criando novo 'sp' juntando são paulo e rj 89: concat_poly <- spRbind(sp_poly,rj_poly) 90: 91: # mapas 92: plot(sp_poly) 93: plot(rj_poly) 94: plot(concat_poly) 95: {{/code}} 96: 97: 98: [[image:Criando informação georreferenciada no R@poligonos_sp.png||height="344" width="490"]] 99: Polígonos de microrregiões do estado de São Paulo 100: 101: [[image:Criando informação georreferenciada no R@poligonos_rj.png||height="339" width="484"]] 102: Polígonos de microrregiões do estado do Rio de Janeiro 103: 104: [[image:Criando informação georreferenciada no R@poligonos_concat.png||height="341" width="486"]] 105: Polígonos anteriores concatenados em um só 106: 107: = 3. Carregando todas as malhas e concatenando em um só objeto //sp// = 108: 109: 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 110: 111: {{code language="R"}} 112: 113: ## lista de UFs no diretório 114: lista_ufs <- list.dirs()[-1] 115: 116: # for na lista de ufs. cada uf da listanomeia um diretorio 117: for (uf in lista_ufs){ 118: 119: ## no diretório da uf, pegando os nomes dos shapes de microrregião (padrão xxMIxxxx.shp) 120: shape <- list.files(uf,pattern="MI.*\\.shp") 121: 122: ## lendo os arquivos .shp que têm o padrão acima 123: shp <- readShapePoly(file.path(uf,shape),IDvar="CD_GEOCMI") 124: 125: ## se existe 'malha_bra_prov', novo shape será concatenado nele. Caso contrário, 'malha_bra_prov' será o primeiro shape 126: if(exists("malha_bra_prov")){ 127: malha_bra_prov <- spRbind(malha_bra_prov,shp) 128: } else{ 129: malha_bra_prov <- shp 130: } 131: } 132: # renomeando shape resultante e excluindo o provisório 133: malha.bra.micro <- malha_bra_prov 134: rm(malha_bra_prov) 135: 136: # vendo o mapa do Brasil 137: plot(malha.bra.micro,col="red") 138: {{/code}} 139: 140: [[image:Criando informação georreferenciada no R@poligonos_brasil.png||height="368" width="524"]] 141: Polígonos de microrregiões do Brasil consolidados no R. 142: 143: = 4. Salvando objeto //sp// em novo //shapefile// = 144: 145: 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//. 146: 147: {{code language="R"}} 148: writePolyShape(malha.bra.micro,file.path(dir.malha,"malha_bra_mun13.shp")) 149: {{/code}} 150: 151: Todo o procedimento acima pode ser realizado para as demais divisões territoriais do Brasil disponibilizadas pelo IBGE (municípios, mesorregiões e UF). 152: 153: = 5 - Referências = 154: 155: 156: 1. Pacote [[//sp//>>url:https://cran.r-project.org/web/packages/sp/index.html]]; 157: 1. Pacote [[maptools>>url:https://cran.r-project.org/web/packages/maptools/index.html]]; 158: 1. [[Leia-me da malha 2013>>attach:Leia-me_Malha_2013_jul2015.pdf||rel="__blank"]]\\
Applications
Blog
Dashboard
User Index
Quick Links
Sandbox