![](/img/trans.png)
[英]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.