日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

geojson mysql存储_mongodb存储geoJson

發(fā)布時(shí)間:2024/3/24 数据库 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 geojson mysql存储_mongodb存储geoJson 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在業(yè)務(wù)需求中,需要對地理坐標(biāo)進(jìn)行存儲,mongodb是一種很好的選擇,因?yàn)樗峁┝嗽S多關(guān)于地理位置的方法,但是它提供的GeoJson卻是一個(gè)接口,當(dāng)然也提供了對應(yīng)的點(diǎn)、線、面的實(shí)現(xiàn)類,不過在業(yè)務(wù)需求中,往往需要前端傳一個(gè)GeoJson數(shù)據(jù)格式,后端做一個(gè)點(diǎn)、線、面的適配,已達(dá)到簡單使用,簡單存儲的功能;

基于上面的場景,寫了這篇文章,下面就貼代碼了(關(guān)于maven及mongdb的配置下面就不貼了,只貼核心代碼)

1.首先自定義一個(gè)GeoJson類

@Data

public class CustomGeoJson implements GeoJson {

private String type;

private Iterable> coordinates;

}

2.添加mongdb的convert轉(zhuǎn)換器,讀寫用的

1)CustomReadGeoJsonConverter

@ReadingConverter

public class CustomReadGeoJsonConverter implements Converter {

@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;

}

}

2)CustomWriteGeoJsonConverter

@WritingConverter

public class CustomWriteGeoJsonConverter implements Converter {

@Override

public Document convert(CustomGeoJson geoJson) {

Document document = new Document();

document.put(GeoJsonConstant.TYPE, geoJson.getType());

document.put(GeoJsonConstant.COORDINATES, geoJson.getCoordinates());

return document;

}

}

3.geoJson數(shù)據(jù)的鍵名稱

public final class GeoJsonConstant {

/**

* type(類型)

*/

public static final String TYPE = "type";

/**

* coordinates(坐標(biāo)位置)

*/

public static final String COORDINATES = "coordinates";

}

4.geoJson的type

public final class GeoJsonTypeConstant {

/**

* 點(diǎn)

*/

public static final String POINT = "Point";

/**

* 線

*/

public static final String LINESTRING = "LineString";

/**

* 面

*/

public static final String POLYGON = "Polygon";

}

實(shí)體類

@Data

@Document(collection = "map_data")

public class MapData {

@Id

private String id;

private CustomGeoJson geometry;

}

6.TestController

@RestController

@Api

public class TestController {

@Autowired

private MongoTemplate mongoTemplate;

@PostMapping("test")

public MapData test(@RequestBody MapData mapData){

return mongoTemplate.insert(mapData);

}

}

7.測試效果圖

swagger入?yún)?/p>

企業(yè)微信截圖_08821638-8255-4b6f-92aa-3a85efa2c2c9.png

8.mongdb 存儲數(shù)據(jù)的值

企業(yè)微信截圖_0ee06576-194f-4ad1-bf60-cd320312afb0.png

以上就是GeoJson存儲地理位置的實(shí)現(xiàn);

有疑問或者有更好的實(shí)現(xiàn)方式可以討論,本文屬于原創(chuàng),轉(zhuǎn)載需指明出處

總結(jié)

以上是生活随笔為你收集整理的geojson mysql存储_mongodb存储geoJson的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。