繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM