springboot + mongodb 通過經緯度坐標匹配平面區(qū)域的方法
java api 自帶的mongodb實體無法滿足環(huán)狀多邊形的區(qū)域匹配(大概是我沒用對方法可能)所以我們要自定義一個空間坐標類型
廢話不多說 上代碼
/** * * @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; } }
@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
/** * @author cy */ @Data public class CustomGeoJson implements GeoJson, Serializable { private String type; private Iterable<?> coordinates; }
在我們定義的mongodb實體中加入我們自定義的類型
/** * @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; }
插入數據
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); }
查詢數據
/** ** 經度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 通過經緯度坐標匹配平面區(qū)域的方法的文章就介紹到這了,更多相關springboot mongodb 經緯度內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
mongoDB 多重數組查詢(AngularJS綁定顯示 nodejs)
這篇文章主要介紹了mongoDB 多重數組查詢(AngularJS綁定顯示 nodejs),需要的朋友可以參考下2017-06-06Mongodb?刪除文檔Delete與Remove的區(qū)別解析
這篇文章主要介紹了Mongodb?刪除文檔Delete與Remove的區(qū)別,要從集合中刪除所有文檔,請將空過濾器文檔傳遞{}給該?db.collection.deleteMany()方法,本文通過示例代碼介紹的非常詳細,需要的朋友可以參考下2023-08-08Windows系統(tǒng)下安裝MongoDB并內網穿透遠程連接
這篇文章主要給大家介紹了關于Windows系統(tǒng)下安裝MongoDB并內網穿透遠程連接的相關資料,文中通過圖文將步驟介紹的非常詳細,對大家學習或者使用MongoDB具有一定的參考學習價值,需要的朋友可以參考下2023-03-03