创建要素定位器 (地理编码)

摘要

使用参考数据创建定位器,该参考数据包含在单个字段中存储的每个要素的唯一名称或值。 使用此工具创建的定位器具有广泛的应用。 可使用该定位器搜索要素的名称或唯一属性,例如水表、地名简称、手机信号塔或用于标识位置的字母数字字符串(例如,N1N115)。

通过此工具创建的定位器将使用单个字段中的索引值来搜索单个字段中的值,并将它们作为点集合返回,或标识点位置附近的要素。 可使用该工具创建的定位器进行地理编码的地址表还必须包含具有相同唯一名称或值的单个字段以供标识位置。

注:

通过此工具创建的定位器适用于 ArcGIS Pro 2.5 或更高版本、Enterprise 10.8 或更高版本以及作为 ArcMap 中的定位器服务。 通过此工具创建的定位器不能用作 ArcMap 中的本地定位器。

使用情况

  • 支持将表示为服务的要素类数据类型用作参考数据。

  • 该工具支持将包含点和面几何的要素类用作参考数据。

  • 使用此工具创建的定位器可用于搜索唯一标识符或者不超过 5 个单词的短字符串值。

  • 使用此工具创建的定位器支持坐标的全局搜索(经度/纬度、MGRS、DD、USNG 等)。 用于构建定位器的主要参考数据中必须至少包含一个要素。 在定位器的定位器属性对话框中,可以在地理编码选项页面的支持的类别下禁用或启用坐标搜索支持。

  • 创建定位器时,可以提供参考数据中的其他字段并将其作为自定义输出字段添加到定位器。 这些字段用于提供有关地理编码结果候选项的附加信息。 例如,如果希望了解某个消火栓与哪个人口普查区或消防区相关联,可以对消火栓 ID 进行地理编码,并将人口普查区或消防区的属性在空间上连接到地理编码结果。 通过将具有附加信息的图层的属性空间连接到用于构建定位器的参考数据,可以在构建定位器时将连接的字段指定为用户定义的自定义输出字段。 地理编码结果将包括其他自定义输出字段及其值。

  • 可将此工具的输出用作创建复合地址定位器工具的输入。 但是,应谨慎将使用此工具创建的定位器与复合定位器中基于其他地址角色的定位器搭配使用,因为名称要素定位器角色字段的字段映射可能导致意外行为。 最佳做法是使用创建定位器工具基于 POI 角色创建的定位器。

  • 要生成正确的 Python 语法,首先使用适当的参数选项从地理处理窗格运行该工具。 然后打开运行菜单并选择复制 Python 命令选项。

  • 您可以使用具有 z 值的点要素类作为主要参考数据来构建定位器。 应在绝对高程上创建这些具有 z 值的要素,以便地理编码结果能够在地图中显示预期的高程。

参数

标注说明数据类型
输入要素

将用于创建定位器的参考数据要素类或要素图层。

支持将表示为服务的要素类数据类型用作参考数据。

警告:

如果为参考数据定义了定义查询或存在选定要素,则在创建定位器时,仅包含查询要素和所选要素。

注:

如果使用包含数百万个要素的参考数据创建地址定位器,则包含临时目录的驱动上的可用磁盘空间必须至少为数据大小的 3 到 4 倍,原因是在将定位器复制到输出位置之前,需将用于构建定位器的文件写入此位置。 如果没有足够的磁盘空间,则一旦空间不足,工具将失败。 此外,在创建大型定位器时,计算机必须具备足够的 RAM,才能处理占用较大内存的进程。

Feature Layer
搜索字段

将参考数据字段映射到用于搜索输入要素参数值的字段。 名称旁带有星号 (*) 的字段为必填字段。 所选字段将编入索引并用于搜索。

Field Info
输出定位器

要在文件夹中创建的输出定位器文件。 创建定位器后,可以在定位器设置中修改其他属性和选项。

Address Locator
附加定位器字段
(可选)

映射范围和等级的附加字段(如果数据中存在)。 Rank 字段用于对模糊不清的查询的结果或具有相同名称和分数的候选项进行排序。 范围字段有助于设置地图范围以显示经过地理编码的结果。

Field Info
自定义输出字段
(可选)

将用户定义的输出字段添加到定位器。 针对此参数指定的值将定义由地理编码结果返回的自定义输出字段的名称;但必须将各个新字段映射至参考数据中的字段。 定位器中支持的最大字段数量为 50。

执行以下操作,将自定义输出字段添加至定位器以在地理编码结果中使用:

  • 键入自定义输出字段的名称。 自定义输出字段名称将被添加至字段映射。
  • 选择参考数据中的字段,该字段包含了要纳入地理编码输出的附加值。
String

arcpy.geocoding.CreateFeatureLocator(in_features, search_fields, output_locator, {locator_fields}, {custom_output_fields})
名称说明数据类型
in_features

将用于创建定位器的参考数据要素类或要素图层。

支持将表示为服务的要素类数据类型用作参考数据。

警告:

如果为参考数据定义了定义查询或存在选定要素,则在创建定位器时,仅包含查询要素和所选要素。

注:

如果使用包含数百万个要素的参考数据创建地址定位器,则包含临时目录的驱动上的可用磁盘空间必须至少为数据大小的 3 到 4 倍,原因是在将定位器复制到输出位置之前,需将用于构建定位器的文件写入此位置。 如果没有足够的磁盘空间,则一旦空间不足,工具将失败。 此外,在创建大型定位器时,计算机必须具备足够的 RAM,才能处理占用较大内存的进程。

Feature Layer
search_fields

将参考数据字段映射到用于搜索 in_features 参数值的字段。 search_fields 映射采用以下格式完成,其中 <locator field name> 是定位器角色支持的字段的名称,<data field name> 是用于搜索 in_features 参数的字段的名称。

# <locator field name> <data field name>

# This shows an example:
reference_data_field_map = """
"'Name' AssetName"
"""

所选字段将编入索引并用于搜索。 映射 in_features 参数中参考数据的相关字段。

Field Info
output_locator

要在文件夹中创建的输出定位器文件。 创建定位器后,可以在定位器设置中修改其他属性和选项。

Address Locator
locator_fields
(可选)

映射范围等级的附加字段(如果数据中存在)。 Rank 字段用于对模糊不清的查询的结果或具有相同名称和分数的候选项进行排序。 范围字段有助于设置地图范围以显示经过地理编码的结果locator_fields 映射采用以下格式完成:

# <additional locator field name> <additional data field name>

# This shows an example:
additional_fields_map = """
"'Rank' RANK;'Min X' Xmin;
'Max X' Xmax;'Min Y' Ymin;
'Max Y' Ymax"
"""

<additional locator field name> 字段是定位器支持的附加字段的名称,<additional data field name> 字段是 in_features 参数中字段的名称。 映射 in_features 参数中参考数据的相关字段。

Field Info
custom_output_fields
[custom_output_fields,...]
(可选)

将用户定义的输出字段添加到定位器。 针对此参数指定的值将定义由地理编码结果返回的自定义输出字段的名称;但必须将各个新字段映射至参考数据中的字段。 定位器中支持的最大字段数量为 50。

注:

您必须首先将自定义输出字段名称纳入 field_mapping 参数;然后在 custom_output_fields 参数中列出这些名称。

String

代码示例

CreateFeatureLocator 示例 1(独立脚本)

以下 Python 脚本演示了如何在独立脚本中使用 CreateFeatureLocator 函数。

# Description: Create a feature locator using local data.

# Import system modules
import arcpy

# Set local variables
in_features = r"C:\data\arizona.gdb\az_points"
search_field = "*Name NAME VISIBLE NONE"
output_locator = r"C:\output\locators\az_points_locator"
locator_fields = "Rank <None> VISIBLE NONE;'Min X' <None> VISIBLE NONE;'Max X' <None> VISIBLE NONE;'Min Y' <None> VISIBLE NONE;'Max Y' <None> VISIBLE NONE"

# Run CreateFeatureLocator
arcpy.geocoding.CreateFeatureLocator(in_features, search_field, output_locator, 
                                     locator_fields)
CreateFeatureLocator 示例 2(独立脚本)

以下 Python 脚本演示了如何在独立脚本中使用 CreateFeatureLocator 函数。

# Description: Create a feature locator using data from a hosted feature service in ArcGIS Online.

# Import system modules
import arcpy

# Sign in to Portal
arcpy.SignInToPortal("https://www.arcgis.com", "<username>", "<password>")

# Set local variables
in_features = "https://services.arcgis.com/<layer_id>/arcgis/rest/services/<service_name>/FeatureServer/<layer_number>"
search_field = "*Name NAME VISIBLE NONE"
output_locator = r"C:\output\locators\service_locator"
locator_fields = "Rank <None> VISIBLE NONE;'Min X' <None> VISIBLE NONE;'Max X' <None> VISIBLE NONE;'Min Y' <None> VISIBLE NONE;'Max Y' <None> VISIBLE NONE"

arcpy.geocoding.CreateFeatureLocator(in_features, search_field, output_locator, 
                                     locator_fields)