2017-10-05 8 views
2

comment puis-je obtenir la longueur de la plus longue ligne (côté) de chaque polygone? quel paquet serait le moins problématique? Je me demande s'il n'y a pas d'autre fonction qu'itérer point par point (un exemple factice ci-dessous)? En dehors de cela, je me demande s'il existe une méthode pour obtenir des repères et des angles de chaque segment par rapport aux voisins, mais comme certains experts sont trop sensibles pour ne poser qu'une seule question à la fois, je le laisserai à tout autre moment;r ligne la plus longue pour chaque trame spatiale polygonale?

r1 = cbind(c(180114, 180553, 181127, 180114), c(332349, 332057, 332342, 332349)) 
r2 = cbind(c(180042, 180545, 180553, 180042), c(332373, 332026, 331426, 332373)) 
r3 = cbind(c(179110, 179907, 180433, 179110), c(331086, 330620, 330494, 331086)) 
r4 = cbind(c(180304, 180403,179632,180304), c(332791, 333204, 333635, 332791)) 
sr1=Polygons(list(Polygon(r1)),"r1") 
sr2=Polygons(list(Polygon(r2)),"r2") 
sr3=Polygons(list(Polygon(r3)),"r3") 
sr4=Polygons(list(Polygon(r4)),"r4") 
sr=SpatialPolygons(list(sr1,sr2,sr3,sr4)) 
srdf=SpatialPolygonsDataFrame(sr, data.frame(cbind(1:4,5:2), 
              row.names=c("r1","r2","r3","r4"))) 

Répondre

0

en utilisant un package R appelé GeoAxe vous pouvez diviser objets géospatiaux en morceaux. Une fois que vous avez les segments individuellement, vous pouvez utiliser un autre paquet appelé SpatialLines pour obtenir la longueur des segments. De là, vous pouvez sélectionner le plus grand.

Un inconvénient possible de cette méthode pour vous est que les données doivent être un format spatial, par ex. .shp pour la saisie mais heureusement il y a aussi un paquet pour creating these.

+0

GeoAxe est pour la zone et non pour le périmètre. Ce dont j'ai besoin est fondamentalement un outil qui obtient 4 lignes d'un rectangle et vérifie lequel est le plus long, en fournissant sa longueur. Je peux le faire en coordonnant les itérations, mais je pensais que la tâche était si commune qu'il devait y avoir une bibliothèque pour cela – Slav