已有条件:一个有四万条数据的postgres数据表,但是里面的shape属性是字符串类型的,而不是发布服务所期望的“几何”类型。
1.将原数据表中的数据导出为csv文件(如果已经有shp文件,可以直接从第3步开始)
右键数据表,点击“导出向导”,选择csv文件,然后一直点击“下一步”直至“开始”,“完成”。
2.打开Qgis软件,将scv文件转为shp文件
依次点击图中所示按钮,选择刚刚导出的csv文件,选择wkt文本和对应的字段,点击添加
然后在出现的图层,右键点击图层,“导出”,“另存要素为”。选择格式为shapefile,取个名字,“OK”
3.打开arcMap软件。正式开始发布服务的流程。
a)创建企业级地理数据库
b)添加数据库链接
(看到这里的伙伴应该对以上两步不会陌生,网上随便查查都有操作)
c)右键刚刚的添加的数据库连接,“新建”->"要素类”,取名,根据实际选择要素类型/几何属性,然后下一步,选择坐标系,然后一直下一步到下面第三张图,“导入”,选择shp文件,完成。
d)右键点击新建的要素类,加载数据,选择上一步对应的shp文件
e)将要素类拖入图层,点击“文件”->“共享为”->"服务”,发布服务,选择连接等信息,直至最后“分析”,"发布。
【分析过程中会出现:地理数据库未注册到服务器->右键->数据源注册到服务器->输⼊名称->确
认->重分析后发布 】
如此要素服务就发布成功了。
4.在前端使用服务。
// 1创建featureLayer
const layer = new FeatureLayer({
url: 服务的url,
outFields: ['*'],
visible: true
})
// 2.创建查询
const query = layer.createQuery()
// 3.设置查询参数
let queryParams = ""
....
// 4.执行查询
query.where = queryParams
layer.queryFeatures(query)
.then(result => {
// 5.处理服务的结果,在这里添加到layer中
console.log(result)
})