当前位置: 首页 > article >正文

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


http://www.kler.cn/a/399748.html

相关文章:

  • 前端基础(四十一):实时获取麦克风音量
  • esp32c3开发板通过micropython的mqtt库连MQTT物联网消息服务器
  • 学习日记_20241117_聚类方法(高斯混合模型)
  • Go语言24小时极速学习教程(二)复合数据(集合)操作
  • Python中的with语句
  • QT使用libssh2库实现sftp文件传输
  • ue中使用webui有效果白色拖动条 有白边
  • 【C++】构造与析构函数
  • 网络安全之国际主流网络安全架构模型
  • 已有docker增加端口号,不用重新创建Docker
  • 删除k8s 或者docker运行失败的脚本
  • 原生微信小程序做视频和图片上传wx.chooseMedia({})
  • Prometheus结合K8s(一)搭建
  • three.js 对 模型使用 视频进行贴图修改材质
  • 无人机在森林中的应用!
  • x-cmd pkg | helix - 用 Rust 打造的文本编辑器,内置 LSP 和语法高亮,兼容 Vim 用户习惯
  • 丹摩征文活动 | CogVideoX-2b实战部署:简化文字生成视频步骤
  • 根据 Maven 的不同 profiles 来改变 Spring Boot 应用程序的配置
  • 如何使用PCL处理ROS Bag文件中的点云数据并重新保存 ubuntu20.04
  • D3基础:绘制圆形、椭圆形、多边形、线、路径、矩形
  • Windows文件资源管理器增强工具
  • Mac的Terminal随机主题配置
  • 关于Redux的学习(包括Redux-toolkit中间件)
  • 服务器作业4
  • 常见的网络协议汇总(涵盖了不同的网络层次)
  • 网络安全与CTF在线学习资源网站