首页 > 解决方案 > 在 geoJson 多边形中查找位置

问题描述

嗨,我有一个geoJSON区域的文件

(科罗拉多州)美国

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              -109.0283203125,
              37.020098201368114
            ],
            [
              -102.06298828125,
              37.020098201368114
            ],
            [
              -102.06298828125,
              40.9964840143779
            ],
            [
              -109.0283203125,
              40.9964840143779
            ],
            [
              -109.0283203125,
              37.020098201368114
            ]
          ]
        ]
      }
    }
  ]
}

和一个位置

-105.8544607,39.1160152

我有很多不同地区的geoJSON文件,所以我想知道收到的Condinates的位置

我的问题

如何验证-105.8544607,39.1160152多边形中是否存在位置()?

标签: javascriptgisgeospatialgeojsonpoint-in-polygon

解决方案


虽然科罗拉多州是一个微不足道的案例(只需将东/西角与您的点经度和北/南与纬度进行比较),我假设您也希望能够处理非方形状态。

我会使用turf.jslibrary,特别是BooleanContains方法:

 var line = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]);
 var point = turf.point([1, 2]);

 turf.booleanContains(line, point);

或者可能booleanPointInPolygon

var pt = turf.point([-77, 44]);
var poly = turf.polygon([[
  [-81, 41],
  [-81, 47],
  [-72, 47],
  [-72, 41],
  [-81, 41]
]]);

turf.booleanPointInPolygon(pt, poly);

我看不出有太大的区别,但这可能取决于您的数据来自哪里以及它是几何图形还是特征。


推荐阅读