Получить похожие области, используя geosphere::areaPolygon для SpatialPointDataFrame?

Я работал с областью файла OSM, полученного как следующие:

 library(osmar)

 id<-1818782
 dist <- get_osm(relation(id), full=T)
 dist_lines <- as_sp(dist, 'lines')
 dist_lines_closed <- gLineMerge(dist_lines)

 list_of_Lines <- slot(dist_lines_closed, "lines")
 dist_polygon <- SpatialPolygons(lapply(list_of_Lines, function(x) {
   Polygons(list(Polygon(slot(slot(x, "Lines")[[1]], "coords"))),
            ID=slot(x, "ID"))
 }),proj4string=CRS("+proj=longlat +datum=WGS84 +ellps=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"))

 area<-areaPolygon(dist_polygon)/1000000  ##In sq.kms

Теперь, если у меня есть SpatialPointDataFrame, который я накладываю, используя:

whatever <- spdf[!is.na(over(spdf, as(dist_polygon , "SpatialPolygons"))), ]
whatever <- as.data.frame(whatever)

Площадь, полученная при использовании areaPolygon(cbind(whatever$Lon,whatever$Lat)) будет отличаться-где Lon а также Lat Долгота и Широта в кадре данных. Я приложил эти данные здесь.

Что я могу получить те же значения? участок dist_polygon и сюжет (whatever$Lon,whatever$Lat) дает мне точно такую ​​же форму, но площадь под whatever совершенно другой. Я думаю, что это не учитывает область между координатами.

Есть ли способ считать точки контуром карты и рассчитать площадь.

Спасибо за помощь.

Изменить: После этого я нашел эту ссылку и R документ по методу выпуклой оболочки. У Math.StackExchange есть эта хорошая статья о том, как найти область неправильных форм. Любая помощь в реализации была бы отличной помощью.

0 ответов

Другие вопросы по тегам