繁体   English   中英

将经纬度数据帧转换为 R 中的多个空间多边形

[英]Convert lat and long dataframe to multiple spatial polygons in R

我有两个问题要解决,第一个问题是主要问题。 希望我已经很好地解释了第二个。

1)我最初的问题是尝试从小标题创建空间多边形数据框。 例如,我有一个来自urbnmapr库的概述美国各州的urbnmapr ,我希望能够绘制所有 50 个州的空间多边形。 (注意:我已经在 ggplot 中根据这些数据制作了一张地图,但我特别希望空间多边形在传单中绘制和动画):

> states <- urbnmapr::states
> states

# A tibble: 83,933 x 10
    long   lat order hole  piece group state_fips state_abbv state_name fips 
   <dbl> <dbl> <int> <lgl> <fct> <fct> <chr>      <chr>      <chr>      <chr>
 1 -88.5  31.9     1 FALSE 1     01.1  01         AL         Alabama    01   
 2 -88.5  31.9     2 FALSE 1     01.1  01         AL         Alabama    01   
 3 -88.5  31.9     3 FALSE 1     01.1  01         AL         Alabama    01  
...

2)一旦我这样做了,我会想通过状态名称将额外数据从一个单独的小标题连接到空间多边形。 如果我每年的数据不同,那么最好的方法是什么? 即对于 50 个州,我有三年的数据,所以我会为这些年创建 150 个不同的多边形,还是有 50 个州多边形,但每个州的所有信息都能够为不同的州制作 3 个不同的图年?

我可以向您提出以下建议(未选中,因为我的 R 版本无法访问urbnmapr包)。

问题一

如果您特别想要多边形,我认为最好的方法是将数据框连接到来自 shapefile 的对象。

如果你还想自己做,你需要做两件事:

  1. 将您的tibble转换为具有点几何形状的空间对象
  2. 按州聚合点

sf包可以两者兼而有之。 对于第一步(最简单的一步),使用sf_as_sf函数。

library(sf)
states
states_spat <- states %>% st_as_sf(., coords = c("lon","lat"))

第二步,您需要聚合几何图形。 我可以为您推荐一些可以为您提供MULTIPOINT几何图形的东西,而不是多边形。 要转换为多边形,您可以找到此线程来帮助

states_spat <- states_spat %>% group_by(state_name) %>% 
  dplyr::summarise(x = n())

问题二

这是基于数据和空间对象(例如状态代码)之间的公共属性的标准连接。 merge*_join从功能dplyr与工作sf的数据,因为他们会做tibbles 那里有元素

顺便说一句,我认为这样做比从一系列点创建自己的多边形更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM