【发布时间】:2022-02-01 20:48:05
【问题描述】:
我是PostgreSQL 和PostGIS(一般数据库)的绝对初学者,但在R 有相当好的工作经验。我有两个来自两个不同来源的印度脆弱地区的多面数据集——一个大约 12gb,它的格式是.gdb(我们称之为mygdb),另一个是大约 2gb 的 shapefile(我们称之为@ 987654327@)。我想比较两组漏洞图,并使用图之间的交集 (I)、差异 (D) 和并集 (U) 生成一些适合状态的度量。
我想利用PostGIS 功能(通过R),因为R(崩溃!)和qgis(太慢)对此都没有效率。首先,我已将两个数据集上传到我的 PostGIS 数据库中。我在R 中使用了ogr2ogr 来上传mygdb。但我有点卡在这一点上。我的想法是按状态拆分两个多边形文件,然后应用其他函数来获取 I、U 和 D。从我的搜索中,我想我可以使用 sf 函数,如 st_split、st_intersect、st_difference 和st_union。但是,即使在拆分后,我想文件大小仍然太大而无法处理,所以我的问题是
- 我的方法是最好的前进方式吗?
- 如何在不将数据库中的数据导入 R 的情况下使用
sf::st_函数(例如st_split、st_intersection)
以前的相关问题有一些有用的答案,例如this one。但是我发现很难将来自不同链接的步骤放在一起,并且任何对虚拟示例的帮助都会很棒。非常感谢。
【问题讨论】:
-
看起来您的数据是矢量数据。如果您已将其加载到安装了 postgis 的 postrgres,它们可能会被拆分为不同的表(点、线、多边形),其中有几行对应于特征。将它们逐部分加载到 R 进行比较应该没有问题。是的,
sf()库将是不错的选择。一般来说,st_函数对应 Postgis 中的ST_函数。 -
谢谢。您介意提供一个示例代码,例如使用 st_intersection 而不在本地导入输入吗?
标签: r postgresql postgis sf