在上一篇文章利用hibernate-spatial让Spring Data JPA支持空间数据,我们使用hibernate spatial
,spring data jpa
成功支持空间字段的映射与增删查改。但是我们目前面临的问题是客户端传过来的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之间的准换:
@Bean
public ObjectMapper objectMapper(){
ObjectMapper objectMapper = new ObjectMapper();
objectMapper().registerModule(new JtsModule());
return objectMapper;
}
这个第三方依赖目前有个bug就是不支持空间坐标系,在一个单一的系统里一般情况下坐标系应该也是一定的,所以不支持问题也不大,所以我们将前面例子的字段映射修改为,:
//@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数据的转换。
源码地址:
http://www.wisely.top/2017/06/28/spring-boot-mvc-geometry-geojson/
相关推荐
【标题】:GeoJSON与Geometry SHP格式转换详解 【描述】:在Java开发中,经常需要处理不同地理数据格式的转换,特别是GeoJSON和Geometry SHP格式之间的互换。本篇文章将对这两种格式的数据转换过程进行详尽的阐述,...
### 空间数据的转换与处理 #### 投影变换 空间数据是地理信息系统(GIS)的关键组成部分,GIS的工作流程主要包括空间数据的采集、加工、存储、分析和展示等环节。由于原始数据可能在数据结构、组织形式、表达方式...
**SuperMap iMobile for Android 数据集与 GeoJSON 格式转换详解** 在移动GIS应用中,数据交换和格式转换是至关重要的环节。SuperMap iMobile for Android 是一款强大的移动GIS平台,它支持多种数据格式,其中包括...
其中,空间坐标系的转换是一项重要的功能,尤其是在需要将不同坐标系下的地理数据进行集成与分析时。本文将详细介绍如何利用Oracle提供的`MDSYS.CS_SRS`表以及`sdo_cs`包来进行空间坐标的转换,并提供实用的操作步骤...
本文将深入探讨如何处理和使用“中国省市区县行政区划边界GeoJSON数据”,以及与JavaScript开发相关的地图技术。 首先,"中国省市区县行政区划边界GeoJSON数据"是指包含中国所有省份、城市、区县行政区域边界信息的...
GeoJSON是一种基于JSON(JavaScript Object Notation)的地理编码数据格式,用于表示地理空间信息。在给定的“geoJson.rar”压缩包中,我们很可能找到了一个或多个GeoJSON文件,这些文件通常用于存储地理坐标数据,...
GeoJSON是一种轻量级的数据交换格式,用于存储地理空间数据,尤其在Web应用程序中非常常见。它是基于JSON(JavaScript Object Notation)语法的,因为JSON是互联网上最广泛接受的数据交换格式之一,易于人类阅读和...
获取任意 GeoJSON 对象并将其转换为 Geometry 或 GeometryCollection 参数 范围 类型 描述 geojson 特征,几何,特征集合,几何集合 要转换的 geojson 例子 var poly = { "type" : "Feature" , "properties" : { ...
在这个过程中,可能还需要处理缺失数据、数据清洗、坐标系转换(如从EPSG:4326转换为其他坐标系统),以及根据实际需求定制geoJSON输出的属性字段。 通过以上步骤,我们可以将Human数据有效地转换为geoJSON格式,使...
- **与其他GIS数据格式互转**:Geotools支持多种GIS格式,可以方便地将GeoJson与其他格式(如Shapefile、KML等)互相转换。 在实际应用中,你可能需要先导入这三个库到你的Java项目中,然后通过编程接口来实现...
总之,“Three.js渲染GeoJSON”是一个展示如何将地理空间数据与3D图形技术结合的示例,它可以帮助开发者提升Web应用程序的视觉效果和用户体验。通过学习和应用这个项目,你可以掌握将GeoJSON数据转换为3D可视化的...
### 利用Python实现Shp格式向GeoJSON的转换方法 #### 一、简介 在地理信息系统(GIS)领域中,不同的数据格式有着各自的应用场景。例如,Shapefile(.shp)是一种广泛使用的矢量数据格式,尤其适用于桌面GIS软件如...
本文将深入探讨如何利用ArcGIS API for JavaScript 4.5版本实现二三维地图中添加GeoJSON数据,以及GeoJSON数据与ArcGIS JSON数据格式之间的转换。 GeoJSON是一种开放的标准格式,用于存储地理空间数据,它基于JSON...
在本案例中,“GeoJSON全国地图,下钻到区级”意味着提供的数据集包含了中国所有区县级别的地理信息,支持用户进行深入的地图探索,例如在Echarts这样的数据可视化库中实现逐级缩放和下钻功能。 Echarts是一个基于...
Geojson是一种基于JSON格式的数据交换标准,主要用于地理空间数据的存储和交换。它结合了JSON的简洁性和GIS(地理信息系统)的数据模型,使得地理信息在Web应用中更加易用和可交互。本压缩包“各省份Geojson数据.zip...
postgis-geojson 用于PostGIS Geometry对象的GeoJSON Jackson序列化器和反序列化器。GeoJSON支持该库支持对GeoJSON规范中定义的所有序列化/反序列化。 下面给出了GeoJSON几何对象与PostGIS对象之间的关系: GeoJSON ...
《深入理解GeoJSON格式与河南省行政区划矢量数据》 GeoJSON是一种开放的地理空间数据格式,主要用于存储地理坐标数据,如点、线和多边形。它基于JSON(JavaScript Object Notation)语法,因为JSON在Web开发中广泛...
每个`Feature`代表一个地物,如国家,其`geometry`字段定义了地物的形状,`properties`则包含附加信息。 通过这种格式,开发者可以轻松地解析和渲染地图,同时支持跨平台和跨应用程序的数据交换。例如,你可以使用...
全球GEOJSON是一种数据格式,用于存储地理空间信息,它基于JSON(JavaScript Object Notation)标准,被广泛应用于Web地图服务、地理信息系统和数据分析等领域。GeoJSON提供了一种轻量级的方式来表示地理坐标数据,...
将有效的GeoJSON多边形转换为线串 草皮多边形到线串模块 turf.polyToLineString(polygon) 采用GeoJSON Polygon功能并将其作为GeoJSON线串返回。 参数 范围 类型 描述 polygon 多边形 GeoJSON多边形 例子 var ...