后续:公用事业网络,ArcPy。mp和JSAPI支持通过门户映射产品交付

963
0
04-09-2021下午02:06
MarkCederholm
通过
定期供款人II
0 0 963

因为提交2021年DevSummit的用户演示记录的截止日期非常紧迫(2月15日!),所以我遇到了一些问题,我无法及时解决,主要是围绕arcpy的使用。在ArcGIS Server 10.8.1中。作为演示的解决方案,我在Flagstaff的一个测试盒上创建了一个独立的企业10.8安装,它非常慢。

演讲录音可在此下载:

https://www.youtube.com/watch?v=19eQ7Gp1LoI

幻灯片和示例代码也可以在这里获得:

http://www.pierssen.com/arcgis/python.htm

Arcpy。议员错误

事实证明,我在10.8.1中遇到的大多数问题都通过一个补丁修复了,“打印服务和文本元素补丁”,可以在这里找到:

https://support.esri.com/en/Products/Enterprise/arcgis-server/ArcGIS-Server/10-8-1#downloads?id=7868

以下是我遇到的问题列表,这些问题已通过补丁修复:

  • Layout.listElements("TEXT_ELEMENT")失败:"java.lang. txt "异常:无法提供服务请求。”
  • 设置TextElement。文本失败:"java.lang. "异常:无法提供服务请求。”
  • UniqueValueRenderer。listMissingValues崩溃
  • 布局。exportToPDF失败:"OSERROR"

自从安装了补丁,我就能在图森的10.8.1 Q门户网站上实现web工具和应用程序,这要快得多。在演示文稿中运行51秒的COTTONWOOD 1地图,在Q Portal中只运行了14秒。

身份验证:arcpy vs. ArcGIS API for Python

我遇到的另一个问题是身份验证。虽然Python的ArcGIS API正确地封装了web工具用户的身份,但ArcGIS身份是ArcSOC进程的所有者。为什么这是一个问题?如果在一个专业项目的层是不可用的ArcSOC所有者,他们将不会呈现在导出的PDF。目前,arcpy无法使用web工具用户的凭据登录到门户。

如果你关心这个问题,请在这里投票支持我的想法。//www.gobook3.com/t5/python-ideas/arcpy-sign-into-portal-using-python-api/idi-p/1039109]

在演示中,我通过与大家分享图层来解决这个问题。但是,对于门户中向公众公开的敏感地图数据来说,这是不可接受的。我确定的解决方案是使用ArcGIS Pro中包含的“密码学”模块:

https://pypi.org/project/cryptography/

我在Portal中创建了一个内置用户,可以访问Pro项目中的图层,并在项目文件夹中创建了一个包含加密密钥和加密用户名和密码的文本文件。然后我使用该文件将arcpy签名到Portal:

def _SignIn(self): #从密码学中检索凭据并登录到Portal。fernet import fernet sKeyFile = os.path.join(self. join)__sProjectDir, "Encrypted.txt") with open(sKeyFile) as f: sContent = f.read() tok = sContent.split("\n") sKey = bytes(tok[0], encoding="utf-8") sUserTok = bytes(tok[1], encoding="utf-8") sPassTok = bytes(tok[2], encoding="utf-8") f = Fernet(sKey) sUser = f.decrypt(sUserTok) sPass = f.decrypt(sPassTok) sPortal = arcpy. getactiveportalurl () arcpy. getactiveportalurl。signintopportal (sPortal, sUser, sPass)返回

有关更多信息,请参阅Python工具箱的更新版本(随附)。

标签(2)