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