问题标签 [sf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - st_read() 错误:GetGeomFieldRef 返回的 NULL 指针
问题:
NULL pointer
读取此 EIA zip 文件时ShalePlay_Bakken_Isopach_EIA_08Jan2015.shp
返回A。
?st_read
指向关于 OGR 模型的以下链接。¯\_(ツ)_/¯
问题:
有没有办法使用 删除空几何st_read()
?
解决方法:
以下代码使用rgdal::readOGR()
andsf::st_as_sf()
转换为 class sf
,成功运行(带有警告)。
r - 对 sf 对象的逐行操作
我在对 sf 对象进行逐行操作时遇到了一些麻烦,其中几何是多边形类型。
by_row 中的 sf 函数似乎不起作用,例如以下应该创建一个包含边界框对象的列表列:
UseMethod(“st_bbox”)中的错误:没有适用于“st_bbox”的适用方法应用于类“c('tbl_df','data.frame')”的对象
(本身不是最有用的例子,但演示了问题)。
我尝试了一些替代方法,例如rowwise() %>% mutate()
, mutate( x = apply(., 1, function(x) ...))
,但都没有,因为它们没有为 st_bbox() 提供它需要的 sf 对象。这是一个错误,还是我处理得不好?
编辑:可重现的例子
r - How can I do a spatial join with the sf package using st_join()
Here's a toy example I've been wrestling with
The last line produces
How can I do a spatial join to determine which points fall inside which polygons?
r - 如何使用 R“简单特征”库`sf` 进行 3D 距离计算?
我最近才开始使用 nice 和相对较新的library(sf)
. 很高兴看到点和线可以有 Z 坐标。例如:
然而,使用具有 Z 信息的对象的计算似乎很清楚将其全部投射到 XY 平面中:
如何在不滚动自己的情况下使用 Z 坐标进行操作?
(我猜要么是因为缺乏理解而遗漏了一些东西,要么是库太新了,这些操作根本还没有实现。)
r - 从两列矩阵创建 sf 对象
我有一个简单的两列矩阵,我想将其转换为sf
每行指定一个点的对象:
最天真的方法不起作用,因为apply
将这些点重新组合成一个矩阵,并且操作只是变成一个非常慢的转置函数:
在不做显式循环的情况下,我能想到的最好的就是这个怪物:
另一种选择是通过sp
对象,但我不想这样做。我还想要一个仅在基础 R 中的解决方案,因此无需转换为 data.table 或 tbl 等。
我只是缺少一个简单的as(m,"sf")
功能或类似的功能吗?
r - 使用 sf 包溶解多边形特征
Dissolve 是一种常见的地理处理技术,在这里作为 sf 方法进行了讨论。
我正在尝试复制溶解,因为它在 ArcGIS 中起作用。在 ArcGIS 中按两组考虑县。
无论东部半岛由其他单独的多边形组成,ArcGIS 溶解命令都会生成两个多边形。像这样:
这是我想在 sf 中复制的功能,但是我不能如下所示。
请注意半岛有多个无关的多边形。
在 ArcGIS 案例中,我如何只得到两个?非常感谢。
r - 坐标中的多边形
我有一个data.frame
with lat
s 和lng
s 来定义矩形框的边界,就像这样
将其转换为sf
包含 s 列的对象的最简单方法POLYGON
是什么?
r - 在 R 中使用 readOGR 读取慢速 GML(地理标记语言)文件
我有很多 GML 文件要在 R 中循环,但它们都不是非常重(最大文件大小为 600 Mb,但通常它们的范围在 10-60 Mb 之间)。我的问题是 {rgdal} 包中的 readOGR 函数需要很长时间才能读取它们,并且它会大大减慢循环速度。读取一个文件需要 3 分钟到 30 分钟...
我已经遍历了 .shp 文件,它们不会占用太多时间来阅读。
所以我的问题实际上是两个:
- R 中是否有更快的函数来读取 GML 文件?到目前为止还没有找到
- 如果无法实现更快的读取功能,是否有一种将 GML 文件转换为 .shp 的快速方法?
我的 readOGR 代码:
r - 高效提取 MultiPolygon 中自相交特征生成的所有子多边形
从包含相当大数量(大约 20000)的可能部分重叠的多边形的 shapefile 开始,我需要提取所有通过与不同“边界”相交而产生的子多边形。
在实践中,从一些模型数据开始:
我需要派生一个包含所有且仅由交叉点生成的多边形的多边形sf
或多边形,例如:sp
(请注意,颜色只是为了举例说明预期的结果,其中每个“不同颜色”的区域都是一个单独的多边形,不会覆盖任何其他多边形)
我知道我可以通过一次分析一个多边形,识别并保存它的所有交叉点,然后“擦除”这些区域形成完整的多多边形并循环进行,但这很慢。
我觉得应该有一个更有效的解决方案,但我无法弄清楚,所以任何帮助将不胜感激!(欢迎使用基于解决方案的解决方案sf
)sp
更新:
最后,我发现即使是“一次一个多边形”,任务也远非简单!我真的在这个明显“简单”的问题上苦苦挣扎!有什么提示吗?即使是缓慢的解决方案或从正确路径开始的提示也将不胜感激!
更新 2:
也许这会澄清一些事情:所需的功能将类似于此处描述的功能:
更新 3:
我将赏金授予@shuiping-chen(谢谢!),他的回答正确解决了提供的示例数据集上的问题。然而,“方法”必须推广到“四重”或“n-uple”交叉点是可能的情况。我会在接下来的几天里努力解决这个问题,如果我能做到的话,我会发布一个更通用的解决方案!