Suite

Problème avec le lissage des polygones dans R

Problème avec le lissage des polygones dans R


Avec R je cherche à lisser mon polygone : inter2.csv

code:

inter1 <- read.table("c:/inter2.csv", header=TRUE) # ajoute une catégorie (nécessaire pour la rastérisation/polygonisation ultérieure) inter1 <- cbind(inter1, cat = rep(1L, nrow(inter1)) , stringsAsFactors = FALSE) # convertir en coordonnées de points spatiaux(inter1) <- ~long + lat # griller votre ensemble de points gridded(inter1) <- TRUE # convertir en raster r <- raster(inter1) # convertir raster en polygones sp <- rasterToPolygons(r, dissolve = T) plot(sp) # transformation d'addition pour bien distinguer l'ensemble des polygones polys <- slot([email protected][[1]], "Polygons") require(Hmisc) # pour la courbe de Bézier output <- SpatialPolygons( Srl = lapply(1:length(polys), function(x){ p <- polys[[x]] #applying bezier curve pour lisser les bords des polygones px <- slot(polys[[x]], "coords")[,1] py <- slot(polys[[x]], "coords")[,2] bz <- bezier(px, py) slot(p, "coords") <- as.matrix (cbind(bz$x,bz$y)) # create Polygons object poly <- Polygons(list(p), ID = x) return(poly) }), proj4string = CRS("+init=epsg:4326") ) # plot plot(sp, border = "gris", lwd = 2) # polygonize result plot(output, border = "red", add = TRUE) # polygones lissés

J'obtiens ce résultat :

Cela fait quelques jours que je cherche le problème sans succès, quelqu'un peut-il m'aider s'il vous plaît ?


J'ai mis à jour le code d'origine donné ici https://stackoverflow.com/questions/26087772/create-polygon-from-set-of-points-distributed/26089377#26089377

Au lieu du lissage basé sur Bézier, vous pouvez utiliser le lissage suggéré ici /a/24929/8104 avec la fonctionspline.poly(comme suggéré par @aaron) qui donne des résultats précis.


Voir la vidéo: Kipsilevyseinä maalauskuntoon