geojson mysql存储_mongodb存储geoJson
在業(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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中英文常见停用词
- 下一篇: linux cmake编译源码,linu