ArcGIS Pro的arpx项目在ArcGIS Server中发布要素服务(FeatureServer)

写在前面

前一段时间做ArcGIS 的javascript开发,对arcgis的服务概念比较混乱,只记得当时使用arcgis pro直接发布要素服务,然后基于javascript开发就够了,但是arcgis pro是portal托管服务,你不需要自己的arcgis server服务器就能发布,好处是方便,坏处是真恶心人,过几天就不给用了,不能公开访问,必须要登录账号,而且最恶心人的是什么,我为了买它800块一年的Arcghis pro服务,特地办了visa信用卡,结果后面买了好几次没有买成功,还冻结信用卡余额,冻结了一个多月,真是把人恶心惨了。ESRI ESRI ESRI!

还有更恶心人的事情,我在淘宝上找商家教我一下,就简单说一下Feature Server的发布过程,然后叫他帮我暂时发布一下服务,我说给200,他先说好,后面又说要我500,不是!就简单动动手花个半个小时就搞定的事情,要坑我500???我特么、、、我真被搞无语了,淘宝店家叫"水信科技"。

还想吐槽的是,网上真没有人遇到我这样的情况吗?压根没有人简单地阐述如何在ArcGIS Server中发布FeatureServer,ESRI官方文档也是反人类,说不明白。今天我就把这价值500元的教程免费发出来,我就不信这个世道只有利益至上吗?我就是要做好事。

背景

  • 为了方便MapsSDK for javascript开发,需要发布FeatureServer服务在本地服务器上,脱离Arcgis online这个恶心包。

目的

  • 将ArcGIS pro的arpx项目作为要素服务(Feature Server),发布在ArcGIS Server上。
  • 最终效果:

材料

  • ArcGIS Server(10.8.1 (内部版本 14362))
  • ArcMap 10.8.1(这个有重要作用)
  • ArcGIS Pro 3.1
  • Postgresql 12.x(不要用9也不要用17版,其他版本不知道,反正Arcgis软件里面默认只支持9-12的版本)

此外,还要准备两个地方的文件,拷贝出来备用:

  1. keycodes,启用企业级地理数据库要用。(ArcGIS Server服务器上的授权文件)
  2. st_geometry.dll用于postgresql支持企业级地理数据库扩展。(ArcGIS Server服务器上的)

位置:

  1. C:\Program Files\ESRI\License10.8\sysgen
  2. C:\Program Files\ArcGIS\Server\DatabaseSupport\PostgreSQL\12\Windows64

过程

一、软件安装及文件准备

这些软件都可以安装在同一台机器上,也可以不在同一台机器上,推荐pg数据库与arcgis server安装同一台电脑上。

  1. ArcGIS Pro安装,略(https://pan.baidu.com/s/1u1CrFUygQDYK3EZKNpj43w?pwd=bkw4 提取码: bkw4)

  2. ArcGIS Server安装,略(https://pan.baidu.com/s/1EMYRIpNiVO1IV-tty49bkg?pwd=aazn 提取码: aazn)

  3. ArcMap安装,略(https://pan.baidu.com/s/1EMYRIpNiVO1IV-tty49bkg?pwd=aazn 提取码: aazn)

  4. Postgresql安装,记得装12,略(https://www.enterprisedb.com/downloads/postgres-postgresql-downloads)

  5. Postgresql配置
    首先将上面提到的st_ge0metry.dll和pgsqlengine.dll拷贝到postgresql安装目录下的lib目录下,然后配置一下\PostgreSQL\12\data目录下的pg_hba.conf在最后一行加上(直接复制,空格个数无所谓):

    host all all 0.0.0.0/0 md5

还没完成,还要使用pgadmin连接本地postresql,创建一个数据库,然后创建一个新的用户sde,arcgis中不能使用默认的postgres用户,不然启用企业级地理数据库时会报错。

↑创建数据库,使用template1

↓创建用户sde,一定要赋予所有权限

二、在ArcMap中连接并生成.sde数据库并启用企业级地理数据库

这里需要说明一下是什么意思。我们经常接触的地理数据库是.gdb,我们通常将raster或者shp等文件存在gdb数据库中,sde也是和gdb一个意思,只不过他是基于关系数据库的(postgresql或者sql server、oracle等),而gdb直接存在文件中。而它发布要素服务必须要是所有的图层的源都是存在sde数据库中的,所以我们需要sde数据库才能发布featureServer。如果你的项目是基于gdb或者直接从磁盘中加载的shp的话,也不要担心,只需要将shp导入sde,然后在图层属性中设置一下数据源就成功切换到sde了的,很简单,可以无损切换。

为什么要用ArcMap来生成sde而不用ArcGIS Pro呢?其实我最先开始就是ArcGIS Pro中连接pg数据库并启用企业级地理数据库的,但是遇到了很多问题,比如:

  1. 在连接pg数据库时,他给我显示一个Server=;Port=5432,我以为只需要在=后面输入localhost就行了,结果怎么都连不上,还换了几个版本的pg数据库,最后在网上搜索发现只需要删掉这一行的内容,只输入localhost就能连接了,我只能说ESRI你tm煞笔zz吧?故意误导人,气煞了。
  2. 执行启用企业级地理数据库时,选了sde,填写了keycodes文件,然后出现st_geometry库ArcGIS版本与使用的预期版本不匹配
    记住,如果不启用企业级地理数据库的话,shp文件是导入不进去的。

最后不得已在ArcMap10.8中启用,然后成功了。

启用过程暂时略吧,反正就是在arcmap中创建数据库连接,选择postgresql然后连接,最后在连接的sde数据库上右键点击启用企业地理数据库,然后要选择前面说到的keycodes文件,等一会儿就启用成功了,他会在postgresql中创建很多数据库表。

三、在ArcGIS Server上注册sde数据库

为什么要在ArcGIS Server上注册sde数据库?因为我也不知道,反正你不注册上服务器的话,服务器也拿不到数据库里面的数据,就无法发布成功。我的猜测是:

因为你把shp数据放入sde数据库后,它就变成了featrure class要素类,这是真正的数据,你在arcgis pro中发布要素服务时,只是将服务定义传到arcgis server,真正的数据在sde数据库中,服务器要想从数据库中去获取要素类数据,就必须从数据库中去拿,所以要注册到服务器上。

在浏览器中打开arcgis server manager站点,导航到站点-GIS服务器-数据存储-数据库,然后导入xxx.sde数据库。

四、ArcGIS Pro连接sde数据库并导入shp变成要素类

  1. 在三中,我们在ArcMap中创建sde数据库并启用了企业级地理数据库,然后我们回过头来在ArcGIS Pro中连接这个sde数据库,并在数据库上右键点击,导入各个shp文件:

    看,这就是导入的fearture class要素类们了
    然后,在arpx项目中,对图层设置源,切换到要素类:

至此,把所有图层都切换到要素类后,就可以发布了。

五、发布要素服务

  1. 首先要在ArcGIS Pro中连接ArcGIS Server服务器,我的ArcGIS Pro和Server都是安装在同一个虚拟机中的,连接后如图:
  2. 在服务器上右键选择发布,然后选择地图服务,选择如图,里面是空的无所谓,然后确定即可。
  3. 输入名称,选择注册数据库,如果选择复制所有数据,就不能发布要素服务
  4. 在配置中勾选要素
  5. 点击分析,看有没有什么错误,如果没有错误就直接发布,如果有错误就解决,我在发布中遇到两个问题:
  • 第一个问题是该图层的数据源不对,意思是图层的源可能是存在gdb中的图层或者磁盘文件夹中的矢量图层等,只需要导入启用了企业级地理数据库的sde数据库并切换源即可。
  • 第二个问题是啥忘记了,反正点后面那个三个点就自动解决了。

结论


总结

至此,500元的教程已经免费贡献给大家了,同时还提供了免费的售后支持,有问题大家可以加入q群565316938(学术资源分享群),有什么问题咨询群主就是了,只为相互学习,分享才能让大家一起快乐,我从来不反对知识变现,但我讨厌仗着有点技术,就觉得自己天下无敌,坑害同仁的,我鄙视。

相关推荐
细节控菜鸡3 天前
【2025最新】ArcGIS for JS 实现地图卷帘效果
开发语言·javascript·arcgis
细节控菜鸡4 天前
【2025最新】ArcGIS for JS 实现地图卷帘效果,动态修改参数(进阶版)
开发语言·javascript·arcgis
GIS阵地4 天前
CSV转换为QGIS的简单分类符号
arcgis·二次开发·qgis·地理信息系统·pyqgis
角砾岩队长5 天前
基于ArcGIS实现Shapefile转KML并保留标注
arcgis
细节控菜鸡5 天前
【2025最新】ArcGIS for JS二维底图与三维地图的切换
javascript·arcgis
zenithdev16 天前
开源库入门教程 Cesium:3D地球和地图库
其他·3d·arcgis
徐赛俊8 天前
QGIS + ArcGIS Pro 下载常见卫星影像及 ESRI Wayback 历史影像
arcgis
大大大大大大大大大泡泡糖8 天前
使用arcgis提取评价指标时,导出数据是负数-9999
arcgis
杨超越luckly8 天前
HTML应用指南:利用POST请求获取全国索尼体验型零售店位置信息
前端·arcgis·html·数据可视化·门店数据
fenghx2589 天前
vscode使用arcpy-选择arcgis带的python+运行错误解决
vscode·python·arcgis