簡體   English   中英

如何為 R 中的點坐標構建 Voronoi 多邊形?

[英]How to build Voronoi Polygons for point coordinates in R?

對於阿爾卑斯山的觀測站,我有各種積分(2000+)。 我想用它們來代表最近的地理區域,即不靠近另一個觀測站。 我做了一些研究,並認為使用 Varanoi 多邊形可能是最好的方法。

在嘗試在 R 中構建這些之后,多邊形 plot 與我在 R 中的圖形不太匹配。

我附上了我正在試驗的樣本數據點,以及兩個顯示不同點圖形的圖像。

我需要做些什么來確保點對齊?

要點:

Longitude:
15.976667 12.846389 14.457222 13.795556  9.849167 16.055278 13.950833 15.666111  9.654722 15.596389 13.226667 15.106667 13.760000 12.226111  9.612222 17.025278  9.877500 15.368056 13.423056 12.571111 16.842222 13.711667 14.003056 12.308056 13.536389

Latitude:
48.40167 48.14889 47.56778 46.72750 47.45833 48.04472 47.82389 47.49472 47.35917 48.64917 48.25000 48.87139 47.87444 47.42806 47.20833 47.77556 47.40389 47.87583 47.53750 46.77694 47.74250 46.55000 48.37611 47.38333 47.91833

圖片:Leaflet 中 25 個采樣點的 Map: 在此處輸入圖像描述

沃羅諾伊 plot: 在此處輸入圖像描述

顯然這兩個不是相同的圖像,所以我一定做錯了什么。 這是我用來生成 Voronoi plot 和 leaflet map 的代碼。

meta25%>% 
  st_as_sf(coords = c("Longitude", "Latitude"),
           crs = sp::CRS("+proj=longlat +datum=WGS84")) %>% 
  mapview()

m1 = matrix(meta25$Longitude,meta25$Latitude,ncol=2,nrow=25) %>% st_multipoint()
voronoi_grid <- st_voronoi(m1)
plot(voronoi_grid, col = NA)
plot(m1, add = TRUE, col = "blue", pch = 16)

我不確定問題是什么,但矩陣不是必需的。 堅持sf對象,你應該沒問題。


library(tidyverse)
library(sf)


# create pts from lat & lon data
pts <- tibble(latitude = y, longitude = x) %>%
  st_as_sf(coords = c('latitude', 'longitude')) %>%
  st_set_crs(4326)

# voronoi of pts
vor <- st_voronoi(st_combine(pts))

head(vor)
#> Geometry set for 1 feature 
#> Geometry type: GEOMETRYCOLLECTION
#> Dimension:     XY
#> Bounding box:  xmin: 2.199166 ymin: 39.13694 xmax: 24.43833 ymax: 56.28445
#> Geodetic CRS:  WGS 84
#> GEOMETRYCOLLECTION (POLYGON ((2.199166 49.37841...

# st_voronoi returns a GEOMETRYCOLLECTION,
#  some plotting methods can't use a GEOMETRYCOLLECTION.
#  this returns polygons instead
vor_poly <- st_collection_extract(vor)

head(vor_poly)
#> Geometry set for 6 features 
#> Geometry type: POLYGON
#> Dimension:     XY
#> Bounding box:  xmin: 2.199166 ymin: 39.13694 xmax: 18.32787 ymax: 56.28445
#> Geodetic CRS:  WGS 84
#> First 5 geometries:
#> POLYGON ((2.199166 49.37841, 2.199166 56.28445,...
#> POLYGON ((9.946349 39.13694, 2.199166 39.13694,...
#> POLYGON ((18.32787 39.13694, 11.64381 39.13694,...
#> POLYGON ((9.794868 47.23828, 9.766296 47.38061,...
#> POLYGON ((5.225657 56.28445, 9.393793 56.28445,...

plot(pts, col = 'blue', pch = 16)
plot(vor_poly, add = T, fill = NA)

代表 package (v0.3.0) 於 2021 年 4 月 5 日創建

感謝大家的幫助,不知道它是否到達了我要找的地方。 我已經從這里調整了答案: 從空間點數據創建邊界多邊形以在 leaflet 中繪圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM