У меня есть датафрейм строк, каждая строка с координатами ax / y начала и конца. Эти строки описывают сетку / fis hnet, как вы можете видеть в минимальном примере ниже. К сожалению, сетка не идеально ровная и время от времени немного смещается.
library(sf)
#> Linking to GEOS 3.6.1, GDAL 2.2.3, PROJ 4.9.3
library(purrr)
library(ggplot2)
df <- data.frame(
x_start = c(2:9,rep(1,8)),
x_end = c(2:9,rep(10,8)),
y_start = c(rep(1,8),2:9),
y_end = c(rep(10,8),2:9)
)
head(df)
#> x_start x_end y_start y_end
#> 1 2 2 1 10
#> 2 3 3 1 10
#> 3 4 4 1 10
#> 4 5 5 1 10
#> 5 6 6 1 10
#> 6 7 7 1 10
lines_sf <- pmap(df,function(x_start,x_end,y_start,y_end){
st_linestring(
matrix(
c(
x_start,
y_start,
x_end,
y_end),
ncol = 2,byrow = TRUE)
)
}) %>%
st_as_sfc()
lines_sf
#> Geometry set for 16 features
#> geometry type: LINESTRING
#> dimension: XY
#> bbox: xmin: 1 ymin: 1 xmax: 10 ymax: 10
#> CRS: NA
#> First 5 geometries:
#> LINESTRING (2 1, 2 10)
#> LINESTRING (3 1, 3 10)
#> LINESTRING (4 1, 4 10)
#> LINESTRING (5 1, 5 10)
#> LINESTRING (6 1, 6 10)
plot(lines_sf)
Я хотел бы создать полигоны из этих линий, где каждый квадрат (из наименьшей единицы) является отдельным многоугольником (без перекрытий). Я проиллюстрировал это на примере, сконструированном вручную: (v0.3.0)
Инструмент ESRI "Feature to Polygon" позволяет выполнять этот тип операции, как показано на рисунке ниже: