在地理空间分析中将多重多边形转换为单点

时间:2018-03-29 08:34:43

标签: r ggplot2 gis geospatial sf

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

此: From the sf vignettes, Miscellaneous

进入: From the sf vignettes, Miscellaneous

但我不使用基础R但是ggplot2我的对象是tibble,其中geometry变量。这是我的代码:

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.…

产生以下图像:

enter image description here

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

1 个答案:

答案 0 :(得分:3)

您可以使用sf::st_centroid()找到每个多边形的中心。这将返回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))