【发布时间】:2020-03-07 16:37:59
【问题描述】:
我有一个包含两个几何列的 sf 数据集。这是它的样子:
> trip_geo
dstid sourceid dest_geom source_geom
1 1 1 MULTIPOLYGON (((-2.607985 5... MULTIPOLYGON (((-2.607985 5...
2 1 2 MULTIPOLYGON (((-2.607985 5... MULTIPOLYGON (((-2.57022 51...
3 1 3 MULTIPOLYGON (((-2.607985 5... MULTIPOLYGON (((-2.593213 5...
4 1 4 MULTIPOLYGON (((-2.607985 5... MULTIPOLYGON (((-2.608686 5...
5 1 5 MULTIPOLYGON (((-2.607985 5... MULTIPOLYGON (((-2.512852 5...
活动几何是dest_geom。
每一行对应于社区之间的一次旅行。对于每次旅行,我都想知道哪些街区会阻碍旅行。也就是说,如果要在每一行的 source_geom 和 dest_geom 之间画一条直线,哪些几何图形会接触这条直线?我想获取该行的所有接触几何图形,然后将它们合并。
我有另一个数据集,其几何对应于每个 id:
> id_geo
dstid geometry
1 1 MULTIPOLYGON (((-2.607985 5...
2 2 MULTIPOLYGON (((-2.57022 51...
3 3 MULTIPOLYGON (((-2.593213 5...
4 4 MULTIPOLYGON (((-2.608686 5...
5 5 MULTIPOLYGON (((-2.512852 5...
我想第一步是在每次行程的 source_geom 和 dest_geom 的质心之间定义一条线。然后,创建一个 sf,其中几何列包含接触线的多边形列表(我不知道是否可以在 sf 的一列中有多个几何图形)。然后,合并同一行/列表中包含的几何图形。
我不认为我解决问题的方式是正确的,因为据我所知,无法对 sf 的两个几何图形执行操作,例如定义一条线。此外,我不知道如何将列表集成到数据框/sf。
如果您能提出一种更现实的解决问题的方法,我将不胜感激。
【问题讨论】:
-
你能分享一些示例数据吗?尝试粘贴
dput(dplyr::sample_n(trip_geo, 15))的输出以及id_geo中与trip_geo中的15 行样本中的ID 相对应的行。通过这种方式,人们可以将您的数据粘贴到 R 中并尝试提供解决方案。 -
dputforsf对象非常长。我会尝试将您的分析分解成更小的部分,并制作简单的虚拟数据,人们可以复制和粘贴以帮助您解决问题