Spring Boot(MVC)下空间字段(Geometry)与geojson的自动转换
来源:互联网 发布:淘宝包邮标签怎么设置 编辑:程序博客网 时间:2024/05/29 08:51
我们目前面临的问题是客户端传过来的json数据如何转换为Geometry(Point、LineString),后台的Geometry如何直接转换为JSON。在GIS的世界里有一个标准的GIS JSON格式叫做geojson
。在本文将使用geojson
格式与Geometry对象互相转换。 这里我们的思路是Spring Boot为我们自动注册了MappingJackson2HttpMessageConverter
,在org.springframework.boot.autoconfigure.web.JacksonHttpMessageConvertersConfiguration
如:
@Bean@ConditionalOnMissingBean(value = MappingJackson2HttpMessageConverter.class, ignoredType = { "org.springframework.hateoas.mvc.TypeConstrainedMappingJackson2HttpMessageConverter", "org.springframework.data.rest.webmvc.alps.AlpsJsonHttpMessageConverter" })public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter( ObjectMapper objectMapper) { return new MappingJackson2HttpMessageConverter(objectMapper);}
据此看出Spring Boot是使用当前的Message Converter来实现对象(Geometry)和json之间转换的,我们只需要自定义objectMapper让其支持geojson即可。
添加第三方的依赖:
<dependency> <groupId>com.bedatadriven</groupId> <artifactId>jackson-datatype-jts</artifactId> <version>2.4</version></dependency><repositories> <repository> <id>sonatype-oss</id> <url>https://oss.sonatype.org/content/groups/public</url> </repository></repositories>
自定义object让其支持Geometry与geojson之间的准换:
@Beanpublic ObjectMapper objectMapper(){ ObjectMapper objectMapper = new ObjectMapper(); objectMapper().registerModule(new JtsModule()); return objectMapper;}
这个第三方依赖目前有个bug就是不支持空间坐标系,在一个单一的系统里一般情况下坐标系应该也是一定的,所以不支持问题也不大,所以我们将前面例子http://www.fhadmin.org/的字段映射修改为,:
//@Column(columnDefinition = "geometry(Point,4326)")@Column(columnDefinition = "geometry(Point)")private Point point;
测试控制器:
@RestController@Slf4j@RequestMapping("/cities")public class CityController { @Autowired CityRepository cityRepository; @PostMapping public City testIn(@RequestBody City city){ log.info(city.getPoint().getSRID() + "/" + city.getPoint().getX() + "/" +city.getPoint().getY()); return cityRepository.save(city); }}
测试数据,使用request body向后台POST
如下结果:
{ "name": "南京", "point": { "type": "Point", "coordinates": [ 110.4, 20.1 ] } }
返回值为:
{ "id": 58, "name": "南京", "point": { "type": "Point", "coordinates": [ 110.4, 20.1 ] }}
这时我们实现了自动的Geometry和geojson数据的转换。
阅读全文
0 0
- Spring Boot(MVC)下空间字段(Geometry)与geojson的自动转换
- Geotools中Geometry对象与GeoJson的相互转换
- spatiallite空间数据库转换到leaflet.js的GeoJson格式
- 空间数据类型转化——geometry转geoJson转geoShape
- Spring MVC的自动转换功能 HttpMessageConverter
- Spring MVC的自动转换功能 HttpMessageConverter
- Spring MVC的自动转换功能 HttpMessageConverter
- Spring MVC的自动转换功能 HttpMessageConverter
- Spring MVC的自动转换功能 HttpMessageConverter
- spring boot spring mvc 自动配置类
- spring boot与spring mvc的区别是什么?
- spring mvc开发接收日期字段表单提交,自动转换成Date类型报错,解决办法
- spring mvc开发接收日期字段表单提交,自动转换成Date类型为什么报错?
- GeoJson的生成与解析
- GeoJson格式与转换(shapefile)Geotools
- Spring Boot 自动加载指定包下的拦截器
- Spring boot MVC 二 MVC与Spring简介
- Spring Boot对Spring MVC的配置
- 多点触控
- Android
- ecnu 核反应控制 数学
- 分布式Web服务器架构
- 自己积累的类库说明
- Spring Boot(MVC)下空间字段(Geometry)与geojson的自动转换
- 基于ssm框架的练手小项目
- popwindows
- 自学英语的几个网站(免费网站)
- 递归排列(低效)
- 异常捕捉
- bzoj 3209: 花神的数论题 && 喵哈哈村的秘境探险(四)
- MFC线程使用
- LOG4j配置