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

摘要

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

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

使用情况

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

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

  • 对于多角色定位器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
  • 允许 NULL 值 (true) - 指定新复合定位器字段是否允许空值。 选项为 truefalse
  • 必填 (false) - 指定新复合定位器字段是否为必填字段。 选项为 truefalse
  • 长度 (4) - 新复合定位器字段的长度。
  • 类型 (Text) - 新复合定位器字段的数据类型。 对于定位器,该值应始终为 Text
  • 比例 (0) - 新复合定位器字段的比例。 可以使用 1 到 100 之间的任何值。 此值不适用于定位器,但必须使用有效值。
  • 精度 (0) - 新复合定位器字段的精度。 可以使用 1 到 100 之间的任何值。 此值不适用于定位器,但必须使用有效值。
  • 合并规则 (First) - 新复合定位器字段的合并规则。 可以使用任意合并规则。 此值不适用于定位器,但必须使用有效值。
  • 分隔符 ('#') - 新复合定位器字段的分隔符。 可以使用任何受支持的分隔符。
  • 原始定位器字段名称 (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: 是

相关主题