如何加快从栅格中提取缓冲区中土地覆盖类型比例的速度?

2024-02-02

我想提取 10 公里缓冲区中大约 30 000 个 SpatialLines 类对象的空间数据,并计算缓冲线周围每种土地覆盖类型的比例。我第一次使用这个功能crop裁剪我的光栅。然后,我使用了该功能extract(包栅格)计算 10 种土地覆盖类型的比例。这是我的代码:

lapply(1:nrow(tab_lines), FUN=function(k){

第一步:建设沿线10公里缓冲区

buf_line <- gBuffer(seg_line[k], width=10000) ## seg_line =  Lines objects

第二步:从栅格中提取缓冲区中的土地覆盖类型

ha <-extract(x=data_raster,y=buf_line)

第三步:计算10种土地覆盖类型的比例

每种土地覆盖类型的比例必须在列中(一列 = 一种土地覆盖类型)

    ha_1 <-length(ha[[1]][ha[[1]]==1])/length(ha[[1]])
    ha_2 <-length(ha[[1]][ha[[1]]==2])/length(ha[[1]])
    ha_3 <-length(ha[[1]][ha[[1]]==3])/length(ha[[1]])
    ha_4 <-length(ha[[1]][ha[[1]]==4])/length(ha[[1]])
    ha_5 <-length(ha[[1]][ha[[1]]==5])/length(ha[[1]])
    ha_6 <-length(ha[[1]][ha[[1]]==6])/length(ha[[1]])
    ha_7 <-length(ha[[1]][ha[[1]]==7])/length(ha[[1]])
    ha_8 <-length(ha[[1]][ha[[1]]==8])/length(ha[[1]])
    ha_9 <-length(ha[[1]][ha[[1]]==9])/length(ha[[1]])
    ha_10 <-length(ha[[1]][ha[[1]]==10])/length(ha[[1]])

     return(cbind(ha_1, ha_2, ha_3, ha_4, ha_5, ha_6, ha_7, ha_8, ha_9, ha_10))  
    })

如何加快 30 000 条空间线的处理时间? R 中是否有其他包可以为此类提取提供更快的处理?


这是一个更简洁的表述

library(raster)
library(rgeos)

buf_line <- gBuffer(seg_line, width=10000, byid=TRUE)
ha <- extract(x=data_raster, y=buf_line)
h <- sapply(ha, function(x) tabulate(x, 10))
h <- h / colSums(h)

但我不认为这会快得多。你可以尝试而不是提取sp::over

根据您的计算机,第一次运行可能会加快速度

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

如何加快从栅格中提取缓冲区中土地覆盖类型比例的速度? 的相关文章

随机推荐

  • 使用nodejs创建考勤登记表

    问题 从 txt 文件中逐行读取学生姓名 对于每个名字 询问该学生是否在上课 例如 迈克尔在上课吗 是 否 让用户输入是或否 将每个名称和条目存储在另一个 txt 文件中 解决方案 我编写了这段几乎可以工作的代码 只是在循环 readlin
  • Ajax 调用 .Net 并发送回 cookie

    我正在从 html 页面 移动 向 net 服务器进行 ajax 调用以进行登录和身份验证 现在我正在发送一个 JSON 响应 结果为 success true 这一切都工作正常 但我需要设置 cookie 以便在登录后进行其他调用来记录数
  • 是否可以使用 data.table 索引连接分配习惯进行左连接并将 i 的不匹配行中的 NA 分配给 x ?

    昨天我给出了这样的答案 按五列匹配数据表以更改另一列中的值 https stackoverflow com questions 39176643 matching data tables by five columns to change
  • 由于其保护级别而无法访问该类[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有一个项目 IBSampleApp 在两个解决方案中使用 并且它的类在两个解决方案中都遇到以下编译器错误 由于其保护级
  • 如何创建 Java 程序的试用版 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在用java编写一个软件 我快完成了 我想知道我们如何创建一个试用版 例如可以使用30天 因为我会将其发送给一些公司 那么如何使它
  • 如何使用 jsdoc 3 或 jsdoc 记录 Requirejs (AMD) 模块?

    我有两种类型的模块 Require js 主文件 require config baseUrl another path paths some some v1 0 waitSeconds 15 locale fr fr require so
  • Kotlin 数据类的扩展函数

    我有一个数据类 看起来像这样 data class SuggestionResponse val metadata Metadata val response Response data class Response blah blah d
  • Laravel / Eloquent 模型属性可见性

    以前我使用的 ORM 将数据库列直接映射到类属性 这允许您特定的属性可见性 就像您通常限制对某些属性的访问一样 密码 使用 Eloquent 我似乎无法复制这一点 因为数据库列映射到不包含可见性的内部属性数组 我的愿望是将用户密码的访问范围
  • 在 Pandas DataFrame 中的字符串内漂亮地打印换行符

    我有一个 Pandas DataFrame 其中一列包含字符串元素 而这些字符串元素包含我想按字面打印的新行 但它们只是表现为 n在输出中 也就是说 我想打印这个 pos bidder 0 1 1 2 2 3 lt alice lt bob
  • Google API/获取目录联系人

    我需要从谷歌企业目录列表中获取联系人 电话列表 我尝试过 Google Contacts api 它对 我的联系人 下的所有联系人都可以正常工作 但不允许显示 目录 联系人 我有什么用途 如何访问这些联系人 公司联系人 要将用户添加到全局地
  • 跨活动访问领域数据库

    我有 3 项不同的活动 1 扩展了此活动中配置的应用程序和领域 2 数据从第二个活动添加到领域 3 数据将在第三个活动中显示 我无法完成第三部分 我无法在第三个活动中获取 Realm 实例 以下是应用程序 我提到的第一个活动 Overrid
  • Azure 物联网中心反馈接收器 ReceiveAsync 非常慢(15 秒)高延迟

    如果我通过 IoT 中心发送消息 Cloud 2 设备 var serviceMessage new Message Encoding ASCII GetBytes Hello Device serviceMessage Ack Deliv
  • 帮助创建带有弯曲标题部分的 HTML 页面

    我想知道 创建一个顶部标题部分看起来是斜角而不是直角的网页的最佳方法是什么 使用 html css 和图形 请参阅下图作为示例 我不确定如何使用图像 以便它们根据不同的浏览器大小 分辨率扩展 收缩 有人能给我一些帮助吗 或者也许给我指出一个
  • 如何知道我的 Android 设备上是否存在传感器?

    我想知道我的 Android 设备上是否存在传感器 例如加速度计 我正在处理 SensorManager 类 这是我正在使用的代码 sensorMgr SensorManager getSystemService SENSOR SERVIC
  • 由于命名空间为空,Python XPath lxml 无法读取 SVG 路径元素?

    我有一个 SVG Xml 文件 我想从中选择一些元素 为了 MCRE 我已将文件缩减为以下内容
  • pip install 语法允许不安全

    我试着跑 pip install upgrade allow insecure setuptools 但似乎不起作用 我的语法错误吗 这是在 ubuntu 13 10 上 我需要 allow insecure 因为我无法获得 公司代理 SS
  • 移动 Highstock 导航器位置

    是否可以将 Highstock 图表导航器从图表底部移至顶部 是的 这是可能的 请看示例 http jsfiddle net jBUGN http jsfiddle net jBUGN navigator top 40
  • php.ini 不允许我禁用_functions

    我把它放在 php ini 文件中 disable functions popen exec system passthru proc open shell exec show source phpinfo 但我仍然可以调用它们 测试了 e
  • 从 Excel 导入到数据表,跳过最后一列值

    我正在尝试将数据从 Excel 文件导入到数据表 但问题是最后一列值被跳过 其余列的值是完美的 我的 Excel 文件包含以下内容 导入后数据表中的数据如下 我的代码如下 Dim connExcel As New OleDbConnecti
  • 如何加快从栅格中提取缓冲区中土地覆盖类型比例的速度?

    我想提取 10 公里缓冲区中大约 30 000 个 SpatialLines 类对象的空间数据 并计算缓冲线周围每种土地覆盖类型的比例 我第一次使用这个功能crop裁剪我的光栅 然后 我使用了该功能extract 包栅格 计算 10 种土地