Я пытаюсь измерить длину береговой линии. Это будет использоваться в качестве метрики для положения вдоль береговой линии в анализе. Например, представьте, что у меня есть данные о расположении всех общественных пляжей в регионе, и я хочу описать, как они распределяются в пространстве, измеряя их расстояние от контрольной точки на побережье.
Я следовал этому чрезвычайно полезному уроку по расчету длины береговой линии с использованием линейок разной длины. Тем не менее, он точен только в том случае, если вы хотите измерить всю длину многоугольника, то есть интересующий вас географический объект - это остров.
Чтобы получить шейп-файл береговой линии (обратите внимание, что в вызове ne_countries
я специально использую грубую шкалу, чтобы сделать береговую линию более гладкой, и сохраняю только первую возвращенную фигуру - имя "scalerank" не важно):
library(raster)
library(sf)
library(rnaturalearth)
basemap <- rnaturalearth::ne_countries(scale = 110, country = "united states of america", returnclass = "sf")[1]
bbox <- extent(-82, -65, 27, 35)
cropmap <- st_crop(basemap, bbox)
plot(cropmap)
Возвращает форму, показывающую побережье Южной Атлантики во Флориде. Однако, если я измерим длину этой фигуры, она будет включать все стороны многоугольника, а не только береговую линию. Как изолировать береговую линию (см. Ниже карту того, какая часть многоугольника на самом деле является прибрежной) и просто измерить ее длину в R?
ggplot() +
geom_sf(data=basemap) +
geom_sf(data=cropmap, color="blue", fill="blue")