在 geoJson 多边形中查找位置

问题描述

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

(科罗拉多州)美国

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

和位置

-105.8544607,39.1160152

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

我的问题

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

解决方法

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

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

 var line = turf.lineString([[1,1],[1,2],3],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,41]
]]);

turf.booleanPointInPolygon(pt,poly);

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...