创建复合地址定位器 (地理编码)

摘要

创建复合定位器。 一个复合定位器由两个或更多的定位器组成,这些定位器允许使用多个定位器来匹配地址和地点。

了解有关复合定位器的详细信息

使用情况

  • 在创建复合定位器之前,使用创建定位器工具或创建要素定位器工具来创建参与定位器。

  • 复合定位器的空间参考是必须的。 除非在工具的环境设置中指定了其他输出坐标系,否则,将使用第一个参与定位器的空间参考。

  • 多角色定位器ArcGIS StreetMap Premium 定位器(例如)和多个单角色定位器的结果顺序参数使用按角色和分数排序选项。 此选项将定位器和角色按照最佳回退顺序排序。

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

参数

标注说明数据类型
地址定位器

将用于创建复合定位器的定位器。 参与定位器的顺序决定了候选项的搜索方式以及地点或地址的匹配方式。 对单个地点或地址进行地理编码时,除非为定位器指定了选择条件,否则将使用所有参与地点或地址定位器来匹配地址。 系统将根据参与定位器的列出顺序来显示找到的所有候选项。 对地点或地址表进行地理编码时,地点或地址将自动与在前几个参与定位器中找到的第一个最佳候选项匹配。 如果地点或地址匹配失败,它将回退到列表中后面的定位器。

每个参与的定位器都需要一个参考名称。 该定位器名称即复合定位器名称。 名称中不能使用空格或特殊符号。 最大名称长度:14 个字符。

Value Table
字段映射

每个参与定位器所使用的输入字段与复合定位器的输入字段之间的映射。

这包含由参与定位器生成的字段和字段内容。 字段映射部分列出了每个唯一输入字段。 在输入字段列的左侧,是复合定位器的所有输入字段的列表。 选择字段时,您可以在子字段属性列下查看映射到该字段的每个参与定位器的字段。 这些字段是复合定位器的输入字段。

警告:

不要从字段映射参数中删除任何定位器字段。 在没有所有定位器字段的情况下创建的复合定位器无效。

Field Mappings
选择条件
(可选)

每个参与定位器的选择条件。 每个参与定位器仅可添加一个选择条件。

构建复合定位器时,您可以基于输入地址字段的值来指定所使用的定位器。 例如,如果复合定位器使用包含某特定城市街道数据的定位器,则可以过滤掉没有此特定城市名称的所有地址或地点。 使用选择条件将会排除不满足特定地址条件的参与定位器,从而提高地理编码过程的效率。 例如,如果为某个街道地址定位器指定了选择条件 "City" = 'Atlanta',则只有包含城市名“Atlanta”的地址才会根据此定位器进行地理编码。

要指定选择条件,请在选择条件列中选中要应用此条件的地址定位器的复选框。 可在文本框中输入一个表达式(例如 "City" = 'Atlanta')或单击“更多”按钮打开指定定位器选择条件对话框并定义相应的条件。

Value Table
输出复合地址定位器

将创建的复合地址定位器。 ArcGIS Pro 仅支持保存在文件文件夹中的定位器。

Address Locator
结果顺序
(可选)

指定可将地址匹配到的参与定位器的回退顺序,以增加在地理编码时找到最佳匹配的可能性。

  • 使用定位器顺序 - 参与定位器将按照它们添加的顺序排列,并遵守将多个定位器组合成复合定位器中描述的回退顺序。 这是默认设置。
  • 按角色和分数排序 - 参与定位器将按角色和回退顺序进行分组。
  • 自定义顺序 - 将使用参与定位器的可自定义回退顺序,从而允许您在多角色定位器的角色之间插入定位器。
String

arcpy.geocoding.CreateCompositeAddressLocator(in_address_locators, in_field_map, {in_selection_criteria}, out_composite_address_locator, {in_result_ordering})
名称说明数据类型
in_address_locators
[[in_address_locator, name],...]

将用于创建复合定位器的定位器。 参与定位器的顺序决定了候选项的搜索方式以及地点或地址的匹配方式。 对单个地点或地址进行地理编码时,除非为定位器指定了选择条件,否则将使用所有参与地点或地址定位器来匹配地址。 系统将根据参与定位器的列出顺序来显示找到的所有候选项。 对地点或地址表进行地理编码时,地点或地址将自动与在前几个参与定位器中找到的第一个最佳候选项匹配。 如果地点或地址匹配失败,它将回退到列表中后面的定位器。

每个参与的定位器都需要一个参考名称。 该定位器名称即复合定位器名称。 名称中不能使用空格或特殊符号。 最大名称长度:14 个字符。

Value Table
in_field_map

每个参与定位器所使用的输入字段与复合地址定位器的输入字段之间的映射。

对于每个定位器输入字段,将字段信息格式化为此示例字符串中的格式:"Address 'Address or Intersection' true true false 4 Text 0 0 ,First,'#',Street"。 此字符串中的信息由以下内容组成:

  • 新字段名称 (Address) - 复合定位器的新定位器字段名称。

    组合中的一个定位器可能有一个 Address 字段,而另一个定位器可能有一个 Street Address 字段。 您可以将新的复合定位器字段指定为 Address,它引用两个原始定位器字段。

  • 新字段名称的别名 ('Address or Intersection') - 复合定位器的新定位器字段名称。

    对于具有新字段名称 Address 的复合定位器,您可以为 'Address or Intersection' 字段指定一个别名。

  • isEditable (true) - 指定新的复合定位器字段是否可编辑。 选项为 truefalse
  • Allow NULL Values (true) - 指定新的复合定位器字段是否允许空值。 选项为 truefalse
  • Required (false) - 指定新的复合定位符字段是否为必填字段。 选项为 truefalse
  • Length (4) - 新复合定位符字段的长度。
  • Type (Text) - 新复合定位器字段的数据类型。 对于定位器,此值应始终为 Text
  • Scale (0) - 新复合定位器字段的比例。 可使用 1 到 100 之间的任意值。 此值不适用于定位器,必须使用有效值。
  • Precision (0) - 新复合定位器字段的精度。 可使用 1 到 100 之间的任意值。 此值不适用于定位器,必须使用有效值。
  • Merge rule (First) - 新复合定位符字段的合并规则。 可使用任意的合并规则值。 此值不适用于定位器,必须使用有效值。
  • Delimiter ('#') - 新复合定位符字段的分隔符。 可使用任意支持的分隔符。
  • Original locator field name (Street) - 原始参与定位器中的定位器字段名称。
Field Mappings
in_selection_criteria
[[in_address_locator, selection_criteria],...]
(可选)

每个参与定位器的选择条件。 每个参与定位器仅可添加一个选择条件。

使用选择条件将会排除不满足特定条件的参与定位器或地点,从而提高地理编码过程的效率。 有关如何在地理编码过程中使用选择条件的详细信息,请参阅将多个定位器组合成复合定位器的基础知识

Value Table
out_composite_address_locator

将创建的复合地址定位器。 ArcGIS Pro 仅支持保存在文件文件夹中的定位器。

Address Locator
in_result_ordering
(可选)

指定可将地址匹配到的参与定位器的回退顺序,以增加在地理编码时找到最佳匹配的可能性。

  • Use locator order - 参与定位器将按照它们添加的顺序排列,并遵守将多个定位器组合成复合定位器中描述的回退顺序。 这是默认设置。
    • 语法是以逗号分隔的定位器名称字符串。
    • 对于包含两个定位器(例如 Atlanta.loc 和 Memphis.loc)的复合定位器,语法应为 "Atlanta, Memphis"
  • Order by role and score - 参与定位器将按角色和回退顺序分组。
    • 语法是以逗号分隔的角色分组字符串,其结构为 [LocatorRole1](LocatorName1.LocatorRole1, LocatorName2.LocatorRole1)。
    • 对于包含两个多角色定位器(例如 Atlanta.loc 和 Memphis.loc)的复合定位器,每个定位器都包含一个 PointAddress 角色和一个 StreetAddress 角色,语法应为 "[PointAddress](Atlanta.PointAddress, Memphis.PointAddress),[StreetAddress](Memphis.StreetAddress,Atlanta.StreetAddress)"
    • 角色必须从最精确到最不精确排序。
  • Custom order - 将使用参与定位器的可自定义回退顺序,从而允许您在多角色定位器的角色之间插入定位器。
    • 语法是以逗号分隔的定位器名称和角色的字符串,结构为 LocatorName.LocatorRole。
    • 对于包含两个多角色定位器(例如 Atlanta.loc 和 Memphis.loc)的复合定位器,每个定位器都包含一个 PointAddress 角色和一个 StreetAddress 角色,语法应为 "Atlanta.StreetAddress,Memphis.PointAddress,Memphis.StreetAddres,Atlanta.PointAddress"
    • 定位符和角色可以按任何顺序放置,但将不太精确的角色放在更精确的角色之前可能会导致意外行为。

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

String

代码示例

CreateCompositeAddressLocator 示例(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 CreateCompositeAddressLocator 函数。

# Create a composite address locator using the StreetMap US Streets and Tutorial Atlanta locators.

# Import system modules
import arcpy 

arcpy.env.workspace = "C:/ArcTutor/Geocoding/atlanta/"

# Set local variables:
US_Streets_locator = "C:/dm_stmap_dvd/streetmap_na/data/Street_Addresses_US"
Atlanta_locator = Atlanta
Atlanta_Composite = US_Atlanta_Composite

# Field mapping
address_field_map = "Address 'Street or Intersection' true true false 100 Text 0 0 ,First,#,Atlanta_locator,Address,0,0,US_Streets_locator,Street;"
city_field_map = "City 'City or Placename' true true false 40 Text 0 0 ,First,#,Atlanta_locator,City,0,0,US_Streets_locator,City;"
state_field_map = "State 'State' true true false 20 Text 0 0 ,First,#,Atlanta_locator,State,0,0,US_Streets_locator,State;"
zip_field_map = "Zip 'Zipcode' true true false 10 Text 0 0 ,First,#,Atlanta_locator,Zip,0,0,US_Streets_locator,ZIP"

composite_locator_field_map = address_field_map + city_field_map + state_field_map + zip_field_map

arcpy.geocoding.CreateCompositeAddressLocator("Atlanta_locator Atlanta;US_Streets_locator US_Streets", composite_loactor_field_map,"Atlanta '\"City\" = 'Atlanta'';US_Streets #",Atlanta_Composite)

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题