查找几何点是否在几个多边形之一内

我试图找出几何点是否在几个多边形之一,我工作与mongoose和节点js。 我在Mongoose文档中发现了这个代码。

var polyA = [[[ 10, 20 ], [ 10, 40 ], [ 30, 40 ], [ 30, 20 ]]] query.where('loc').within().geometry({ type: 'Polygon', coordinates: polyA }) // or var polyB = [[ 0, 0 ], [ 1, 1 ]] query.where('loc').within().geometry({ type: 'LineString', coordinates: polyB }) // or var polyC = [ 0, 0 ] query.where('loc').within().geometry({ type: 'Point', coordinates: polyC }) // or query.where('loc').intersects().geometry({ type: 'Point', coordinates: polyC }) 

但他们都是在一个多边形search,我想例如search10多边形。 那可能吗。

谢谢。

查询点是否intersectswithin MultiPolygon中 :

 var polygons = [polyA, polyB, polyC]; var multipolygon = { type: 'MultiPolygon', coordinates: polygons }; var results = query.where('loc').within().geometry(multipolygon); 

现在,如果你想find哪个多边形包含点,使用JSTS :

 // MongoDB query result var point = results[0].loc; // Convert geometries to JSTS var geojsonReader = new jsts.io.GeoJSONReader(); jstsPoint = geojsonReader.read(point); var jstsPolygons = polygons.map(function(polygon, index) { jstsPolygon = geojsonReader.read({type: 'Polygon', coordinates: polygon}); jstsPolygon.__index = index; // or use whatever suits you best return jstsPolygon; }); // Find polygons containing point jstsPolygons.filter(function(jstsPolygon){ return jstsPoint.within(jstsPolygon); }).forEach(function(poly) { console.log('Point is within polygon ' + poly.__index); }); 

这是使用GeoJSON几何的JSTS的一个工作示例。

Interesting Posts