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(学术资源分享群),有什么问题咨询群主就是了,只为相互学习,分享才能让大家一起快乐,我从来不反对知识变现,但我讨厌仗着有点技术,就觉得自己天下无敌,坑害同仁的,我鄙视。

相关推荐
GIS思维2 小时前
ArcGIS定义投影与投影的区别(数据和底图不套合的原因和解决办法)
arcgis·gis·地理信息·arcgis坐标系·动态投影
圆弧YH15 小时前
Arcgis 地图制作
arcgis
sinat_3842410915 小时前
使用 cnpm 安装 Electron,才是正确快速的方法
arcgis
中科GIS地理信息培训1 天前
ArcGIS Pro 3.4新功能1:唯一值符号化增加复选框,可在内容窗格和布局视图中控制类别的可见性。
arcgis·arcgis pro
黄鹂绿柳1 天前
学了Arcgis的水文分析——捕捉倾泻点,河流提取与河网分级,3D图层转要素失败的解决方法,测量学综合实习网站存着
arcgis
科研online1 天前
ArcGIS计算水库库容量
arcgis·学习方法
WineMonk1 天前
ArcGIS Pro ADGeoProcessing DAML
arcgis·gis·arcgis pro sdk·daml
踏实探索2 天前
OpenLayers教程12_WebGL自定义着色器:实现高级渲染效果
前端·arcgis·vue·webgl·着色器
weixin_贾2 天前
【学习教程】如何利用有限数据发表更多SCI论文?利用ArcGIS探究环境和生态因子对水体、土壤和大气污染物
arcgis·景观格局·土地利用·矢量数据·栅格数据·景观生态学·空间统计分析