2018Esri开发竞赛 Enterprise技术答疑 整理(08月01日)

1
分享 2018-08-09
1、Q:内网发布的sever怎么在外网调用
A:  搜索帮助文档中 配置反向代理服务器, 用nginx或apache。另外,也可以通过web adaptor作为代理。

2、Q:安装portal后跳出来让注册账户的这个网址进不去
https://portal.domain.com:7443/argis/home
A:就是说您尚未注册初始化管理员用户么?可以尝试换个浏览器比如chrome,而后进行访问
Q:嗯嗯对的,就是尚未注册为管理员,是url地址的问题吗老师,chrome也进不去。A::您这里的portal.domain.com是本机的机器全名么?
Q:抱歉老师,不是。是安装成功后自动跳出来的网址,有同学说会自动读取,机器名全名的网址是https://jubo.com.cn:7443/arcgis/home,依然无法访问。
A:您可以截取您的计算机属性中的机器名给我看一下么?
Q:好的

image001.jpg

 
    A:您是在本机访问么?如果是,您应该输入 https://jubo.com.cn:7443/arcgis/home访问
Q: 是的老师,依然无法访问
A: 您直接通过https://localhost:7443
Q:还是不行,老师
A:您这个环境上的环境层面需要排查,比如IE的Internet选项下的局域网设置;比如hosts文件中是否添加了其他信息;比如这个机器是否加入了本地AD域。所以我建议您发送邮件到support@esrichina.com.cn进行后续跟踪

3、Q:Sever 加入制定站点报错是因为什么
 
image002.jpg


A: 在构建ArcGIS for Server集群么?如果是构建集群,请注意:1对于windows系统和Linux系统来说,站点的configure-store和directories必须构建在一个UNC路径或者NFS共享路径; 2两个节点上的ArcGIS for Server账户的用户名和密码一致,如果是Linux注意UID也必须一致;3ArcGIS for Server账户对(1)中的路径具有完全控制权限
Q: 我不太清楚我这个是不是构建集群,我通过一台电脑上的server创建了一个站点,发布了一些服务,想在另一台电脑上调用这些服务,是否需要在这个电脑上再安装server并加入那个已有的站点?
A: 如果您是另一台机器调用服务,那就直接访问站点的rest目录即可,不需要加入站点的。另外,您第一个截图中加入站点的url填写的是错误的,请按照下面的说明填写。但是,您如果不是创建集群,那么直接rest访问就可以

 4、Q:pro中的模型通过share as web layer发布后,在enterprise缺失了很多是怎么回事

image003.jpg


image004.jpg


 
 
A: 您可以跟踪请求,是否是某些node节点返回出错。您现在的截图是pro中的,能否把portal中返回的信息同样截图看看
Q:不清楚怎么跟踪请求
A:用chrome浏览器,按F12
Q: 是在查看场景时使用吗
A:对
Q:老师,跟踪请求需要查看那一部分的内容呢
A:看这些node节点有没有大量无法返回。同时也查看console
Q:什么情况是代表无法返回呢,如果有这样情况改如何解决呢,老师?
A: 我建议您重新创建一下slpk。在pro中打开slpk先看看。如果确定没问题,那么在portal上重新发布。
Q:还是不行老师,当不选择模型时,它就不见了
A:那最好把您的数据和流程发到support@esrichina.com.cn邮箱后续跟进

5、Q:想用arcpy写一个脚本工具然后用server发布,这样可以用js api调用这个工具吗?
A: 发布GP服务,在JS端调用这一GP服务即可。其实,如果现有GP工具可以满足您的业务流程,可以将现有GP工具构建为GP模型,而后将GP模型发布GP服务,最后在JS端调用

6、Q:ArcGIS GeoEvent Server 和 ArcGIS Image Server 怎么授权,这这两个是单独的组件吗?
A:许可都是单独的扩展模块,GeoEvent Server有单独的安装包,GeoEvent Server的安装包在Enterprise的iso文件中包含的有

7、Q:老师请问发布要素图层总会出现这样的错误,该怎么解决呢? 

image005.jpg

 

A: 这个错误原因可能很多。先查看Manager中的日志,看看里面是否存在更多的server连接信息,和实质的连接信息是否一致;其次,如果您的ArcGIS for Server是10.5及之后的版本,最好是不管是客户端还是服务器端,都把IE升级到11;第三,可以打包sd,用Manager发布看看。

8:Q:请问arcgis js api 里面的绘制图形接口是基于屏幕坐标还是地理坐标呢?怎么能把这个坐标取出来呢?谢谢
A:点击的时候获得的是屏幕坐标,您可以把屏幕坐标转成地理坐标

9、Q:老师,我的之前发布成功了,但是突然地图打不开了,给的那个模板也打不开是什么原因呢
A: 所谓的地图突然打不开是什么意思,是Server端rest页面上访问服务打不开,还是其他情况?
Q:打不开是直接浏览视图都做不到,一直加载 


10:Q:请问,在arcpro中,导入的模型当选择的时候才显示,不选择就不显示,这个问题怎么解决
A: 您这个模型是其他平台传入的吧。如果原始的dae转成multipatch获取的?
如果是这样,您可以用cityengine转一下试试 
Q:我就是在CE里面导出的obj再导入arcpro的
A: 那您可以CE直接导出filegdb的multipatch

11 Q:arcmap 里的自己建的所有模型都可以发布为GP服务吗?
A:所有GP模型都可以的,无法满足的,可以通过构建Python工具;也可以构建SOE实现更多的业务逻辑

12、Q:网络换了一个,server里面的服务无法加载是什么原因
A: 有可能是服务实例无效了。重启ArcGIS for Server试试

13 Q: 想要使用python,自动保存为.MXD文档,自动发布,这个能不能实现呢?
   A: 可以的。创建mxd后发布服务的环节ArcGIS Server中有现成的示例;从数据源到mxd的创建,或者对现有mxd替换数据源,应该也是有示例的

14: Q:老师问一下这种在不同级别显示不同内容的服务该怎么发呢
 
image006.jpg


image007.jpg


image008.jpg


A: 首先,您需要确定您这个服务背后实质的方式,可以通过跟踪url请求进行分析;其次,这个有点类似cluster的聚合方式。具体您跟踪请求看看,至少判断这个操作是客户端完成的,还是服务器端完成的
Q: 老师这是在客户端完成的,通过缩放不同级别实现内容显示的不同,按照您的思路是说,监测缩放级别然后,响应不同的服务图层的url来实现的嘛,然后给不同级别给不同的渲染方式对吗?
A: 你可以看看js中的heatmap之类的渲染是否可以满足要求;或者cluster的效果。cluster的效果在3.x上肯定是有的。您先看看具体的效果是否能够满足你的要求

15 Q: 老师,在ArcGIS server上发布的地图显示的太慢,有没有什么办法可以解决啊? 
A: 这个跟踪请求看看。理论上来说只要传输过来后就直接在前端绘制, 有可能是慢在传输阶段 .
切片也是这个道理。您跟踪请求,在3.x系列的js上有可能是当前范围的切片全部范围后,再进行绘制。从而造成视觉体验慢。所以网络仍然是关键;另外,可以尝试4.x的js api加载这一缓存服务试试

16 Q: 一个之前发布的地图打不开了,我把它关闭之后打不开, 上边的模板也打不开

image009.jpg


 
A: 您可以看到,以SampleWorldCities为例,没有运行中的示例;金水区这一服务则是停止的,同样没有运行中的示例,因此您前端肯定返回404或500错误
Q: 您是之前说IP更换了?如果是的话,重启ArcGIS for Server系统服务
A: 停止服务后重启,看看具体报什么错误
Q:重启会提示错误 

image010.jpg


A:这个是由于某个进程锁定了服务的文件,最好的办法就是重启ArcGIS for Server系统服务,解除锁定。或者从资源监视器的搜索这个服务的名字,找到哪个进程锁住了这个文件。后者比较麻烦。所以最好就是从计算机管理,服务,停止ArcGIS for Server系统服务,然后重启
Q:老师,我按照您的方法还是不行
A:
在停止后,查看一下arcgis账户下是否存在残留进程。另外,在下图的关联的句柄那里输入这个服务的名字,看看哪个PID进程锁定了这个服务

image011.jpg


Q:老师可以了

17 Q: 老师,谷歌浏览器不能加载发布的一些服务,改成6080端口就可以,请问这个6443端口和6080端口都能使用吗?如果使用6443端口要怎么解决无法加载的问题呢? 
A: 6443加载需要通过https,在https的情况下,可能由于私有证书无法被浏览器信任,从而无法加载;6080则不存在私有证书的问题。对于前者,您也可以信任私有证书;或者将私有证书替换为CA证书

18 Q:要用到arcgis online的路线规划功能,是不是还需要购买?
A:路线规划实质是Esri提供的网络分析服务;这个服务貌似是需要收费的
Q:和arcgisPro的网络分析有关系吗?能试用吗? 
A:您注册了Online的21天试用账户,应该是可以试用的。https://www.esri.com/zh-cn/arc ... edits 

19 Q: 老师我们在调用featurelayer图层之后想获取每个点的fid然后从本地数据库里查询相关信息再返回到前端的页面里,但是这个require加不进来呀,就没办法调用那个js文件里的方法,请问有没有什么解决方案呢,或者esri有没有什么类似的api,可能我没找到欸,数据库用的postgresql

image012.jpg


A: 可以直接通过调用feature layer的query请求来实现
Q:老师那个query是不是只能调用属性表里的数据啊,我们这边数据有点多,所有当初就直接存在本地的数据库里了,想着这样调用一下。数据库已经连接上了,可以查询,但是跟每个点的fid对应不上想按照fid在数据库里查询对应的信息
A:你们是封装了一个web service么?哪个fid和哪个对不上?请详细说明
Q:就是我们发布了十个点一个feature layer,每个点有一个唯一的fid,然后本地的数据库表里也有一列是fid。我们想在地图上点击一个点的时候,就用这个点的fid和数据库里的那个fid对应起来,然后把数据库里的该条信息反馈到前端,比如说显示在这个点的弹出框里。 
A您这个本地数据库表是指浏览器内置的用于缓存的数据库,还是一个本地部署的关系型数据库?如果是后者,那么,那您可以直接把这个信息表文件存储在feature layer的数据源所在的关系型数据库。通过构建关系类并调用query related records来实现。如果是单独的,那么就要有一个相同的可标识字段,进行两者间的匹配查询就可以
Q:老师是本地部署的一个独立的关系型数据库,信息表就在本地。您说的这个“featurelayer的数据源所在关系型数据库”我不是很懂,这个featurelayer的数据源我们就是做了一个shp文件,没在数据库里。要把这个shp用postgis导入数据库里,然后和我们要查询的表做关联吗?那前端该怎么写的。。怎么让用户在网页上点击featurelayer中任意一个点,我们就能从本地的数据库里拿到该点对应的信息显示在前端呢,麻烦老师了 
A:是的。我提到的方案1,就是通过在service层面调用queryRelatedRecords查询到关联的属性表中的信息;

Q:喔喔,就是把“这十个点的shp”在arcgis pro中和“postgresql数据库里要查询的信息表”做关联,然后再一起发布成feature server,然后再调用queryRelatedRecords就能查询到关联的表中的信息了对吧?是不是可以理解为这个信息表也同时发布上去了 
A; 是的,创建related class。注意这些都放置在同一个SDE库中进行操作。细节的问题,具体实践中再分析
Q: 好的老师,这些我之前还真没接触过,感谢您给指的方向

20、Q:请问老师,ArcMap里想要把数据直接矢量数据直接存到mysql里怎么做呢,我看了一下不支持mysql 连接,目前只对mysql比较熟悉
A:如果确定System Requirement不支持mysql,那就是不支持的。官方不提供支持范围之外的咨询的

21 Q:请问老师,把要素数据存储到sde数据库里是不是就相当于把要素的数据表存进去了,是不是就不用在数据库里单独再存一个要素的表了?
A: 就是存储为SDE中的Feature Class

22 Q;老师,我们的模型在pro中加载正常,创建slpk的时候显示成功,但是加载出错了,是为什么呀 
A: 这个描述有点不完整,slpk是在pro端创建的,那么您所说的加载出错,是在pro端加载出错么?
Q: 是的,我在pro中加载生成的slpk跟之前的multipatch原文件不同
A: 请截图或后续发邮件至support@esrichina.com.cn邮箱.

23 Q: 请问下老师,popup对象随着地图移动,是通过监听地图移动,然后刷新坐标来实现的吗,如果不是的话,请教下老师实际的实现思路是什么,如果是的话,当此类弹出式窗口过多时,应该会对性能影响较大,有没有什么其他的比较好的实现方法
A: 理论上说,popup是按照屏幕坐标绘制的。所以应该需要监听地图的移动来刷新绘制。您是想弹出框就作为一个样式始终显示在前端么?
Q: 是的,就平移的时候 ,考虑到如果弹出框太多的话,这样会不会造成性能问题 
A: 理论上是的。因为我这边不负责js端的开发,因此这些细节问题可以在js的专场进行详细咨询。
 
 
感谢中科院遥感地球所 许泽宇同学的整理

0 个评论

要回复文章请先登录注册