У меня есть файл формы, который я могу прочитать в R следующим образом:
library(rgdal)
shape <- readOGR(dsn = "~/path", layer = "a")
Меня интересует вся область, покрывающая все полигоны (черная кривая здесь). Как растворить все полигоны, даже разделенные на один полигон, вот так?
Я открыт для решений от R или Qgis
Используя пакет R и sf
, вы можете сделать выпуклую оболочку объединенного (при необходимости) шейп-файла. Поскольку вы не включили данные, я использовал данные nc
, включенные в пакет sf
, чтобы проиллюстрировать метод.
library(dplyr)
library(sf)
library(ggplot2)
# setting up sample data,
# you'll need to use st_read() to read your shapefile, not readOGR()
nc <- st_read(system.file("shape/nc.shp", package = "sf"))
#> Reading layer `nc' from data source
#> `.../sf/shape/nc.shp'
#> using driver `ESRI Shapefile'
#> Simple feature collection with 100 features and 14 fields
#> Geometry type: MULTIPOLYGON
#> Dimension: XY
#> Bounding box: xmin: -84.32385 ymin: 33.88199 xmax: -75.45698 ymax: 36.58965
#> Geodetic CRS: NAD27
nc <- nc[c(1:30, 85:81),] #Use some non-contiguous counties
# make a convex hull of the unioned geometries
nc_hull <- st_convex_hull(st_union(nc))
ggplot() +
geom_sf(data = nc, fill = NA, color = 'red') +
geom_sf(data = nc_hull, fill = NA, color = 'black')
Created on 2022-03-18 by the reprex package (v2.0.1)
Я не уверен, что вы пытаетесь сделать с линией ext= ...
.
Это не то, как вы бы это сделали. Возможно, прочитайте r-spatial.github.io/sf/reference/index.html или опубликуйте образцы данных.
поля - это просто столбцы, а объекты SF - такие же, как data.frames. выберите столбцы с помощью dplyr::select()
или подмножества в квадратных скобках nc[,3]
(для третьего столбца) или любого другого метода выбора столбцов df.
Попробуйте
st_make_valid()
избавиться от ошибок геометрии ошибок.st_crop()
работает для меня. В противном случае попробуйтеyour_sf[st_within(your_sf, hull_sf, sparse = F),]
Мало что еще я могу сделать без некоторых данных для воспроизведения ошибок.