首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Turf.js检测直线串和多边形之间的直线交点

使用Turf.js检测直线串和多边形之间的直线交点
EN

Stack Overflow用户
提问于 2020-06-22 19:01:19
回答 1查看 529关注 0票数 0

我正在尝试写一段JavaScript代码,允许用户分析他们在地图上绘制的路线。在用户绘制完他们的路线之后,我想确定他们绘制的路线是否跨越了任何感兴趣的区域。

为此,我在Turf.js中使用了lineIntersect方法,它应该允许我传递一个LineStringMultiPolygon

我已经创建了一个Turf.js MultiPolygon

代码语言:javascript
运行
复制
{
  "type": "Feature",
  "properties": {},
  "geometry": {
    "type": "MultiPolygon",
    "coordinates": [
      [
        [
          51.50836874890726,
          -0.091989636996398
        ],
        [
          51.50797826040486,
          -0.088994163337176
        ],
        [
          51.507701047593805,
          -0.085230241948645
        ],

(完整的对象有太多的字符无法在这里发布,所以我将完整的输出粘贴到CodePen)

并将用户的路由转换为Turf.js LineString

代码语言:javascript
运行
复制
{
  "type": "Feature",
  "properties": {},
  "geometry": {
    "type": "LineString",
    "coordinates": [
      [
        51.50350693825546,
        -0.027165818854444357
      ],
      [
        51.50115610069437,
        -0.041240038776924066
      ]
    ]
  }
}

但是,当我将这两个对象传递给lineIntersect方法时:

代码语言:javascript
运行
复制
turf.lineIntersect(myLineString, myMultiPolygon);

我收到以下错误:

代码语言:javascript
运行
复制
Uncaught Error: coordinates must contain numbers
    com turf/turf/turf.min.js:1
EN

回答 1

Stack Overflow用户

发布于 2020-06-27 17:33:29

在特征数据中的第8782行有一个额外的编号4

代码语言:javascript
运行
复制
(Line 8782)
        [4
          51.49960254940379,
          -0.093191432240797
        ],

一旦它被消除,你就可以使用它了。

代码语言:javascript
运行
复制
...
var feat1 = ... //that corrected code
var turf_pgon1 = turf.polygon(feat1.geometry.coordinates);
var line1 = {
  "type": "Feature",
  "properties": {},
  "geometry": {
    "type": "LineString",
    "coordinates": [
      [
        51.50350693825546,
        -0.027165818854444357
      ],
      [
        51.50115610069437,
        -0.041240038776924066
      ]
    ]
  }
}

// turf-intersection
var ans = turf.lineIntersect(line1, turf_pgon1);

来得到交叉点的坐标。

代码语言:javascript
运行
复制
var xy1 = ans.features[0].geometry.coordinates; //[ 51.503118870662334, -0.02948913916413884 ]
var xy2 = ans.features[1].geometry.coordinates; //[ 51.50157899855393, -0.038708193285440035 ]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62512922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档