在 geoJson 多边形中查找位置

find location in geoJson polygon

嗨,我有一个 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)?

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

我会使用 turf.js library, in particular the 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);

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