问题标签 [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.

0 投票
2 回答
1207 浏览

r - 按区域过滤 shapefile 多边形

我有以下英国的边界数据集,其中显示了所有县:

使用该subset功能可以很容易地通过数据中的属性过滤 shapefile 多边形。例如,如果我想排除北爱尔兰:

但是,有很多小岛会扭曲比例数据范围,如下图所示:

在此处输入图像描述

关于如何以最小尺寸优雅地对数据集进行子集化有什么想法吗?具有与子集参数一致的格式将是理想的。例如:

0 投票
2 回答
664 浏览

r - 使用 R 的邻近地图

我正在寻找使用 R 创建一些邻近地图,它显示区域与某些点的距离。我在 R 代码中找不到任何示例,但我找到了我想要的输出: 在此处输入图像描述

它不一定必须具有所有标签/内部边界魔法,但我希望它停在海上边界(考虑使用该rgeos功能gintersection- 请参阅此处)。

我已经尝试将密度图作为“热图”(这将是一个很好的解决方案/替代方案)并将 shapefile 放在顶部(按照这个建议,但他们没有排队,我不能做一个gintersection,可能是因为密度图没有附加坐标系。在此处输入图像描述

0 投票
1 回答
269 浏览

r - sf 绘图,键未正确显示 R

我一直在尝试使用sfplot函数绘制一个 shapefile,但我得到了这个:

(shapefile 可以在这里找到:https ://drive.google.com/open?id=1AKMP9i549xESStN-R59UUU80OmkXy1XM )

我无法正确显示密钥。我一直在玩par功能,但我认为我做错了,因为没有任何改变。

我试过:

和许多其他组合(c(10,5,5,20),c(10,10,10,10)),但我认为 sf plots 不依赖于par设置(如果我错了,请原谅)。

我还尝试key.size在函数中使用该属性,plot但它只会改变键的宽度(见下图左图),如果它太大,则只显示键(右图)。

我想正确显示钥匙,如果可能的话,改变它的大小。

有人遇到过同样的问题吗?

0 投票
1 回答
151 浏览

r - 访问简单要素几何列以进行密度计算

我使用空间数据,并且习惯于使用Spatial*对象。我最近开始使用sf包,在某些情况下它似乎让生活更轻松。但是,我在尝试使用光栅包时遇到了麻烦。在kde2d功能中,我需要提供每个点的 X 和 Y,这在sp包装中很容易:

但是后来我尝试使用sf包来实现相同的目标,但发生了错误:

我不知道如何以与 package.json 相同的方式进入几何列sp。我尝试了解决方法,但看起来很难看:

还有其他方法可以实现吗?也许您使用一些比raster处理密度更好的软件包?

0 投票
1 回答
353 浏览

r - 在 sf 中测试/过滤几何的相等性?

可能在这里遗漏了一些东西,但经过一堆挖掘后没有找到任何东西。我试图找到sf几何图形具有特定值的对象行。这是为了整理的目的,其中相同的几何图形可能与不同的数据集中的不同关联元数据(例如 id 和其他值)一起存储,我需要解决差异。

通常使用以下方法很容易过滤某些值dplyr

加载所需的包

加载示例数据集

正如预期的那样,dplyr::filter在不同的列上效果很好。我们可以很容易地选择有NAMEAshe 和CNTY_ID1825 的那一行,也就是第一行:

尝试在几何列上进行过滤时效果不佳。我希望这仅返回 的第一行nc,因为那是nc等于geometry(根据定义)第一个几何图形“nc$geometry[1]”的行。

该错误消息表明即使==操作员也不起作用:

identical()有效,但不是为了构建我自己的过滤器。想查看TRUE输出的第一个元素,但我认为identical()在地图函数中不会这样工作。

==根本没有为几何sf定义?如果是这样,是否有替代方法来测试相等性或以其他方式在不同数据集中找到相同的几何图形?我即将rbind使用不同的数据集并使用它duplicated()来执行此操作,但这需要确保两者中的所有列都相同,并且看起来像是意外/不必要的麻烦。

感谢您完成问题 - 任何建议都非常感谢!

0 投票
2 回答
47 浏览

r - sf data.frame中只保留二维分量

我有一个与这个问题类似的设置。然而,就我而言,我有一个sfdata.frame ,其中包含不同几何类型的混合,有些是这样POLYGON的,有些GEOMETRYCOLLECTION是这样的:

就像上面提到的问题一样,我希望只保留那些GEOMETRYCOLLECTION二维的部分,因为最终我对这些几何形状的区域感兴趣并且st_area()不会在GEOMETRYCOLLECTIONs 上工作。

然而,在混合几何的情况下,给出的答案

不起作用,因为st_cast()叶子GEOMETRYCOLLECTION未受影响。

0 投票
0 回答
830 浏览

r - 用 ggplot 和 sf 绘制国会等值线图

我正在努力使用 ggplot2 和 sf 库创建国会热图。

到目前为止,我可以创建州议会选区的空白地图:

我希望能够将虚拟数据与空白绘制的形状联系起来并填充渐变 - 如下所示:

但是我遇到了一个错误:“在使用 plot 命令时找不到函数“geom_sf”,并且在使用 ggplot 命令时出现了这个错误:“ggplot2 不知道如何处理类 sfc_MULTIPOLYGON/sfc 的数据”。

我认为问题在于 plot_states_data 既是数据框又是 sf 对象类,我不确定如何使 plot_states_data 只是一个数据框或如何使 ggplot 和 sf 一起工作。

有人对解决这些问题有什么建议吗?

编辑:

austensen 关于下载开发者 ggplot2 的评论已经解决了这个问题。对于尝试进行相同类型映射的其他人,此命令对我有用:

0 投票
1 回答
1424 浏览

r - 在地图上的一个点周围绘制一个缓冲区 - R SF

我一直在尝试在地图上的某个点周围绘制一个缓冲区,但是当我这样做时,缓冲区并没有像这样出现在正确的位置。

错误的 R 地图

正确的位置是在加利福尼亚。

这是我的代码:

0 投票
1 回答
4014 浏览

r - 使用 facet wrap 与 geom_sf 映射不同的状态和自由缩放

首先,我知道这个答案:Mapping different states in R using facet wrap
但我使用库对象sf
似乎这facet_wrap(scales = "free")不适用于geom_sf在 ggplot2 中绘制的对象。我收到这条消息:

Erreur : 自由秤仅支持coord_cartesian()coord_flip()

有什么我错过的选择吗?
任何人都解决了这个问题而没有被迫使用cowplot(或任何其他网格排列)?

确实,这里有一个例子。我想在各个方面分别显示不同的法国地区,但有自己的 x/y 限制。

没有尺度的结果=“免费”

比例尺是根据整个地图的范围计算的。

带有 geom_sf 的刻面区域

使用cowplot的结果

我需要使用 ggplots 列表,然后可以将它们组合起来。这是目标输出。它更干净。但我也想要一种干净的方式来添加图例。(我知道在另一个 SO 问题中可能有一个共同的传说: facet wrap distorts state maps in R

带有 geom_sf 和 cowplot 的刻面区域

0 投票
0 回答
290 浏览

r - 如何从 10 公里顶点处的 shapefile 中拆分线串?

我有一个导入到 R 中的河流段的 shapefile。这些段的长度范围为 5-115 公里。我想将超过 10 公里的路段分成 10 公里的块。所以我用st_segmentize. 但这实际上并没有将一条长线分成多个新的短线,这就是我想要的......有没有办法做到这一点?我认为st_segmentize每 10 公里添加一个顶点。所以我只需要在顶点处分割线。

到目前为止的代码:

谢谢你的帮助!