[R-br] Mover os vértices de um polígono
Éder Comunello
comunello.eder em gmail.com
Terça Março 3 10:44:12 BRT 2015
Alexandre, bom dia!
Não sei se ainda tem interesse na questão, mas como vi que não obteve
respostas anteriormente, resolvi postar uma sugestão usando
rgeos::gBuffer().
Nesse caso específico não se preservou o número original de vértices.
### <code r>
sapply(c("sp", "rgdal", "rgeos", "maptools"), require, char=T)
#Contorno da área
t05 <- data.frame(x = c(371299.9, 371266.4, 371205.6, 371111.8,
371047.6, 371018.2, 371014, 371009.3, 370983.1, 370919.7, 370853.6,
370785.6, 370748.8, 370711.8, 370687.8, 370696.4, 370785.9, 370885.5,
371035.8, 371148.1, 371205.2, 371231.7, 371236.5, 371240.3, 371285.8,
371326.5, 371397.2, 371417.1, 371432.9, 371445, 371455.7, 371466.4,
371476.6, 371502.6, 371536, 371550, 371546.8, 371528.3, 371470,
371393.3, 371299.9, 371299.9), y = c(8246589, 8246560, 8246508,
8246428, 8246373, 8246349, 8246348, 8246352, 8246385, 8246465,
8246551, 8246638, 8246685, 8246732, 8246764, 8246771, 8246846,
8246932, 8247062, 8247160, 8247209, 8247230, 8247224, 8247221,
8247160, 8247107, 8247016, 8246991, 8246967, 8246939, 8246914,
8246892, 8246875, 8246846, 8246821, 8246809, 8246802, 8246785,
8246735, 8246669, 8246589, 8246589))
plot(t05, type="l", asp=1)
# Criando objetos "sp"
t05.sp <- t05
t05.spp <- SpatialPolygons(list(Polygons(list(Polygon(t05)), ID="area")))
plot(t05.spp, bor=3, lwd=2, axes=F)
# Buffering
plot(buffer <- gBuffer(t05.spp, width=-30, quadsegs=0,
capStyle="SQUARE", joinStyle="MITRE", mitreLimit=5),
add=T)
### Vértices da área reduzida
t05.2 <- as.data.frame(coordinates(buffer em polygons[[1]]@Polygons[[1]]));
t05.2
### </code>
Éder Comunello <c <comunello.eder em gmail.com>omunello.eder em gmail.com>
Dourados, MS - [22 16.5'S, 54 49'W]
Em 9 de fevereiro de 2015 11:06, ASANTOS <alexandresantosbr em yahoo.com.br>
escreveu:
> Caros Listeiros,
>
> Criei um polígono (c1) abaixo com os dados dos vértices da
> área em UTM e gostaria de saber se alguém conhece alguma função para mover
> todos os vértices 30m para dentro e reduzir a área do polígono?
>
> #Contorno da área ------------------------------
> --------------------------------
> x.coords1<-c(371299.9, 371266.4, 371205.6, 371111.8, 371047.6,
> 371018.2, 371014.0,
> 371009.3, 370983.1, 370919.7, 370853.6, 370785.6,
> 370748.8, 370711.8,
> 370687.8, 370696.4, 370785.9, 370885.5, 371035.8,
> 371148.1, 371205.2,
> 371231.7, 371236.5, 371240.3, 371285.8, 371326.5,
> 371397.2, 371417.1,
> 371432.9, 371445.0, 371455.7, 371466.4, 371476.6,
> 371502.6, 371536.0,
> 371550.0, 371546.8, 371528.3, 371470.0, 371393.3,
> 371299.9, 371299.9)
>
> y.coords1<-c(8246589, 8246560, 8246508, 8246428, 8246373,
> 8246349, 8246348,
> 8246352, 8246385, 8246465, 8246551, 8246638,
> 8246685, 8246732,
> 8246764, 8246771, 8246846, 8246932, 8247062,
> 8247160, 8247209,
> 8247230, 8247224, 8247221, 8247160, 8247107,
> 8247016, 8246991,
> 8246967, 8246939, 8246914, 8246892, 8246875,
> 8246846, 8246821,
> 8246809, 8246802, 8246785, 8246735, 8246669,
> 8246589, 8246589)
>
>
> # Cria um poligono
> t05<-unique(data.frame(x=rev(x.coords1),y=rev(y.coords1)))
> c1 = cbind (t05$x, t05$y)
> r1 = rbind (c1, c1[1, ]) # junta
> plot(c1)
> polygon(c1)
> #
>
> --
> ======================================================================
> Alexandre dos Santos
> Proteção Florestal
> IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso
> Campus Cáceres
> Caixa Postal 244
> Avenida dos Ramires, s/n
> Bairro: Distrito Industrial
> Cáceres - MT CEP: 78.200-000
> Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO)
> e-mails:alexandresantosbr em yahoo.com.br
> alexandre.santos em cas.ifmt.edu.br
> Lattes: http://lattes.cnpq.br/1360403201088680
> ======================================================================
>
>
> ---
> Este email foi escaneado pelo Avast antivírus.
> http://www.avast.com
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20150303/c336276a/attachment.html>
Mais detalhes sobre a lista de discussão R-br