java api 自帶的mongodb實體無法滿足環狀多邊形的區域匹配(大概是我沒用對方法可能)所以我們要自定義一個空間坐標類型
廢話不多說 上代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/** * * @author cy */ @Configuration @ReadingConverter public class CustomReadGeoJsonConverter implements Converter<Document, CustomGeoJson> { @Override public CustomGeoJson convert(Document document) { CustomGeoJson geoJson = new CustomGeoJson(); geoJson.setType(document.get(GeoJsonConstant.TYPE, String. class )); geoJson.setCoordinates(document.get(GeoJsonConstant.COORDINATES, Iterable. class )); return geoJson; } } |
1
2
3
4
5
6
7
8
9
10
11
|
@Configuration public class Config { @Autowired private CustomReadGeoJsonConverter customReadGeoJsonConverter; @Bean public MongoCustomConversions customConversions() { List<Converter<?, ?>> converterList = new ArrayList<>(); converterList.add(customReadGeoJsonConverter); return new MongoCustomConversions(converterList); } } |
自定義的空間坐標類型插入實體
其中的coordinates 可自定義插入point
1
2
3
4
5
6
7
8
9
10
|
/** * @author cy */ @Data public class CustomGeoJson implements GeoJson, Serializable { private String type; private Iterable<?> coordinates; } |
在我們定義的mongodb實體中加入我們自定義的類型
1
2
3
4
5
6
7
8
9
10
11
12
13
|
/** * @author cy * @since 2021-10-20 */ @Data @Document (collection = "demo_mdb" ) public class DemoMdb implements Serializable { private String id; @GeoSpatialIndexed (type = GeoSpatialIndexType.GEO_2DSPHERE) private CustomGeoJson customGeoJson; } |
插入數據
1
2
3
4
5
6
7
8
9
10
|
public void saveData() { //這里自定義point點集合(這里不固定格式參照mongdb官方文檔) List<List<Point>> pointList = new ArrayList<>(); DemoMdb db= new DemoMdb(); //自行查看需要的類型 db.setType( "***" ); db.setCoordinates(pointList); //mongoTemplate自行引入不做贅述 mongoTemplate.insert(db, DemoMdb . class ); } |
查詢數據
1
2
3
4
5
6
7
8
9
|
/** ** 經度x緯度y **/ public List<DemoMdb> findData(String x, String y) { Query query = new Query(Criteria.where( "customGeoJson" ). intersects( new GeoJsonPoint(Double.valueOf(x), Double.valueOf(y)))); List<DemoMdb> dbList = mongoTemplate.find(query, DemoMdb. class ); return dbList; } |
只是一種方法,還不完美歡迎評論指教
到此這篇關于springboot + mongodb 通過經緯度坐標匹配平面區域的方法的文章就介紹到這了,更多相關springboot mongodb 經緯度內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_43947404/article/details/121024360