目录
前言:
上一文中我们已经解析好上传的shp.zip,获取到shp中的空间几何信息
本文中将记录如何存储至pg 的空间库 和从空间库中调取并加载至arcgis 地图中
(由于本人已经好久没有做java后台,只能简单叙述下)
一、存储至数据库
1、先将解析好的数据转成wkt格式数据
解析好的shp数据,可以看到每条数据中包含 geometry (存储空间信息), properties(存储属性信息)和默认的 type:"Feature"
转换成wkt格式:
//导入依赖
import WKT from 'terraformer-wkt-parser'
//调取方法
let wktData =WKT.convert(item.geometry);
转换好的wkt格式数据:
2、后台编写:
sql语句新增一条几何信息:
<insert id="insert" keyProperty="id" useGeneratedKeys="true">
insert into GEO_LQ(GEO)
values (ST_GeomFromText(#{geo},4490))
</insert>
其中GEO 为表中字段信息,geo为传入的字段值
主要是用到 ST_GeomFromText(xxx,4490) 这个空间函数
存储到pg库中的数据格式为:
参考资料:
二、数据库中调取并加载至web端arcgis 地图中
1、数据库调取:
需要用到 ST_AsText(geo) 和 st_asgeojson(geo) 这两个函数
第一个是将存储好的geo数据转换成wkt 格式的输出
第二个是将存储好的geo数据转换成geojson 格式的输出
这里我们用到的是第二个,如下所示:
2、将拿到的geojson数据加载至地图中
//导入转化的依赖
import ArcGIS from "terraformer-arcgis-parser"
//转化的方法 //需要将geojson转化成arcgis json 才能加载到arcgis 的地图中
geoToArcgis(geojson) {
let esrijson = ArcGIS.convert(geojson);
var geometry = geometryJsonUtils.fromJSON(esrijson);
return geometry;
},
//加载至地图中
let geometry = this.geoToArcgis(geojson);//geojson就是取到的geojson数据
geometry.spatialReference = new this.mapObj.SpatialReference({wkid: 4490});
let gra = new Graphic({
geometry: geometry,
symbol: xxSb
});
tempLayer.add(gra);
写的简单,大家自行参考