从空间点数据创建边界多边形,以便在传单中绘图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从空间点数据创建边界多边形,以便在传单中绘图相关的知识,希望对你有一定的参考价值。
你好(在这里映射新手!)
我有一个很好的打猎,无法找到一个似乎是一个棘手问题的解决方案。
我有基本的XY(坐标)数据:
我想要做的是根据不重叠的坐标数据创建相邻多边形并具有一定的大小限制(因此它们不会永远延伸到海洋中)。
原谅我糟糕的MS Paint技能,但是期望的结果将是这样的:
我有一个标记陆地/海洋界面的多边形,因此多边形也不能重叠。
我使用Leaflet使这些地图互动,它不是用于任何统计分析,而是提供概述。
最终目标是使每个多边形由变量(例如温度)着色,并覆盖生态数据。
一些示例数据:
> data[1:10,]
Station Lat_dec Long_dec Surface_T
1 247 50.33445 -2.240283 15.19
2 245 50.58483 -2.535217 14.11
3 239 50.16883 -2.509250 15.41
4 225 50.32848 -2.765967 15.34
5 229 50.63900 -2.964800 14.09
6 227 50.33757 -3.303217 15.12
7 217 50.16657 -3.563817 15.13
8 207 49.66683 -3.556550 15.04
9 213 50.16512 -3.824667 14.97
10 219 49.83707 -3.815483 14.78
生成图1的代码是一个基本的传单脚本:
leaflet() %>%
addProviderTiles('Esri.OceanBasemap'
) %>%
addCircleMarkers(data = data,
lng = ~Long_dec,
lat = ~Lat_dec,
radius = 2
) %>%
addPolygons(data = Land,
weight = 1,
color = 'black')
它让我整天感到沮丧,大多数例子使用下载的多边形(例如,似乎是经典的美国国家,而不是制作它们)
任何帮助非常感谢! (或者我要求太多了!)
吉姆
答案
以下是开始使用的内容:
library(sf)
library(dplyr)
#create sf object with points
stations <- st_as_sf( df, coords = c( "Long_dec", "Lat_dec" ) )
#create voronoi/thiessen polygons
v <- stations %>%
st_union() %>%
st_voronoi() %>%
st_collection_extract()
library(leaflet)
leaflet() %>%
addTiles() %>%
addCircleMarkers( data = stations ) %>%
addPolygons( data = v )
以上是关于从空间点数据创建边界多边形,以便在传单中绘图的主要内容,如果未能解决你的问题,请参考以下文章