mongodb存储geoJson – beanprocesser – 简书

沙海
沙海
沙海
994
文章
2
评论
2021年4月21日03:53:37
评论
1 2011字阅读6分42秒
摘要

mongodb存储geoJsonbeanprocesser

mongodb存储geoJson

beanprocesser

简书作者

2020-01-02 11:14打开App

在业务需求中,需要对地理坐标进行存储,mongodb是一种很好的选择,因为它提供了许多关于地理位置的方法,但是它提供的GeoJson却是一个接口,当然也提供了对应的点、线、面的实现类,不过在业务需求中,往往需要前端传一个GeoJson数据格式,后端做一个点、线、面的适配,已达到简单使用,简单存储的功能;

基于上面的场景,写了这篇文章,下面就贴代码了(关于maven及mongdb的配置下面就不贴了,只贴核心代码)

1.首先自定义一个GeoJson类

@Data public class CustomGeoJson implements GeoJson { private String type; private Iterable<?> coordinates; } 

2.添加mongdb的convert转换器,读写用的 1)CustomReadGeoJsonConverter

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

2)CustomWriteGeoJsonConverter

@WritingConverter public class CustomWriteGeoJsonConverter implements Converter<CustomGeoJson, Document> { @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数据的键名称

public final class GeoJsonConstant { /** * type(类型) */ public static final String TYPE = "type"; /** * coordinates(坐标位置) */ public static final String COORDINATES = "coordinates"; } 

4.geoJson的type

public final class GeoJsonTypeConstant { /** * 点 */ public static final String POINT = "Point"; /** * 线 */ public static final String LINESTRING = "LineString"; /** * 面 */ public static final String POLYGON = "Polygon"; } 
  1. 实体类
@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入参

企业微信截图_08821638-8255-4b6f-92aa-3a85efa2c2c9.png

8.mongdb 存储数据的值

企业微信截图_0ee06576-194f-4ad1-bf60-cd320312afb0.png

以上就是GeoJson存储地理位置的实现;

有疑问或者有更好的实现方式可以讨论,本文属于原创,转载需指明出处

© 著作权归作者所有,转载或内容合作请联系作者

继续阅读
weinxin
资源分享QQ群
本站是一个IT技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
沙海
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: