通过shapefile之间的纬度/经度比较创建数据框

时间:2019-07-10 21:34:52

标签: r shapefile

我有两个shapefile /数据框(我可以轻松地在类型之间进行转换)。一个包含形成边界线的坐标,一个包含代表房屋的一组点的坐标。它们都有包含long和lat的列,并且在数据框之间具有匹配的列名。

我想做的是创建第三个数据框,其中包含位于边界左侧而不是右侧的房屋点的子集。

使用if语句测试给定房屋点是否在数据框的左侧,我尝试了两种版本:

df3 <- if(df1$lat < df2$lat){merge(df1,df2)}

df3 <- if(df1$lat[[i]] < df2$lat[[i]){merge(df1,df2)}

第一个返回0个观察值,第二个不运行,产生错误:找不到对象“ i”。 有建议吗?

edit:这是两个数据框的前六行。其中一个有130行,另一个有3000行(房子点)。

        lat     long                       geometry transaction.id
1 -80.12898 25.79037 LINESTRING (-80.12165 25.98...         145045
2 -80.13958 25.94337 LINESTRING (-80.12165 25.98...         240471
3 -80.19615 25.89209 LINESTRING (-80.12165 25.98...         495368
4 -80.12024 25.83410 LINESTRING (-80.12165 25.98...         129341
5 -80.14139 25.78359 LINESTRING (-80.12165 25.98...         146586
6 -80.12744 25.96239 LINESTRING (-80.12165 25.98...         232505
        lat     long                       geometry
1 -80.12165 25.98020 LINESTRING (-80.12165 25.98...
2 -80.11889 25.97520 LINESTRING (-80.11889 25.97...
3 -80.11876 25.97795 LINESTRING (-80.11876 25.97...
4 -80.11903 25.97236 LINESTRING (-80.11889 25.97...
5 -80.11918 25.96933 LINESTRING (-80.11903 25.97...
6 -80.11930 25.96639 LINESTRING (-80.11918 25.96...

编辑:

v3 <- ifelse(df1$lat < df3$lat, 1, 0) 
df3 <- cbind(df1$lat, df1$long, df1$id, v3)

似乎要做好工作!谢谢@ r2evans,但价值观不是正确的。我认为这是因为上面列出的第二个日期框架中的经度和纬度列是从带有st_geometry列出的两个纬度和两个经度的几何列中强制转换的

0 个答案:

没有答案