在地理空间分析中将多面体变成单点

Turn a mutlipolygon into single point in a geospatial analysis

我正在尝试用几何对象将我的 tibble 中的多面体替换为点。我正在使用 sf 包进行绘图。由于几何中的许多数据点,很难给出可重现的样本。

这个:

进入这个:

但我不使用 base R,而是 ggplot2,我的对象是 tibblegeometry 变量。这是我的代码:

library(tidyverse)
library(sf)

utrecht_sf %>%
  ggplot() +
  geom_sf(aes(fill = partij),
          size = 0.4,
          colour = "white") +
  coord_sf(datum = NA) +
  scale_fill_colorblind() +
  theme_minimal()

utrecht_sf

# A tibble: 43 x 12
   stad    postcode partij     stemmen totaal_stemmen perct_grootste_van_totaal OBJECTID Aantal_mul Aantal_adr Shape_Leng Shape_Area                      geometry
   <chr>   <chr>    <chr>        <int>          <int>                     <int>    <dbl>      <dbl>      <dbl>      <dbl>      <dbl>             <sf_geometry [m]>
 1 Utrecht 3451     VVD           1612           6598                        24     1074       1.00       4548      24960    7787919 MULTIPOLYGON (((127829.1 45.…
 2 Utrecht 3452     VVD           1038           4013                        26     1075       1.00       5239       8278    1938913 MULTIPOLYGON (((128499.4 45.…
 3 Utrecht 3453     VVD            784           3135                        25     1076       1.00       3422       8089    1617391 MULTIPOLYGON (((128803.5 45.…
 4 Utrecht 3454     VVD            985           4609                        21     1077       1.00       5591      31103    8025353 MULTIPOLYGON (((130358.6 45.…
 5 Utrecht 3455     VVD             60            260                        23     1078       1.00        202      16097    6880581 MULTIPOLYGON (((128011.3 46.…
 6 Utrecht 3511     GROENLINKS    2948           9840                        30     1087       1.00       6951       6808    1222881 MULTIPOLYGON (((136430.8 45.…
 7 Utrecht 3512     GROENLINKS    1905           6528                        29     1088       1.00       5454       5817     852599 MULTIPOLYGON (((137189.5 45.…
 8 Utrecht 3513     GROENLINKS     746           2717                        27     1089       1.00       3550       3294     517187 MULTIPOLYGON (((136097 4571.…
 9 Utrecht 3514     GROENLINKS     882           2948                        30     1090       1.00       3659       4900     590764 MULTIPOLYGON (((137373.3 45.…
10 Utrecht 3515     GROENLINKS    1240           4257                        29     1091       1.00       2908       3014     473581 MULTIPOLYGON (((136393.6 45.…

生成如下图像:

将每个多边形变成可以为其赋值的点的最简单方法是什么?非常感谢帮助。

您可以通过 sf::st_centroid() 找到每个多边形的中心。这将 return POINTS,您可以根据需要绘制它。

这是一个可重现的例子

library(sf)
# devtools::install_github("tidyverse/ggplot2")
library(ggplot2)

nc <- st_read(system.file("shape/nc.shp", package="sf"))

nc_centers <- sf::st_centroid(nc)

ggplot(data = nc_centers) +
  geom_sf(aes(fill = AREA))