向地理编码数据添加状态线

Posted

技术标签:

【中文标题】向地理编码数据添加状态线【英文标题】:Adding state lines to geocoded data 【发布时间】:2020-09-13 14:49:47 【问题描述】:

我正在使用函数mapview 绘制地理编码数据。我的代码示例如下:

locations_sf <- st_as_sf(locations, coords = c("LONGITUDE", "LATITUDE"), crs = 4326)
mapview(locations_sf,cex=locations$FR,color="black",legend = FALSE,label=locations$NAME)

到目前为止,这工作正常。但是,我的数据来自美国,我想在地图上添加州线。到目前为止,我还没有在mapview 中找到如何做到这一点。有什么建议吗?

【问题讨论】:

【参考方案1】:

好问题。可能在开始之前要考虑的最重要的事情是您从哪里获取地理数据以及您想要使用什么类型的地理数据。

有许多可用的数据集源,并且大多数 R 包都有一些映射 goedata。地理数据的重要来源来自该网站:

https://gadm.org/data.html

这个网站提供了大量的地理数据。要获取包含州边界的美国数据,请从国家/地区下拉列表中选择美国,然后选择 USA_1 作为您想要的详细程度。 USA_0 不显示各个州边界,USA_1 显示州边界,USA_2 显示县和州边界。

您需要确定您想要的两种常用地理数据类型中的哪一种:sp 或 sf。我为这个示例选择了 sf 数据类型,因为 sf 数据易于使用。您的示例中显示的数据已从 sp 转换为 sf 格式。

文件下载、读取并分配给变量后,夏威夷州和阿拉斯加州将从数据中删除。这使得只有大陆 48 个州的地图更易于使用。

之后,使用 mapview() 绘制数据,并打开一个显示地图的浏览器选项卡。此处未使用任何 mapview() 格式化选项。代码如下:

df_1 <- readRDS("C:/python/datasets/GADM_Maps/US/gadm36_USA_1_sf.rds")
head(df_1, 3)
df49 <- df_1[df_1$NAME_1 != "Alaska", ]                       # remove AK from data
df48 <- df49[df49$NAME_1 != "Hawaii", ]                       # remove HI from data

mapview(df48$geom)

mapview浏览器页面可以在这个link:查看

【讨论】:

感谢非常详细的回答!这非常有用。

以上是关于向地理编码数据添加状态线的主要内容,如果未能解决你的问题,请参考以下文章

使用前向地理编码获取iOS中许多地址的纬度和经度时如何添加延迟?

发出前向地理编码多个地址

是否有适用于 iOS 的离线地理编码框架、库或数据库?

如何使用 android 中的 OSM 数据为单个城市实现离线地理编码器?

手把手教你Tableau自定义地理编码(十九)

有没有办法在 iPhone 的离线 openstreetmaps sqlite 地图瓦片数据库上实现离线地理编码?