gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 00:31:22 24 4
gpt4 key购买 nike

我有一个代表社会多边形的经纬度数据。我有 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);

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;

关于java - 我们可以使用地理空间 MongoDB 查询来检查点 [lat ,long] 是否位于多边形内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58012282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com