是否可以使用JavaScript(通过d3,topojson或任何其他方式)确定给定纬度,lon中的GeoJSON点是否位于给定的GeoJSON多边形内?
例如,我可以根据教程here绘制一张显示英国国家/地区的地图。
然后,我有一些点有坐标,但没有迹象表明它们在哪个国家。
我想显示每个国家/地区的总点数。
我可以确定哪个国家/地区包含浏览器中的每个点,或者我是否需要使用PostGIS或类似工具在服务器上预处理我的点数据?
答案 0 :(得分:10)
似乎d3
涵盖了https://github.com/d3/d3-geo#geoContains
d3.geoContains(object,point)
当且仅当指定的GeoJSON对象包含指定的点时返回true,如果对象不包含该点,则返回false。必须将该点指定为以度为单位的双元素数组[经度,纬度]。对于Point和MultiPoint几何,使用精确测试;对于一个球体,总是返回true;对于其他几何,应用epsilon阈值。
答案 1 :(得分:0)
扩展 @thedude 答案,如果您需要在给定的GeoJSON上多次检查,也可以使用geojson-lookup。
答案 2 :(得分:0)
Turf.js 提供了一个名为 boolean-point-in-polygon
的函数例如:
var pt = turf.point([-77, 44]);
var poly = turf.polygon([[
[-81, 41],
[-81, 47],
[-72, 47],
[-72, 41],
[-81, 41]
]]);
turf.booleanPointInPolygon(pt, poly);
//= true