Re: [R-br] extrair bordas de arquivos .shp

Boa tarde, Samuel e colegas! Segue uma sugestão de código... Testei com a delimitação dos bairros de Curitiba, do material do Prof. Paulo Justiniano Para testar será necessário baixar os 3 arquivos disponibilizados a seguir: https://dl.dropbox.com/u/117618178/ctba/bairros.shp' https://dl.dropbox.com/u/117618178/ctba/bairros.dbf' https://dl.dropbox.com/u/117618178/ctba/bairros.shx' Ou então baixar e descompactar: https://dl.dropbox.com/u/117618178/ctba/bairros.zip' ######################## #install.packages(c("geoR", maptools", "sp"), dep=T) require(geoR); require(maptools); require(sp) ctba <- readShapePoly("bairros.shp", IDvar="CODE") slotNames(ctba) npol <- as.integer(length(ctba@polygons)) ### numero de poligonos for (i in 1:npol){ nsubpol <- length(ctba@polygons[[i]]@Polygons) ### numero de poligonos internos for (ii in 1:nsubpol){ pol <- ctba@polygons[[i]]@Polygons[[ii]]@coords #assign(paste("P",i,ii,sep="-"),pol) assign(paste("P",formatC(i, flag=0, width=3),ii,sep="-"),pol) } } ######################## Neste caso aí serão originados 75 objetos correspondentes ao 75 polígonos. O código prevê sub-polígonos, pois é bem normal que eles existam. Não sei o que você pretende com esta operação, mas te confesso que fico pensando que ela não a melhor solução para "bordas". Sendo assim, acrescento outro trecho de código para unir todos os polígonos e feito isso, exportar uma borda única. ### une todos os poligonos e então exporta uma borda unica gpclibPermit() ## para permitir unionSpatialPolygons borda.spol <- (unionSpatialPolygons(ctba, ID=rep(1, length(ctba)), avoidGEOS=T)) borda.df <- data.frame(borda.spol@polygons[[1]]@Polygons[[1]]@coords) ######################## Estou usando R version 2.15.2 (2012-10-26) - Platform: x86_64-w64-mingw32/x64 (64-bit) Espero que ajude, -- ================================================ Éder Comunello Ph.D. Student in Agricultural Systems Engineering (USP/ESALQ) Piracicaba, SP, Brazil [22 42.7'S, 47 37.8'W] Researcher at Embrapa Western Region Agriculture Dourados, MS, Brazil [22 16.5'S, 54 49.0'W] ================================================ UTC-03:00

Minha contribuição é no sentido de tornar o CMR mais reproduzível. Para fazer o downloaddos arquivos pode-se usar a função download.file(). Assim, só com copia e cola do código baixamos os arquivis, sem por a mão no mouse, mais rápido. Deveria dar certo assim > download.file("https://dl.dropbox.com/u/117618178/ctba/bairros.shp", + destfile="/home/walmes/Downloads/bairros.shp") Erro em download.file("https://dl.dropbox.com/u/117618178/ctba/bairros.shp", : esquema de URL não suportado > > download.file("http://www.leg.ufpr.br/~walmes/data/pimentel_racoes.txt", + destfile="/home/walmes/Downloads/pimentel_racoes.txt") tentando a URL 'http://www.leg.ufpr.br/~walmes/data/pimentel_racoes.txt' Content type 'text/plain' length 217 bytes URL aberta ================================================== downloaded 217 bytes Mas a mensagem de erro mostra que estou errado. O Benilton comentou que o arquivo deveria estar na pasta 'public' do dropbox, tem relação com "https" também, tá no passado da lista isso aí. Não sei se é o caso. Mas a importação que fiz de dados no domínio LEG deu certo. Para ficar ainda mais reproduzível, você joga os aquivos num diretório temporário (windows e linux tem padrões diferentes para acesso à diretórios, isso elimina as diferenças). Além do mais, você pode fazer para vários arquivos ao mesmo tempo, como é o caso, e aí isso é um trabalho para família *apply(). Vejam # prefixo pre <- "http://www.leg.ufpr.br/~walmes/data/" # sufixo pos <- c("pimentel_racoes.txt", "pimentel_mandioca.txt") # concatena links <- paste(pre, pos, sep="") # cria diretório dest <- paste(tempdir(), "/", basename(links), sep=""); dest # faz o serviço mapply(download.file, url=links, destfile=dest) # importa lidos <- lapply(dest, read.table, sep="\t", header=TRUE) str(lidos) À disposição. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br skype: walmeszeviani twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================
participantes (2)
-
Eder Comunello
-
Walmes Zeviani