Vairāk

Problēma ar daudzstūra izlīdzināšanu R

Problēma ar daudzstūra izlīdzināšanu R


Ar R es vēlos izlīdzināt manu daudzstūri: inter2.csv

kods:

inter1 <- read.table ("c: /inter2.csv", header = TRUE) # pievienot kategoriju (nepieciešama vēlākai rastrēšanai / poligonizēšanai) inter1 <- cbind (inter1, cat = rep (1L, nrow (inter1)) , stringsAsFactors = FALSE) # konvertēt uz telpisko punktu koordinātām (inter1) <- ~ garš + lat # gridificēt jūsu punktu kopu, kas režģēts (inter1) <- TRUE # konvertēt uz rastru r <- rastrs (inter1) # pārveidot rastru daudzstūros <- rasterToPolygons (r, izšķīdināt = T) diagramma (sp) # pievienošanas transformācija, lai labi atšķirtu daudzstūru polu kopu izeja <- SpatialPolygons (Srl = lapply (1: garums (polys), funkcija (x)) {p <- polys [[x]] #pieliekamā beziera līkne daudzstūra malu izlīdzināšanai px <- slot (polys [[x]], "coords") [, 1] py <- slots (polys [[x]], "coords") [, 2] bz <- bezier (px, py) slots (p, "coords") <- as.matrica (cbind (bz $ x, bz $ y)) # izveidot objektu polygons poly <- daudzstūri (saraksts (p), ID = x) return (poly)}), proj4string = CRS ("+ init = epsg: 4326") ) # plot plot (sp, border = "gray", lwd = 2) # daudzstūra rezultātu diagramma (izvade, apmale = "sarkana", pievienošana = PATIESA) # izlīdzināti daudzstūri

Man šāds rezultāts:

Dažas dienas es meklēju problēmu bez panākumiem, vai kāds man varētu palīdzēt, lūdzu?


Esmu atjauninājis šeit norādīto sākotnējo kodu https://stackoverflow.com/questions/26087772/create-polygon-from-set-of-points-distributed/26089377#26089377

Bezier balstītas izlīdzināšanas vietā jūs varat izmantot šeit ieteicamo izlīdzināšanu / a / 24929/8104 ar funkcijuspline.poly(kā ieteica @aaron), kas dod precīzus rezultātus.


Skatīties video: Calculating the Perimeter of Polygons