Java 我们可以使用地理空间MongoDB查询检查点[lat,long]是否位于多边形内吗?
我有一个lat long的下方数据,它代表一个社会的多边形。我有5000条如下类型的数据记录。我想使用mongodb地理空间查询来检查给定点(lat,long)(12.948,77.66)是否位于该社会列表中[5000条记录]。我可以使用mongodb地理空间查询来实现它吗?如果是,那么mongodb中的文档结构应该是什么?mongodb查询应该是什么?下面是一个多边形点的示例数据 数据:Java 我们可以使用地理空间MongoDB查询检查点[lat,long]是否位于多边形内吗?,java,mongodb,Java,Mongodb,我有一个lat long的下方数据,它代表一个社会的多边形。我有5000条如下类型的数据记录。我想使用mongodb地理空间查询来检查给定点(lat,long)(12.948,77.66)是否位于该社会列表中[5000条记录]。我可以使用mongodb地理空间查询来实现它吗?如果是,那么mongodb中的文档结构应该是什么?mongodb查询应该是什么?下面是一个多边形点的示例数据 数据: 找到了答案 使用以下java代码以geo json多边形的形式存储在MongoDB中: GeoJsonPo
找到了答案 使用以下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);
尝试使用$GEOIN
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;