[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