问题标签 [ggspatial]

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 投票
1 回答
256 浏览

r - 如何使五大湖与R中的海洋颜色相同?

我是使用 R 制作地图的新手。我正在尝试制作北美地图(以美国为中心),并希望五大湖的颜色与海洋颜色相同。我当前的代码默认使它们与国家/州具有相同的颜色。关于如何改变颜色的任何想法?也许是不同的底图?

当前代码:

0 投票
1 回答
158 浏览

r - 如何使用 sf 真正计算球形 voronoi 图?

我想使用世界的球形性质(不是它的投影)制作一个带有 voronoi 镶嵌的世界地图,类似于使用 D3.js,但使用 R。

据我了解(“再见平坦的地球,欢迎 S2 球面几何”)该sf软件包现在完全基于该s2软件包,并且应该按照我的需要执行。但我不认为我得到了预期的结果。一个可重现的例子:

在此处输入图像描述

整个南极洲应该比其他两点更靠近墨尔本。我在这里想念什么?如何使用 计算球体sf的 voronoi ?

0 投票
1 回答
73 浏览

r - 在ggspatial中隐藏感兴趣区域之外的区域

我使用ggplot2, ggspatial和制作了地图sf。我使用ggspatial这样我就可以下载开源基础地图,而无需依赖 Google 并且需要 API 密钥。该ggspatial annotation_map_tile调用会下载一组提供基本地图的图块。我正在尝试将我感兴趣的州以外的地图涂白,以便底图仅显示在州内。

这是我的代码。dput对象的sf位于底部。当你运行它时,你会看到一张新墨西哥州的地图,上面有一条黑线勾勒出该州的轮廓。我想让地图在州外变成白色。

我尝试了两件事。首先,我虽然想以某种方式反转 fill 参数geom_sf,但不认为有办法做到这一点。我的另一个尝试是将所有州都包括在一个额外的geom_sf电话中并填充那些白色。这可能行得通,但它需要下载超过 4,000 个地图图块,我想避免这种情况,即使可以使用cachedir参数保存地图图块。

0 投票
0 回答
20 浏览

r - 我部署的应用程序未正确显示地图

我写了一个shinyApp,它做一些计算并根据结果创建一些地图。在我的 Rstudio 中,一切正常,没有任何错误。我尝试在 Digital Ocean 上部署该应用程序并且该应用程序正在运行,但是我没有显示地图,而是收到此错误:

地图的代码是下一个。我只需要澄清 ggplot 数据中的帽子“世界”是我在应用程序中读取的一个 .rds 对象,它代表我正在处理的区域。

0 投票
1 回答
47 浏览

r - 在R中绘制地图,但它什么也没显示

我的代码:

这段代码应该生成切萨皮克湾的地图,但是当我运行它时,它不会产生任何东西。

0 投票
0 回答
164 浏览

r - sp::CRS 和 ggspatial::annotation_map_tile 分别出错

它工作得reprex::reprex()很好(见下文),但在 Rterm 和 RStudio 控制台中我得到错误......你知道如何解决这个问题吗?有一些类似的问题,但到目前为止我还没有找到解决方案

非常感谢,克里斯托夫

reprex 包于 2021-10-22 创建(v2.0.1)

0 投票
1 回答
35 浏览

r - ggspatial:geom_sf 因 coord_sf 中的某些 xlim 值而失败

我正在尝试做的事情:使用 ggspatial::geom_sf() 绘制空间对象,使用 coord_sf() 或 ggspatial::layer_spatial() 和 ggspatial::annotation_spatial() 的组合来指定绘图的范围。

这种 ggplot/ggspatial 行为已在几篇文章中进行了描述,但“解决方案”只是临时黑客,无法确保问题不再发生。请参阅: 在更新 ggplot2 后使用 coord_sf 设置 x 和 y 的限制 在 RStudio 中在美国地图上绘制纬度和经度点时出错

这段代码工作得很好:

就像这样:

但:

导致错误:st_cast.POINT(X[[i]], ...) 中的错误:无法从 POINT 创建 MULTILINESTRING

显然这不应该发生。我不明白为什么 geom_sf 调用 st_cast.POINT() 因为输入中不应该有任何点。我尝试了三种不同的世界地图(GADM 3.6 shapefile、rworldmap::countriesLow 和 rnaturalearth 之一),所以它似乎不是特定于数据集的。

使用这些 x 和 y 限制值,即使是简单的 sf 点对象也无法绘制!

错误消息再次是“无法从 POINT 创建 MULTILINESTRING”,我不知道它为什么会尝试创建 MULTILINESTRING。

更新:此处建议的解决方案不起作用: 为什么某些 xlims 和 ylims 在 ggplot 和 sf 中产生此错误?

结果,奇怪的是,只有在 150oE 和 160oW 之间的点,即太平洋上空大约 180 经度,被保存下来。我尝试使用从 0 到 360 的经度并交换 xmin 和 xmax,但无济于事。

除了 st_crop 的错误行为,传递正确的裁剪对象再次给出相同的错误:

结束更新

有解决方案或解决方法吗?