使用ArcGIS Restful API 生成token和上传shp压缩包获取features
本篇博客简要介绍了如何在使用ArcGIS Restful API生成token, 并使用该token上传shp压缩包
生成Token
上传shp压缩包需要使用的是Portal的Token, 那么需要使用Portal的Restful API
API文档地址 https://<root-url>/arcgis/portalhelp/apidocs/rest/index.html
- 参考文档说明, 打开自己的生成token页面:
https://simpleportal.esricd.local/arcgis/sharing/rest/generateToken
2. 填写用户名, 密码后查看network, 拿到请求token的格式
3. 编写ajax请求生成token
function genToken() {
const url = "https://simpleportal.esricd.local/arcgis/sharing/rest/generateToken"
const data = { username: 'esri_chen', password: '12345678', client: 'requestip',f:'json', expiration: 60}
$.post(url, data).done((d) => {
token = d.token
})
}
上传Shp压缩包
上传Shp压缩包参考自Enterprise的web map的Add Layer from File
web map 地址: https://<root-url>/arcgis/home/webmap/viewer.html
- 打开web map, 选择要加载的图层
- 打开F12查看network
由此可知, 上传shp压缩包, 我们改变token, file即可 - 编写代码
function uploadZip() { var form = document.getElementById('upload') const token = 'kN2ZCLkYENJ3-rwxD_3kjUkLp4RX9v8XhmA-lJsy4c1JeNRdRFYNNQr0R7dk67TSKQzeVkZSmqETbzzZsGqaISv9qMk2cn7qSxI5oFC0ZSmanw7Cw8cSsHiYAzsCztNA3IbQTREAwTrE323y43kGTQ..' formData = new FormData(form); formData.append('f', 'json') formData.append('option', 'on') formData.append('filetype', 'shapefile') formData.append('publishParameters', '{"name":"1980","targetSR":{"wkid":102100},"maxRecordCount":4000,"enforceInputFileSizeLimit":true,"enforceOutputJsonSizeLimit":true,"locationType":"none","generalize":true,"maxAllowableOffset":10.583354500043306,"reducePrecision":true,"numberOfDigitsAfterDecimal":0}') $.ajax({ url:"https://simpleportal.esricd.local/arcgis/sharing/rest/content/features/generate?token=" + token, type:"post", data: formData, processData:false, contentType:false, success:function(res){ console.log(res) }, error:function(err){ alert("网络连接失败,稍后重试",err); } }) }
- 得到features
总结
我们可以通过api生成token并上传shp压缩包得到features, 但是这个features或者featureCollection的格式与arcgis js api 4.x版本实例化Feature的格式不一致, 所以不能直接得到一个Feature, 但是, 我们可以通过features作为gp工具的参数, 来实现上传shp压缩包并加载到地图上的功能
上一篇: yznxing 的动态
下一篇: 多年的开发实用