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 字段,而另一个定位器可能有一个“街道地址”字段。 您可以将新的复合定位器字段指定为 Address,它引用两个原始定位器字段。
新字段名称的别名 ('Address or Intersection') - 复合定位器的新定位器字段名称的别名。
对于具有新字段名称 Address 的复合定位器,您可以为该字段指定别名 'Address or Intersection'。
isEditable (true) - 指定新复合定位器字段是否可编辑。 选项为 true 或 false。
允许 NULL 值 (true) - 指定新复合定位器字段是否允许空值。 选项为 true 或 false。
必填 (false) - 指定新复合定位器字段是否为必填字段。 选项为 true 或 false。
长度 (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
(可选)
|
指定可将地址匹配到的参与定位器的回退顺序,以增加在地理编码时找到最佳匹配的可能性。
“使用定位器顺序”- 参与定位器按照添加顺序排序,并遵守在 将多个定位器组合为复合定位器 中描述的回退顺序。 这是默认设置。
“按角色和得分进行排序”- 参与定位器的各个角色将按照精确度从高到低的顺序进行分组和排序。 首先返回更精确角色的结果,然后是较不精确角色的结果;对于使用相同角色返回的不同定位器的结果,将根据得分进行返回。 如果您有一个多角色定位器和多个单角色定位器,或者有多个多角色定位器,建议使用此选项。 自动将定位器和角色按照推荐的最佳回退顺序排序。
语法是以逗号分隔的角色分组字符串,结构为 [LocatorRole1](LocatorName1.LocatorRole1, LocatorName2.LocatorRole1)。
例如,对于包含两个多角色定位器(例如 Atlanta.loc 和 Memphis.loc)的复合定位器,每个定位器包含一个 PointAddress 角色和一个 StreetAddress 角色,语法应为 "[PointAddress](Atlanta.PointAddress, Memphis.PointAddress),[StreetAddress](Memphis.StreetAddress,Atlanta.StreetAddress)"。
角色必须从最精确到最不精确排序。
“自定义顺序”- 将使用参与定位器的可自定义回退顺序,从而允许您在多角色定位器的角色之间插入定位器。
语法是以逗号分隔的定位器名称和角色字符串,结构为 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 USA and Tutorial Atlanta locators.
# Import system modules
import arcpy
arcpy.env.workspace = "C:/ArcTutor/Geocoding/atlanta/"
# Set local variables:
USA_locator = "C:/data/locators/StreetMap_Premium_for_ArcGIS/North_America_2024R3/USA.loc"
Atlanta_locator = "C:/ArcTutor/Geocoding/atlanta/Atlanta.loc"
Atlanta_Composite = "C:/ArcTutor/Geocoding/atlanta/US_Atlanta_Composite.loc"
# Field mapping
address_field_map = "Address 'Street or Intersection' true true false 100 Text 0 0 ,First,#,Atlanta_locator,Address,0,0,USA_locator,Street;"
city_field_map = "City 'City or Placename' true true false 40 Text 0 0 ,First,#,Atlanta_locator,City,0,0,USA_locator,City;"
state_field_map = "State 'State' true true false 20 Text 0 0 ,First,#,Atlanta_locator,State,0,0,USA_locator,State;"
zip_field_map = "Zip 'Zipcode' true true false 10 Text 0 0 ,First,#,Atlanta_locator,Zip,0,0,USA_locator,ZIP"
composite_locator_field_map = address_field_map + city_field_map + state_field_map + zip_field_map
arcpy.geocoding.CreateCompositeAddressLocator("Atlanta_locator Atlanta;USA_locator USA", composite_locator_field_map,"Atlanta '\"City\" = 'Atlanta'';USA #",Atlanta_Composite)