[英]How to check whether a given point lies inside a 2D polygon or not in java .(Common way)
[英]Can we check by using geospatial MongoDB query whether a point[lat ,long] lies inside polygon?
我有一个代表社会多边形的纬度以下数据。我有 5000 条如下类型数据的记录。我想使用 mongodb 地理空间查询来检查给定点(纬度,经度)(12.948,77.66)是否位于内部该社会列表 [5000 条记录]。我可以使用 mongodb 地理空间查询来实现它。如果是,那么 mongodb 中的文档结构应该是什么,一个多边形的查询点 Z685A5F7CC75B4796F6C6E00Z38 样本数据应该是什么?
数据:
"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);
MongoDB查询
db.mygate_geofencing.find({polygons:
{$geoIntersects:
{$geometry:{ "type" : "Point",
"coordinates" : [ 12.947874, 77.677494] }
}
}
});
Java 代码:
创建一个点,然后检查相交的多边形。
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);
地理围栏 Class
@Id
@Field("_id")
private String id;
@Field("polygons")
private GeoJsonPolygon polygons;
@Field("societyName")
private String societyName;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.