是否有 R 函数用于检查指定的 GeoJSON 对象(多边形或多多边形)是否包含指定点?

2024-03-10

我有一系列点

{
  "Sheet1": [
    {
      "CoM ID": "1040614",
      "Genus": "Washingtonia",
      "Year Planted": "1998",
      "Latitude": "-37.81387927",
      "Longitude": "144.9817733"
    },
    {
      "CoM ID": "1663526",
      "Genus": "Banksia",
      "Year Planted": "2017",
      "Latitude": "-37.79582801",
      "Longitude": "144.9160598"
    },
    {
      "CoM ID": "1031170",
      "Genus": "Melaleuca",
      "Year Planted": "1997",
      "Latitude": "-37.82326441",
      "Longitude": "144.9305296"
    }
  ]
}

还有一个具有相同形式的 Geojson 多边形数组,如下所示:

{"type":"FeatureCollection","features":[
{"type":"Feature","id":"01","properties":{"name":"Alabama","density":94.65},"geometry":{"type":"Polygon","coordinates":[[[-87.359296,35.00118],[-85.606675,34.984749],[-85.431413,34.124869],[-85.184951,32.859696],[-85.069935,32.580372],[-84.960397,32.421541],[-85.004212,32.322956],[-84.889196,32.262709],[-85.058981,32.13674],[-85.053504,32.01077],[-85.141136,31.840985],[-85.042551,31.539753],[-85.113751,31.27686],[-85.004212,31.003013],[-85.497137,30.997536],[-87.600282,30.997536],[-87.633143,30.86609],[-87.408589,30.674397],[-87.446927,30.510088],[-87.37025,30.427934],[-87.518128,30.280057],[-87.655051,30.247195],[-87.90699,30.411504],[-87.934375,30.657966],[-88.011052,30.685351],[-88.10416,30.499135],[-88.137022,30.318396],[-88.394438,30.367688],[-88.471115,31.895754],[-88.241084,33.796253],[-88.098683,34.891641],[-88.202745,34.995703],[-87.359296,35.00118]]]}}

我正在尝试使用 R 查找其中包含点的 Geojson 多边形。 例如,我如何知道上面添加的三个点是否在多边形内部?

我发现可能有用的功能是多边形内点函数 https://www.rdocumentation.org/packages/sp/versions/1.3-1/topics/point.in.polygon。但它不支持Geojson格式。

有没有 R 函数或任何方法可以解决这个问题? 如果返回的是多边形的 ID,那将会非常有帮助。


您可以使用草坪包,例如,

x <- '{
"Sheet1": [
  {
    "CoM ID": "1040614",
    "Genus": "Washingtonia",
    "Year Planted": "1998",
    "Latitude": "-37.81387927",
    "Longitude": "144.9817733"
  },
  {
    "CoM ID": "1663526",
    "Genus": "Banksia",
    "Year Planted": "2017",
    "Latitude": "-37.79582801",
    "Longitude": "144.9160598"
  },
  {
    "CoM ID": "1031170",
    "Genus": "Melaleuca",
    "Year Planted": "1997",
    "Latitude": "-37.82326441",
    "Longitude": "144.9305296"
  }
]
}'

feature1 <- '{"type":"Feature","id":"01","properties":{"name":"Alabama","density":94.65},"geometry":{"type":"Polygon","coordinates":[[[-87.359296,35.00118],[-85.606675,34.984749],[-85.431413,34.124869],[-85.184951,32.859696],[-85.069935,32.580372],[-84.960397,32.421541],[-85.004212,32.322956],[-84.889196,32.262709],[-85.058981,32.13674],[-85.053504,32.01077],[-85.141136,31.840985],[-85.042551,31.539753],[-85.113751,31.27686],[-85.004212,31.003013],[-85.497137,30.997536],[-87.600282,30.997536],[-87.633143,30.86609],[-87.408589,30.674397],[-87.446927,30.510088],[-87.37025,30.427934],[-87.518128,30.280057],[-87.655051,30.247195],[-87.90699,30.411504],[-87.934375,30.657966],[-88.011052,30.685351],[-88.10416,30.499135],[-88.137022,30.318396],[-88.394438,30.367688],[-88.471115,31.895754],[-88.241084,33.796253],[-88.098683,34.891641],[-88.202745,34.995703],[-87.359296,35.00118]]]}}'

做一个测试:

lawn_boolean_contains(as.feature(feature1), lawn_point('[144.9817733,-37.81387927]'))
#> FALSE

一次全部:

apply(jsonlite::fromJSON(x)$Sheet1, 1, function(z) {
  lawn_boolean_contains(
    as.feature(feature1), 
    lawn_point(sprintf("[%s,%s]", z['Longitude'], z['Latitude']))
)
})
#>     1     2     3
#> FALSE FALSE FALSE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否有 R 函数用于检查指定的 GeoJSON 对象(多边形或多多边形)是否包含指定点? 的相关文章

随机推荐

  • 如何在ListView中插入对象类型?

    我想在 ListView 中维护 ID 和对象类型 我正在尝试这样做 lstView Items Insert MyObject can t do this because it takes only Int and String 就我而言
  • 使用 Jelly Bean 的简单安全配对(蓝牙)与 NFC 配对

    截至 io2012 和JellyBean 文档 http www android com about jelly bean 现在有一种通过 NFC 配对蓝牙设备的方法 这听起来确实不错 但我找不到任何有关它的文档 我特别想知道这是否适用于不
  • Python:从图像中删除 Exif 信息

    为了减小网站中使用的图像大小 我将质量降低到 80 85 这在一定程度上大大减小了图像尺寸 为了在不影响质量的情况下进一步减小尺寸 我的朋友指出 来自相机的原始图像有很多称为 Exif 信息的元数据 由于网站中的图像不需要保留此 Exif
  • iOS Geofence CLCircularRegion 监控。 locationManager:didExitRegion 似乎没有按预期工作

    我目前正在尝试让我的应用程序使用以下方式监视特定区域CoreLocation然而我发现它似乎没有按预期工作 在我看来 它不能在每个位置设置较小的小半径 即 10m 的情况下工作 我还制作了一个小测试应用程序 它绘制了圆半径在地图上 这样我就
  • 包含文件存储在哪里 - Ubuntu Linux、GCC

    因此 当我们执行以下操作时 include
  • 如何检查 numpy 数组是否已经存在?

    我想知道数组是否已经在代码中的某个位置定义过 就像是a exist 如果存在则给出 True 如果不存在则给出 False I tried a size 但是如果该数组尚不存在 它会给出一条错误消息 这是我想避免的 如果您想知道的话 要求这
  • 如何更改ionic 2本地推送通知图标?

    我使用创建了一个混合应用程序ionic2因为我正在使用科尔多瓦本地推送通知 一切都工作正常 唯一的问题是无法更改图标 在下面我将我的代码粘贴到这里 LocalNotifications schedule id 1 title Test Ti
  • 删除等值线图上的边缘线

    我用Matlab创建了一个极坐标并将其转换为笛卡尔坐标 th r meshgrid 0 0 5 360 pi 180 0 02 1 X Y pol2cart th r 我获取该网格上的数据并生成contourf绘制它 我的问题是我在轮廓图中
  • 从 NSDictionary 转换为 [String:Any?]

    我正在使用 xmartlabs Eureka 构建一个具有动态表单的应用程序 为了填写表格 我必须使用setValues values String Any 但我有表单值NSDictionary变量 我无法将其转换为 String Any
  • 在 Windows 中获取另一个进程命令行

    我正在尝试获取另一个进程的命令行参数 在 WinXP 32 位上 我执行以下操作 hProcess OpenProcess PROCESS QUERY INFORMATION PROCESS VM READ PROCESS TERMINAT
  • 处理大位图

    我只想从我的应用程序打开本机相机应用程序来捕获照片并将其设置为屏幕的背景图像 然后单击按钮旋转它 如果使用 3MP 相机拍摄 照片会旋转 n 次 如果我将相机分辨率设置为 5MP 或更高 应用程序将在第五次单击按钮时强制关闭 照片旋转 4
  • C# 中两个数组的关联

    有两个双精度值数组 我想计算相关系数 单个双精度值 就像 MS Excel 中的 CORREL 函数 C 中有一些简单的单行解决方案吗 我已经发现了名为 Meta Numerics 的数学库 根据这个问题 https stackoverfl
  • Python 调用函数的字符串格式

    有没有办法使用新的格式语法格式化函数调用中的字符串 例如 my request url was 0 get full path format request 所以它调用了该函数get full path 功能inside字符串而不是作为格式
  • 是否有一个很好的 emacs 模式来显示和编辑巨大的分隔符分隔的文件?

    我一直在寻找一段时间 但没有找到一种可以轻松编辑大型制表符 逗号 冒号分隔文件的模式 我一直想要一种确保列始终对齐的模式 就像组织模式表一样 我知道我可以轻松地将整个文件转换为组织模式表 然后在完成后将其返回 但是对于大文件来说 这会变得非
  • 如何在java中创建方法的监听器

    我在实现方法的侦听器时遇到了非常糟糕的时间 在我当前的工作中 我必须每 5 秒请求一个方法 以便验证新信息 因此我想实现一种方法 每次有新信息到来时通知我 每 5 秒丢弃请求方法 我已经阅读过有关观察者模式的内容 但没有成功实施 此致 更多
  • 正则表达式从电子邮件地址中提取顶级域名

    来自电子邮件地址 例如 email protected cdn cgi l email protection email protected cdn cgi l email protection email protected cdn cg
  • 将 os.system() 的输出存储在变量中

    我正在为我的 Hangman 游戏生成一个随机单词 因此想要生成一个随机单词 我正在使用 usr share dict words文件并执行以下操作 def word select import os word os system head
  • 即使登录成功,Yii::app()->user->isGuest 也始终返回 true

    我开始对已通过身份验证的用户和未通过身份验证的用户进行一些区分 为此 我正在使用 Yii app gt user gt id 但是 在确定的视图中 我输入了以下代码 无论我是否登录 成功 我总是收到
  • 监控所有 JavaScript 对象属性(神奇的 getter 和 setter)

    如何在 JavaScript 中模拟 PHP 风格的 get 和 set 魔术 getter setter 很多人说 目前这是不可能的 我几乎可以肯定这是可能的 因为像 nowjs 这样的项目 http nowjs com http now
  • 是否有 R 函数用于检查指定的 GeoJSON 对象(多边形或多多边形)是否包含指定点?

    我有一系列点 Sheet1 CoM ID 1040614 Genus Washingtonia Year Planted 1998 Latitude 37 81387927 Longitude 144 9817733 CoM ID 1663