我们是否可以使用地理空间 MongoDB 查询来检查点 [lat ,long] 是否位于多边形内?



我有一个经度的以下数据,它代表一个社会的多边形。我有 5000 条数据类型的记录,如下所示。我想使用 mongodb 地理空间查询来检查给定点(纬度,经度((12.948,77.66(是否位于该社会列表 [5000 条记录] 内。我可以使用 mongodb 地理空间查询来实现它吗?如果是,那么 mongodb 中的文档结构应该是什么,mongodb 查询应该是什么?下面是一个社会多边形点的示例数据。

数据:

"geofence": [
{
"latitude": 12.9475827,
"longitude": 77.67696
},
{
"latitude": 12.9477697,
"longitude": 77.674655
},
{
"latitude": 12.9463797,
"longitude": 77.67454
},
{
"latitude": 12.946131,
"longitude": 77.675466
},
{
"latitude": 12.947066,
"longitude": 77.675473
},
{
"latitude": 12.947198,
"longitude": 77.676847
},
{
"latitude": 12.94757,
"longitude": 77.67695
}
]

找到了答案。

使用以下java代码以geo-json多边形的形式存储在MongoDB中:

GeoJsonPolygon geoJsonPolygon = new GeoJsonPolygon(pointsList);

蒙戈数据库查询

db.mygate_geofencing.find({polygons:
{$geoIntersects:
{$geometry:{ "type" : "Point",
"coordinates" : [ 12.947874, 77.677494] }
}
}
});

爪哇代码:

创建一个点,然后检查相交面。

GeoJsonPoint geoJsonPoint = new GeoJsonPoint(truncate(customerLat,6),truncate(customerLng,6));
Query query = new Query().addCriteria(Criteria.where("polygons").intersects(geoJsonPoint));
List<GeoFencing> mygateGeoFencingList = mongoTemplate.find(query, GeoFencing.class);

地理围栏类

@Id
@Field("_id")
private String id;
@Field("polygons")
private GeoJsonPolygon polygons;
@Field("societyName")
private String societyName;

相关内容

最新更新