我已经搜索了一个小时左右,但似乎找不到解决方案。
我的 Node.js 应用程序中有一个定义的多边形,存储为:
[[-0.4449,51.4532],[-0.4586,51.4562],[-0.4591,51.4572],...
其中每个点都以 [lng,lat]
形式给出。
在我的 MongoDB 集合中,我有具有以下结构的对象:
_id: ...
givenID: ...
location: [lng, lat]
...
我将 location
属性表示为:
location: {
type: [Number]
},
在我的 Mongoose
架构中。
我可以查询所有记录,架构
正确映射位置
,并且按预期返回[lng, lat]
,但我似乎无法对集合中的任何文档执行相交
。
我的查询如下:
let geoJson ={
"type": "Polygon",
"coordinates": geozone
};
try {
const test = await GpsLog.where('location').intersects().geometry({
type: "Polygon",
coordinates: geozone
});
其中geozone
是上面列出的多边形。
我在每个文档中的位置
上也有一个2dsphere
索引以供引用。
如果我将geospatial type
作为LineString
传入,我会返回0条记录,但是将其作为Polygon
传入会给出geojson坐标必须是一个数组
,但据我所知它们是一个数组(显然)。
我是不是漏掉了什么?我确信这个错误是一些我没有发现的小错误。
最佳答案
愚蠢的错误,坐标
属性需要包装在另一组[]
中才能成为有效的多边形
。现在工作正常。
关于node.js - Mongoose 地理空间与多边形相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52858470/