Создание граничных полигонов из данных пространственной точки для построения графика в листовке - PullRequest
0 голосов
/ 07 марта 2019

Здравствуйте (новичок в этом деле!)

Я хорошо поохотился и не могу найти решение проблемы, которая кажется сложной.

У меня есть базовые данные XY (координаты):

location / land polygons (shapefile)

Я хочу создать соседние полигоны на основе данных координаткоторые не перекрываются и имеют определенный предел размера (поэтому они не распространяются вечно в океан).

Простите мои плохие навыки MS Paint, но желаемый результат будет примерно таким:

enter image description here

У меня есть многоугольник, который отмечаетинтерфейс суша / море, поэтому полигоны тоже не могут перекрывать это.

Я использую 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')

Он меня расстраивал весь день, большинствов примерах используются загруженные полигоны (например, то, что кажется классическим штатом США, а не делающим их)

Любая помощь с благодарностью!(или я слишком много спрашиваю!)

Джим

1 Ответ

3 голосов
/ 07 марта 2019

Вот с чего начать:

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 ) 

enter image description here

...