在地理空间分析中将多面体变成单点
Turn a mutlipolygon into single point in a geospatial analysis
我正在尝试用几何对象将我的 tibble 中的多面体替换为点。我正在使用 sf
包进行绘图。由于几何中的许多数据点,很难给出可重现的样本。
这个:
进入这个:
但我不使用 base 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.…
生成如下图像:
将每个多边形变成可以为其赋值的点的最简单方法是什么?非常感谢帮助。
您可以通过 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))
我正在尝试用几何对象将我的 tibble 中的多面体替换为点。我正在使用 sf
包进行绘图。由于几何中的许多数据点,很难给出可重现的样本。
这个:
进入这个:
但我不使用 base 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.…
生成如下图像:
将每个多边形变成可以为其赋值的点的最简单方法是什么?非常感谢帮助。
您可以通过 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))