如何使用R中的sf包

InfoWorld的|2019年12月19日

看看怎么做GIS计算R中与本教程上找到的邮政编码为美国的地址。

版权所有©2019Raybet2

你好。我莎朗马克利斯在IDG,这里做一集39多与R:点多边形。

计算一个点属于哪个多边形有各种各样的用途。例如,它可以让应用程序告诉你在哪里投票或者你的立法者是谁。在本集中,我将使用多边形中的点来回答一个简单的问题:街道地址的邮政编码是什么?

我们需要为这三件事。1)的方式进行地理编码的地址就能获取经纬度。2)形状文件即轮廓邮编边界,和3)SF包。

对于地理编码,我通常使用的地理编码-I-O API。它是免费为每日2,500次查询,但你需要一个API密钥来使用它。为了解决复杂的这个视频是有点,我将使用免费的,开源的开放街道地图API。它不需要一个密钥。该tmaptools包具有这样的功能,geocode_OSM(),使用该API。

让我们开始编码。

我会加载我想要的包:SF,tmaptools也TMAP和dplyr。接下来,我将创建一个向量有两个地址:我们在弗雷明汉IDG办公室,马萨诸塞州旧康涅狄格路径;在波士顿RStudio办公室。然后我就进行地址解析他们。

对于邮编边界,美国人口普查局对整个美国的一个“邮编制表区”的文件。这是一个相当大的文件。相反,我去censusreporter.org和邮编区域搜索数据只为马萨诸塞州和下载的。

我已经做了下载,以节省一些时间。(注意:您还可以使用底格里斯河包下载普查shape文件。)

我可以手动解压缩下载的文件,但在R中更简单。这里我使用基本R的unzip()函数。那个junkpaths = TRUE参数说我不希望解压缩添加另一个基于zip文件名称的子目录。

好了,现在终于有些地理信息工作。我会用SF的st_read()函数导入shape文件成R。

看看控制台。这里显示了一些信息,这些数据中至少有一个是重要的:“e.p.s.g”。这说明了创建文件时使用的坐标参考系统。这里是4326。在不太深入地研究杂草的情况下,e.p.s.g.基本上是说,用什么系统把三维地球上的区域(地球)转换成二维坐标(纬度和经度)。这很重要,因为有很多不同的坐标参考系统。我希望我的邮政编码多边形和我的地址点使用相同的一个,所以他们正确地排列。

这个文件碰巧包含了整个马萨诸塞州的一个多边形,我不需要它。因此,我将用dplyr::filter()过滤掉马萨诸塞行。

这接下来的代码位是没有必要的,但它是我shape文件的一个很好的检查:我做我的邮政编码SF对象的快速情节与TMAP的QTM()(用于快速主题地图)。它看起来像我的几何形状是有道理的邮政编码。

现在我想使用地理编码地址数据。这是给我的麻烦,当我使用SF刚开始的一个组成部分。眼下,纬度和经度被存储在一个普通的数据帧。但是,这需要被转换成地理空间SF对象 - 并与正确的坐标系。

我可以做到这一点科幻的st_as_sf()函数。(即对空间数据进行操作SF功能一般先从ST_。如果你想知道,这代表“空间”和“时间”)。

st_as_sf()需要几个参数。在这段代码中,第一个参数是转变,我的地理编码地址的对象。其次,我要告诉SF其中列有X(经度)和y(纬度)值。第三,我的坐标参考系统设置为4326,所以它的同我邮编多边形。

现在,我已经建立了我的两个数据集,计算邮编每个地址是超级简单:我只是用SF的st_join()函数。使用这个语法:点SF对象,多边形SF对象,连接的类型。在这种情况下,我第一次运行st_join()的地理编码点和邮编多边形第二。这意味着为了包括所有的点,但只邮政编码那场比赛。和我一起类型st_within。

而已!现在,如果我看我的结果,你可以看到ZIP代码被分配到两个地址。

如果您想映射的是,这里是你如何与TMAP做到这一点。

这是它为这个情节,感谢收看!对于以上R提示,头向做多有R在页面去点InfoWorld的点com削减更多的与R,全部小写除R
您还可以找到做多配合YouTube IDG技术讲座槽R播放列表 - 在这里你可以订阅,所以你永远不会错过任何一集。希望下次再见!
流行
IDG.tv的特色视频