要求
如果您具有 ArcGIS Enterprise 部署,则可以利用服务器端异步批量理编码模式,该模式将帮助您在定位器服务中获得最佳性能。此方法使用您已在门户上发布并添加为实用程序服务的定位器。有关创建定位器、将其共享到门户以及将其添加为实用程序服务的详细信息,请参阅配置门户以地理编码地址。
优点
我们可以借助 ArcGIS Enterprise 的强大功能充分利用已发布的地理编码服务。将定位器共享到门户后,可以将其用于批量地理编码。使用门户进行批量地理编码的部分优势包括:
- 最大化服务器资源以尽快完成批量地理编码作业。
- 允许 ArcGIS 管理员管理后端资源,而不是使服务超载。
- 使用您的数据和您自己的已发布定位器在组织的防火墙之后执行大批量地理编码。
- 内置分段和重试逻辑以确保大批量地理编码作业不会失败。
架构
要最大化利用已发布的定位器服务,可以扩展地理编码服务器的实例数。您可以通过转到 ArcGIS Server Manager 中的服务目录来执行此操作,然后在选择要扩展的地理编码服务后,转到池化选项卡并更改每台计算机的最小实例数和每台计算机的最大实例数参数。对于地理编码,这些数字应始终相等。如果您希望始终有四个实例可用,则可以将这两个值都更改为 4。
在上图中,ArcGIS 管理员已将定位器服务扩展为四个实例。然后,组织的 ArcGIS 管理员可以将定位器的 numBatchThreads 属性设置为 4,从而使批量地理编码的性能提高四倍。管理员可以在 Portal for ArcGIS Directory共享位置设置 numBatchThreads 属性。请注意,如果两个用户希望同时执行批量地理编码,则 ArcGIS 管理员可能要将 numBatchThreads 属性设为 2,否则作业将排队进行并可能会在等待另一个作业完成时超时。这样设置后,每个批量地理编码作业将针对两个可用的定位器实例运行,而后端定位器服务将能够处理同时提交多个作业的负载。
配置
以下步骤介绍了 ArcGIS 管理员可以如何配置其门户以利用上述异步批量地理编码模式。
批量地理编码时添加日志记录以获得更多反馈
默认情况下,将 GeocodingTools 地理处理服务消息级别设置为警告。若要了解更详细的错误消息,以及更好地更新批量地理编码作业的状态,可将 GeocodingTools 地理处理服务的日志记录级别设置为信息。
- 浏览到您的托管服务器的 ArcGIS Server Manager。
- 单击 Server Manager 目录中的实用程序文件夹。
- 单击 GeocodingTools 地理处理服务。
- 单击左侧的参数通栏,将消息级别更改为信息。接下来,单击右上角的保存并重新启动按钮。
将日志记录级别更改为信息将导致性能轻微下降,但会提供更好的作业进度反馈和更多可能出现的错误的相关信息。这些优势在 ArcGIS Pro 的地理编码表、对表格中的位置进行地理编码和地理编码文件工具中均有所显现。
增加批量地理编码超时
默认情况下,GeocodingTools 地理处理服务作业的超时超过 200 分钟。如果您预计批量地理编码作业可能需要 3 小时 20 分钟以上才能完成,您将需要增加客户端可以使用该服务的最长时间。
- 浏览到您的托管服务器的 ArcGIS Server Manager。
- 单击 Server Manager 目录中的实用程序文件夹。
- 单击 GeocodingTools 地理处理服务。
- 单击左侧的池化通栏并更改客户端可以使用该服务的最长时间。将此值增加到一个非常大的数字,可确保大批量地理编码作业永远不会超时。接下来,单击右上角的保存并重新启动按钮。
为您的定位器配置建议数目的并发批量地理编码请求 (numBatchThreads)
运行在联合 GIS Server 站点的 GeocodingTools 地理处理服务也可使用门户的定位器。地理处理服务可向地理编码实用程序服务发送多个并发请求,从而加快批量地理编码的整体执行速度。地理处理服务发出的并发请求数目可由门户管理员配置。如果地理处理服务向定位器发出过多的并发请求,可能会运行不佳,这可能会导致在运行地理处理服务时故障增加。因此,管理员应根据定位器服务的可用实例数目来设置地理处理服务所使用的实例数目,还应配置 GeocodingTools 地理处理服务的任意实例可发出的并发批量地理编码请求的数目。
最佳做法是,定位器服务的实例数目必须始终大于或等于 GeocodingTools 地理处理服务的可用实例数目。并发批量地理编码请求的数目应设置为与定位器和地理处理服务二者的可用实例数目成正比。例如,如果定位器服务的可用实例数目为 8,地理处理服务的可用实例数目为 2,则并发批量地理编码请求应设置为 4。执行地理处理服务后,会向定位器服务发送 4 个并发批量地理编码请求。如果有更多实例可供定位器服务使用,则应相应调整并发批量地理编码请求数目,以充分利用可供定位器服务使用的实例。
请注意,Esri World Batch Geocoder 无法配置为使用多个并发请求。以下配置适用于配置为实用程序服务的其他所有已发布定位器服务。
要为您的定位器服务配置建议数目的并发批量地理编码请求,请执行以下步骤:
- 转到 Portal for ArcGIS Directory 共享位置并以具有管理权限的成员身份登录。URL 格式为 https://webadaptorhost.domain.com/<webadaptorname>/sharing/rest。
- 浏览至主页 > 门户 > 自助。
- 在页面底部,单击更新。
- 在地理编码服务文本框中,您将看到当前通过门户配置的定位器服务。对于支持批量地理编码的服务(其 batch 属性已设置为 true),您可以配置建议数目的并发批量地理编码请求。选择您希望通过该属性进行配置的服务。地理编码服务文本框中的 JSON 将采用以下格式:
[{ "url" : "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer", "northLat" : "Ymax", "southLat" : "Ymin", "eastLon" : "Xmax", "westLon" : "Xmin", "name" : "Esri World Geocoder", "batch": false, "suggest" : true }, { "url" : "https://machine.domain.com/server/rest/services/Locators/USA/GeocodeServer", "name" : "Streetmap Premium USA Geocoder", "placeholder" : "Find address or place", "singleLineFieldName" : "SingleLine", "batch" : true, "placefinding" : true, "suggest" : true, "zoomScale" : 10000 }]
- 将 numBatchThreads 属性添加到您希望与 GeocodingTools 地理处理服务配合使用的所有定位器服务中。要设置 numBatchThreads 值,首先确定您希望针对给定定位器服务启用的并发批量地理编码请求的数目,并将属性设置为等于该数目。请注意,要在定位器服务上配置 numBatchThreads,该服务必须将 batch 设置为 true。
在本示例中,Streetmap Premium USA Geocoder 实用程序服务允许的并发批量地理编码请求的数目设置为 4。
[{ "url" : "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer", "northLat" : "Ymax", "southLat" : "Ymin", "eastLon" : "Xmax", "westLon" : "Xmin", "name" : "Esri World Geocoder", "batch": false, "suggest" : true }, { "url" : "https://machine.domain.com/server/rest/services/Locators/USA/GeocodeServer", "name" : "Streetmap Premium USA Geocoder", "placeholder" : "Find address or place", "singleLineFieldName" : "SingleLine", "batch" : true, "placefinding" : true, "suggest" : true, "zoomScale" : 10000, "numBatchThreads" : 4 }]
- 在更新地理编码服务文本框中的 JSON 后,单击页面底部的更新组织。
为批量地理编码启用的工具
在 ArcGIS 管理员配置了每个定位器的 numBatchThreads 之后,用户则可以利用批量地理编码作业中性能的提升。利用这种性能提升的工具包括 ArcGIS Pro 中的地理编码表、对表格中的位置进行地理编码和地理编码文件,以及 Map Viewer 中的对表格中的位置进行地理编码。