如何在R中用多边形裁剪世界地图?

2023-11-21

我导入了世界地图数据集www.GADM.org使用 R 包栅格。我想将其剪切到我创建的多边形中以减小地图的大小。我可以检索数据并且可以毫无问题地创建多边形,但是当我使用“gIntersection”命令时,我收到一条晦涩的错误消息。

关于如何剪辑我的世界地图数据集有什么建议吗?

library(raster)
library(rgeos)

## Download Map of the World ##
WorldMap <- getData('countries')

## Create the clipping polygon
clip.extent <- as(extent(-20, 40, 30, 72), "SpatialPolygons")
proj4string(clip.extent) <- CRS(proj4string(WorldMap))

## Clip the map
EuropeMap <- gIntersection(WorldMap, clip.extent, byid = TRUE)

错误信息:

RGEOSBinTopoFunc(spgeom1, spgeom2, byid, id, "rgeos_intersection") 中的错误: 几何集合不能包含其他几何集合 另外:警告消息: 在 RGEOSBinTopoFunc(spgeom1, spgeom2, byid, id, "rgeos_intersection") 中: spgeom1 和 spgeom2 具有不同的 proj4 字符串


你不需要使用 PBS(我是通过惨痛的教训才知道这一点的,因为r-sig-geo@flowla 发布的链接是我最初发布的问题!)。这段代码展示了如何在 rgeos 中完成这一切,感谢various不同的postings来自罗杰·比万德。这将是更规范的子集化方式,无需强制 PolySet 对象。

出现错误消息的原因是您无法对 SpatialPolygon 集合进行 gIntersection,您需要单独执行它们。找出您想要使用哪些gIntersects。然后我使用每个国家多边形的子集gIntersection。我在将 SpatialPolygons 对象列表传递回 SpatialPolygons 时遇到问题,这会将裁剪后的 shapefile 转换为 SpatialPolygons,这是因为并非所有裁剪后的对象都是class SpatialPolygons。一旦我们排除了这些,一切就正常了。

# This very quick method keeps whole countries
gI <- gIntersects(WorldMap, clip.extent, byid = TRUE )
Europe <- WorldMap[which(gI), ]
plot(Europe)


#If you want to crop the country boundaries, it's slightly more involved:
# This crops countries to your bounding box
gI <- gIntersects(WorldMap, clip.extent, byid = TRUE)
out <- lapply(which(gI), function(x){ 
        gIntersection(WorldMap[x,], clip.extent)
   })

# But let's look at what is returned
table(sapply(out, class))
#   SpatialCollections    SpatialPolygons 
#                    2                 63 


# We want to keep only objects of class SpatialPolygons                 
keep <- sapply(out, class)
out <- out[keep == "SpatialPolygons"]


# Coerce list back to SpatialPolygons object
Europe <- SpatialPolygons(lapply(1:length(out), function(i) {
          Pol <- slot(out[[i]], "polygons")[[1]]
          slot(Pol, "ID") <- as.character(i)
          Pol
   }))

plot(Europe)

enter image description here

如果可以的话,我建议你看看自然地球数据。他们拥有保持最新的高质量形状文件,并不断检查错误(因为它们是开源的,如果您发现错误,请通过电子邮件发送给他们)。国家边界位于Cultural纽扣。您会发现它们也更轻量级,您可以选择适合您需求的分辨率。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在R中用多边形裁剪世界地图? 的相关文章

  • R - 正则表达式错误(PCRE 版本)

    我正在尝试使用koRpus在 R 中在运行 RHEL6 的 Linux 服务器上进行词形还原 上周 当我安装了 MRO Microsoft R Open 3 2 3 时 下面的代码效果很好 library koRpus lw c danci
  • 将密度曲线拟合到 R 中的直方图

    R中有没有可以将曲线拟合到直方图的函数 假设您有以下直方图 hist c rep 65 times 5 rep 25 times 5 rep 35 times 10 rep 45 times 4 看上去很正常 但其实是歪曲的 我想拟合一条倾
  • 从网络源获取 R 中的数据作为数据框

    我正在尝试使用 RCurl 包将一些空气污染背景数据作为 data frame 直接加载到 R 中 该网站有 3 个下拉框 用于在下载 csv 文件之前选择选项 如下图所示 我试图从下拉框中选择 3 个值 并使用 下载 CSV 按钮将数据作
  • R从列表中提取数据框,列名中没有前缀

    我在列表中放置了一个数据框 然后 当尝试将其提取回来时 我得到了该数据帧的所有以列表键为前缀的列名称 有没有办法完全按照最初传递的方式提取数据帧 cols lt c column1 Column2 Column3 df1 lt data f
  • 将summary()写入as.data.frame以在ggplot / R中使用

    请查找 af 数据样本t below 我正在使用以下方法进行竞争风险分析etmCIF来自etm package 产生以下结果 这很好 但需要更好的图形 曾经有一个ggtrans etm函数将数据导入ggplot 然而 这个功能显然被删除了
  • R read_excel:libxls 错误:无法解析文件

    我试图使用 readxl read excel 将 xls 文件读入 R 但它给出了以下错误 Error filepath data xls libxls error Unable to parse file 还尝试了 readxl exc
  • R-了解 akima::interp 结果中的 NA 值

    我有以下数据框 ref dat k Intensity Slope 1 0 021467214 33 16 2 0 012444759 33 8 3 0 006079156 33 4 4 0 003792025 33 2 5 0 02276
  • 在函数内部调用 clusterApply 时,性能会下降

    我遇到了一个奇怪的问题clusterApply 我已经能够尽可能地隔离它 如下所示 首先 我从全局环境运行以下代码 require parallel cl lt makeCluster rep localhost 20 SOCK xl lt
  • 查找数据帧列表中同一列中的所有重复值并将其转换为 NULL

    我有一个清单BELGIAN COAST list包含数百个数据帧 df1 df2 15 列 X 1000 行 每个数据帧的最后一列称为Chemicals并包含一些字符 例如Sulfate or Ammonia 但是这一列有很多行Chemic
  • 在 R 中绘制对数正态概率密度

    我正在尝试在 R 中生成对数正态概率密度图 其中包含 3 个不同的均值对数和标准差对数 我尝试了以下方法 但我的图表太丑了 看起来一点也不好看 x lt seq 0 10 length 100 a lt dlnorm x meanlog 0
  • 从 R 中的 HTTPS 连接逐行读取

    当创建连接时open r 它允许逐行读取 这对于批量处理大数据流非常有用 例如这个脚本 https gist github com jeroenooms d33a24958d99bb969ac0通过一次读取 100 行来解析相当大的 gzi
  • 将 VLMC 拟合到很长的序列

    我正在尝试将 VLMC 拟合到最长序列为 296 个状态的数据集 我这样做如下所示 Load libraries library PST library RCurl library TraMineR Load and transform d
  • 根据另一列中的键累积一列中的值时出现问题

    我有一个看起来像这样的数据框 我需要使用 PROJ ID 列中的字符串创建一个新的值列 并形成 PROJ NAME 列中的值字符串 这里提供的解决方案 根据 r 中另一列的键累积一列中的值 https stackoverflow com q
  • 如何按 data.table 中的十分位数组计算统计数据

    我有一个 data table 想按组计算统计数据 R set seed 1 R DT data table a rnorm 100 b rnorm 100 这些组应该定义为 R quantile DT a probs seq 1 9 1
  • 如何将此“for”循环转换为向量解

    这个问题与 将嵌入其他文本的长州名称转换为两个字母的州缩写 https stackoverflow com questions 25582518 convert long state names embedded with other te
  • R:表格格式

    我有一个包含以下列的 Excel 文件 Column1 Column2 Column3 ab bb 0 5 ab bc 0 1 ab cd 0 7 ab dd 0 8 ac bb 0 2 ac bg 0 8 ac ee 0 8 ac dd
  • R 中的字符串作为函数参数

    数据框chocolates列出了糖果的类型以及每种糖果的一组评级 ID sweetness filling crash snickers 0 67 0 55 0 40 milky way 0 81 0 53 0 56 我正在编写一个函数 它
  • 查找最接近点的多边形顶点的索引

    Heading 我需要找到最接近点的多边形的索引 所以在这种情况下 输出将是 4 和 0 这样 如果添加了红点 我就知 道将顶点放置在数组中的位置 有谁知道从哪里开始 抱歉 如果标题有误导性 我不知道如何正确表达它 In this case
  • 为什么 geom_boxplot 比基本箱线图识别更多异常值?

    这是一个可重复的示例 与基本箱线图相比 最后一个治疗组又发现了一个异常值 dta lt structure list Treatment c A A A A A A A A A A A A A A A A B B B B B B B B B
  • 使用predictNLS围绕R中的拟合值创建置信区间?

    我想使用 R 中 propogate 包中的 PredictNLS 围绕一大组拟合值构建置信区间 作为示例 我将使用它们在函数描述中引用的数据集 https rdrr io github anspiess propagate man pre

随机推荐

  • 如何在java中将.csv文件读入数组列表?

    我有一项大学作业 要求我从 csv 文件中获取数据 并以三种不同的方法读取 处理和打印它 这些说明要求我将数据读入数组列表中 我已经编写了一些代码来执行此操作 但我不确定我是否正确完成了操作 有人可以帮助我理解我应该如何将文件读入数组列表吗
  • 所有ajax请求完成后如何调用警报?

    我正在代码中使用 JQuery 发出一些请求 get 看起来像 get address1 function get address2 function get address3 function This code should be ru
  • 在 ASP.NET Core 6.0 和 7.0 上使用 Systemd

    如果你想在 Linux 上使用 systemd 托管你的 ASP 应用程序ASP NET 核心 5 你必须添加Microsoft Extensions Hosting Systemd具有此配置的 nuget 包 public class P
  • 为什么使用 foreach 时不执行此 LINQ 查询?

    在 LINQ 语句中创建新对象时 例如 var list new List
  • Android开机时启动后台服务

    我需要始终有一个后台服务来同步我的 Android 应用程序和服务器 我知道如何通过我的应用程序启动它 但是当 Android 关闭时 后台服务就会消失 如何才能让后台服务始终运行 即使设备关闭然后再打开 我需要将我的后台服务添加到Andr
  • 如何更改搜索结果中的“使用 create-react-app 创建”?

    我试图将我的投资组合的链接发布到 linkedin 上 但它总是显示 使用 React 应用程序创建的网站 作为描述 这绝对不会使它看起来很专业 它部署在我的域上 但有什么方法可以摆脱我的域链接上的所有 create react app 默
  • 如何实现词性 (POS) 标注器

    我正在寻找基于 PHP 的最佳方法来扫描大量文本条目 分类 并提取关键字 有人知道词性标记吗 有 PHP 风格的方法来做到这一点吗 我扫描了很多在线分类广告 但没有一个有类别 为了加快分类过程 我希望安装词性标注器 http en wiki
  • Laravel Fluent Query Builder 与子查询连接

    好吧 经过几个小时的研究并仍在使用 DB select 我必须问这个问题 因为我正准备扔掉我的电脑 我想获取用户的最后一个输入 基于时间戳 我可以用原始 sql 来做到这一点 SELECT c p FROM users c INNER JO
  • SSRS 计数 IF 多个值

    我正在创建一份教育报告 我有很多成绩 我想将 A C 的成绩数量相加 类似于 SUM WHERE Grades IN A B C 我如何在表达式中执行此操作 我可以对 Choose 语句进行 SUM 或其他操作吗 我试过 SUM Choos
  • 使用 OUT 参数从函数返回列表

    我想创建一个 CMake 函数 function test src list dst list do something endfunction usage test my list chg list 它的意思是 my list是一个包含多
  • SQL Server 中默认的锁定粒度是多少?

    我已彻底阅读MSDN 关于表格提示而且我似乎没有找到默认的锁定粒度 假设我有以下查询 SELECT TOP 1 FROM MyTable WITH UPDLOCK READPAST ORDER BY SomeColumn ASC 你看 我指
  • 通过哈希值比较长字符串

    为了提高比较字符串的函数的性能 我决定通过比较它们的哈希值来比较它们 那么 如果两个非常长的字符串的哈希值彼此相等 那么是否可以保证这些字符串也彼此相等 虽然可以保证 2 个相同的字符串会给您相同的哈希值 但反之则不然 对于给定的哈希值 总
  • Android获取布局父id

    我想知道 View 和 ViewParent 之间有什么区别 我正在尝试获取父级的 IDImageView但这我做不到 myImageView getParent getId 那么还有其他方法可以获取这个id吗 我想知道 View 和 Vi
  • 对 matplotlib 中的不同子图使用相同的颜色条

    我使用以下过程在子图中绘制不同的图形 fig figure figsize 10 11 subplots adjust wspace 0 5 hspace 0 2 iplot 330 for i in range 9 iplot 1 ax
  • Windows.Web.Http.HttpClient 超时选项

    由于 SSL 证书问题 我们在应用程序服务层中使用 Windows Web Http HttpClient API 我为我的项目引用了以下示例 http code msdn microsoft com windowsapps HttpCli
  • 如何从 WCF REST 方法返回自定义 HTTP 状态代码?

    如果 WCF REST 调用中出现问题 例如找不到请求的资源 我如何在我的 OperationContract 方法中使用 HTTP 响应代码 例如 将其设置为 HTTP 404 之类的代码 有一个WebOperationContext您可
  • 如何在 C# 中通过 XML 序列化输出十六进制数字?

    我有一些类和结构 我使用 XML 序列化来保存和调用数据 但我想要的一个功能是以十六进制表示形式输出整数 我可以在这些结构上添加任何属性来实现这一点吗 有一点代码味道 但以下内容will work public class ViewAsHe
  • C# Windows 窗体中的状态栏

    我找不到用于实现状态栏的控件 我怎样才能手动完成呢 我认为您正在寻找 StatusStrip 控件 这是一篇关于它的文章 这是一个MSDN 文章
  • 如何在 Nuxt 中使路由区分大小写

    我使用 nuxt js vue js 我需要创建路由器区分大小写 我发现以下属性 caseSensitive 我试图将其放入 nuxt config 但它不起作用 可以通过大写的链接进行转换 如果我直接更改文件 project nuxt r
  • 如何在R中用多边形裁剪世界地图?

    我导入了世界地图数据集www GADM org使用 R 包栅格 我想将其剪切到我创建的多边形中以减小地图的大小 我可以检索数据并且可以毫无问题地创建多边形 但是当我使用 gIntersection 命令时 我收到一条晦涩的错误消息 关于如何