标注 | 说明 | 数据类型 |
国家/地区 | 指定将于何处将特定于国家/地区的地理编码逻辑应用于定位器的参考数据。 默认值为操作系统的区域设置。 可通过使用列表中的 <按数据中所定义的方式> 并从字段映射中的数据内映射某一值来对其进行指定,或通过从列表中指定某一国家/地区来将其应用于整个数据集。 它提供了一个国家/地区模板,该模板中包含了显示于字段映射参数值中的预期字段名称以便为定位器创建指定的国家/地区。
| String |
主表 | 参考数据要素类及其将用于创建定位器的角色。 每个角色只能使用一个主表。 表示为服务的要素类作为数据类型,支持用作主要参考数据。 警告:如果为主要参考数据定义了定义查询或存在选定要素,则在创建定位器时,仅将包含查询要素和所选要素。 注:如果使用包含数百万个要素的参考数据创建地址定位器,则包含临时目录的驱动上的可用磁盘空间必须至少为数据大小的 3 到 4 倍,原因是在将定位器复制到输出位置之前,需将用于构建定位器的文件写入此位置。 如果没有足够的磁盘空间,则一旦空间不足,工具将失败。 此外,在创建大型定位器时,计算机必须具备足够的 RAM,才能处理占用较大内存的进程。 | Value Table |
字段映射 | 主参考数据集字段到定位器角色所支持字段的映射。 名称旁带有星号 (*) 的字段是定位器角色的必填字段。 映射主表参数值中每个表的相关字段。 注:如果正在使用的是备用名称表,请映射主表参数值中的连接 ID。 要添加自定义输出字段,请提供自定义输出字段参数中的字段名称。 新的字段将添加至字段映射参数值。 然后,您可从主表参数值中选择字段,这些字段包含了要纳入地理编码输出的附加值。 | String |
输出定位器 | 输出地址定位器文件。 | Address Locator |
语言代码 | 指定将于何处将特定于语言的地理编码逻辑应用于定位器的参考数据。 若主要参考数据中存在语言代码字段,则提供语言代码可改善地理编码的结果。 可通过使用列表中的 <按数据中所定义的方式> 并从字段映射中的主参考数据内映射某一值来对其进行指定,或通过从列表中指定某一语言来将其应用于整个数据集。
| String |
备用名称表 (可选) | 包含主角色表中备用要素名称的表。 表示为服务的表作为数据类型,支持用作备用名称表。 警告:如果为备用名称表定义了定义查询或存在选定记录,则在创建定位器时,仅将包含查询记录和所选记录。 | Value Table |
备用数据字段映射 (可选) | 备用名称表字段到定位器角色所支持备用名称字段的映射。 名称旁带有星号 (*) 的字段是定位器角色的必填字段。 映射替代名称表参数值中每个表的相关字段。 注:如果数据已归一化且主表不包含城市名称值(但备用名称表中包含),则可将 Primary Name Indicator 字段映射至备用名称表中的字段,该字段包含一个值,该值指示了记录是否为主字段(例如,true/false 或 Yes/No)。 如果未映射此字段,则备用名称表中的第一条记录将被用作主值。 | String |
自定义输出字段 (可选) | 将用户定义的输出字段添加到定位器。 针对此参数指定的值将定义由地理编码结果返回的自定义输出字段的名称;但必须将各个新字段映射至参考数据中的字段。 这个新输出字段将应用于定位器中所使用的全部角色。 如果定位器角色具有左侧和右侧之分,则字段名称的末尾将附加 _left 和 _right。 定位器中支持的最大字段数量为 50。 执行以下操作,将自定义输出字段添加至定位器以在地理编码结果中使用:
| String |
精度类型 (可选) | 指定定位器的精度。
注:使用全球超高或局部超高精度创建的定位器可用于 ArcGIS Pro 2.6 或更高版本以及 Enterprise 10.8.1 或更高版本。 | String |
摘要
创建定位器,以供查找地址或地点位置,将地址或地点表转换为点要素集合,或标识点位置的地址。
注:
通过此工具创建的定位器可用于 ArcGIS Pro 2.2 或更高版本、Enterprise 10.6.1 或更高版本以及作为 ArcMap 中的定位器服务。 在 Enterprise 10.7 之前的版本中,不一定支持所有定位器功能。 当向最新版本的软件中添加附加功能时,上述情况适用。 通过此工具创建的定位器不能用作 ArcMap 中的本地定位器。
使用情况
定位器角色可用于定义当前正在使用的数据类型(宗地、街道中心线、邮政、感兴趣点等)并提供构建定位器时所使用的相应字段以及地理编码结果中所返回的信息。 系统仅会列出所选国家/地区值支持的角色及其相应的定位器角色字段。
注:
- 当使用此工具构建定位器时,每个角色只能使用一个主表。
- 感兴趣点 (POI) 定位器角色可代替地名别名表,但它需要地名的点或面要素类以及属性表中的关联地址。
随 ArcGIS AllSource 提供的主定位器角色允许您构建以下常见类型的定位器:
- PointAddress - 街道地址(基于代表房屋和建筑位置的点)。 其中包括 Subaddress(基于代表房屋和建筑子地址位置的点,例如套房,楼层或公寓)。
- Parcel - 基于点或面的地址或宗地名称,表示被视为不动产且可能包括一个或多个房屋或其他建筑物的一片土地,通常会为其分配一个地址和宗地标识号,例如 17 011100120063。
- StreetAddress - 街道地址(基于门牌号由数字范围内插的街道)。 其中包括十字路口、街道名称、街区和街道扩建。
- 感兴趣点 - 行政区域、地名、企业、地标和地理要素 - 例如星巴克。
- DistanceMarker - 用于表示沿某条街道的线性距离的街道地址(通常以公里或英里为单位,且指定了原点位置)。
- DistanceRange - 该距离标记类型表示沿某街道中心线基于线要素的内插距离值。
- Postal - 邮政编码、带扩展数字的邮政编码以及应使用多边形参考数据返回最佳反向地理编码结果的邮政地点。
- Localities - 行政区域或地区,如城市、社区、州等,其中多边形参考数据应用于返回最佳反向地理编码结果。
可以使用工具创建多角色定位器。 多角色定位器允许您将多个参考数据图层和角色组合成一个定位器,以便一次搜索多种类型的位置。 如果可以将几何类型相同的多个图层分配给同一角色,则最好将这些图层合并为单个图层,然后将合并后的图层用作相应角色的主要参考数据。
使用此工具创建的定位器支持坐标的全局搜索(经度/纬度、MGRS、DD、USNG 等)。 用于构建定位器的主要参考数据中必须至少包含一个要素。 在定位器的定位器属性对话框中,可以在地理编码选项页面的支持的类别下禁用或启用坐标搜索支持。
创建定位器时,可以指定参考数据中的其他字段并将其作为自定义输出字段添加到定位器。 这些字段用于提供有关地理编码结果候选项的附加信息。 例如,如果希望了解某个地址与哪个人口普查区或消防区相关联,可以对地址进行地理编码,并将人口普查区或消防区的属性在空间上连接到地理编码结果。 通过将具有附加信息的图层的属性空间连接到用于构建定位器的参考数据,可以在构建定位器时将连接的字段指定为用户定义的自定义输出字段。 地理编码结果将包括其他自定义输出字段及其值。
表示为服务的要素类和表作为数据类型,支持用作主要参考数据和备用名称表。
备用名称表可用于所有受支持的定位器角色,且支持主要参考数据中的备用要素名称。
可将此工具的输出用作创建复合地址定位器工具的输入。
要生成正确的 Python 语法,首先使用适当的参数选项从地理处理窗格运行该工具。 然后打开运行菜单并选择复制 Python 命令选项。
您可以使用具有 z 值的点要素类作为主要参考数据来构建定位器。 应在绝对高程上创建这些具有 z 值的要素,以便地理编码结果能够在地图中显示预期的高程。
参数
arcpy.geocoding.CreateLocator(country_code, primary_reference_data, field_mapping, out_locator, language_code, {alternatename_tables}, {alternate_field_mapping}, {custom_output_fields}, {precision_type})
名称 | 说明 | 数据类型 |
country_code | 指定将于何处将特定于国家/地区的地理编码逻辑应用于定位器的参考数据。 可使用 AS_DEFINED_IN_DATA 对其进行指定,并且可从 field_mapping 中的 primary_reference_data 内映射某一值,或通过指定三个字符的国家/地区代码名称(例如用于美利坚合众国的 USA、用于加拿大的 CAN 或用于波多黎各的 PRI),将其应用于整个数据集。 它提供了一个国家/地区模板,该模板中包含了可供 field_mapping 参数使用的预期字段名称以便为定位器创建指定的国家/地区。
| String |
primary_reference_data [[reference_data, {role}],...] | 参考数据要素类及其将用于创建定位器的角色。 每个角色只能使用一个主表。 表示为服务的要素类作为数据类型,支持用作主要参考数据。 警告:如果为主要参考数据定义了定义查询或存在选定要素,则在创建定位器时,仅将包含查询要素和所选要素。 注:如果使用包含数百万个要素的参考数据创建地址定位器,则包含临时目录的驱动上的可用磁盘空间必须至少为数据大小的 3 到 4 倍,原因是在将定位器复制到输出位置之前,需将用于构建定位器的文件写入此位置。 如果没有足够的磁盘空间,则一旦空间不足,工具将失败。 此外,在创建大型定位器时,计算机必须具备足够的 RAM,才能处理占用较大内存的进程。 | Value Table |
field_mapping [field_mapping,...] | 主参考数据集字段到定位器角色所支持字段的映射。 此参数中的每个字段映射均采用如下格式,其中 <role name> 是定位器角色名称,<locator role field name> 是定位器角色支持的字段的名称,<primary data> 是在 primary_reference_data 参数中使用的数据的名称,<primary data field name> 是主要参考数据集中的字段的名称。 以下为主 field_mapping 的示例。
映射 primary_reference_data 参数中每个表的相关字段。 如果不想将定位器角色所使用的可选参考数据字段映射到参考数据集中的字段,则无需使用 <None> 来代替字段名,以此指定不存在任何映射。 要确定定位器角色所使用的参考数据字段的 <locator role field name> 值,请在 ArcGIS AllSource 中打开创建定位器工具并选择相应的定位器角色。 出现在字段映射参数的字段名称列中的名称就是字段角色的字段名称。 注:如果正在使用的是备用名称表,请映射 primary_reference_data 参数值中的连接 ID。 要添加自定义输出字段,则必须在 custom_output_fields 和 field_mapping 参数中定义字段名称。 field_mapping 参数将使用格式 '<locator role field name> <primary data field name>',其中 <locator role field name> 被定义为 'RoleName.CustomFieldName',<primary data field name> 为主参考数据集中字段的名称,如以上示例中的映射字段所示。 若将自定义字段添加至“街道地址”角色,则您需要映射街道两侧的 'StreetAddress.CustomFieldName_Left' 和 'StreetAddress.CustomFieldName_Right'。 | String |
out_locator | 输出地址定位器文件。 | Address Locator |
language_code | 指定将于何处将特定于语言的地理编码逻辑应用于定位器的参考数据。 若主要参考数据中存在语言代码字段,则提供语言代码可改善地理编码的结果。 可通过将 AS_DEFINED_IN_DATA 设置为 language_code 值并从 field_mapping 中的 primary_reference_data 内映射某一值来对其进行指定,或通过使用表示地址语言的三位字符语言代码(如用于英语的 ENG)来指定某一语言,从而将其应用于整个数据集。
| String |
alternatename_tables [alternatename_tables,...] (可选) | 包含主角色表中备用要素名称的表。 表示为服务的表作为数据类型,支持用作备用名称表。 警告:如果为备用名称表定义了定义查询或存在选定记录,则在创建定位器时,仅将包含查询记录和所选记录。 | Value Table |
alternate_field_mapping [alternate_field_mapping,...] (可选) | 将备用名称表字段映射到定位器角色所支持的备用数据字段。 每个字段映射必须使用以下格式,其中 <alternate name table role> 是备用名称表角色的名称,<locator role alternate field name> 是备用名称表定位器角色支持的备用数据字段的名称,<alternate data table> 是备用名称表的名称,<alternate data table field name> 是备用名称表中的字段的名称。 映射 alternatename_tables 中每个表的相关字段。 下面是 alternatename_tables 的 alternate_field_mapping 示例。
注:如果数据已归一化且主表不包含城市名称值(但备用名称表中包含),则可将 Primary Name Indicator 字段映射至备用名称表中的字段,该字段包含一个值,该值指示了记录是否为主字段(例如,true/false 或 Yes/No)。 如果未映射此字段,则备用名称表中的第一条记录将被用作主值。 | String |
custom_output_fields [custom_output_fields,...] (可选) | 将用户定义的输出字段添加到定位器。 针对此参数指定的值将定义由地理编码结果返回的自定义输出字段的名称;但必须将各个新字段映射至参考数据中的字段。 这个新输出字段将应用于定位器中所使用的全部角色。 如果定位器角色具有左侧和右侧之分,则字段名称的末尾将附加 _left 和 _right。 定位器中支持的最大字段数量为 50。 注:您必须首先将自定义输出字段名称纳入 field_mapping 参数;然后在 custom_output_fields 参数中列出这些名称。 | String |
precision_type (可选) | 指定定位器的精度。 注:使用 GLOBAL_EXTRA_HIGH 或 LOCAL_EXTRA_HIGH 精度创建的定位器可用于 ArcGIS Pro 2.6 或更高版本以及 Enterprise 10.8.1 或更高版本。
| String |
代码示例
以下 Python 脚本演示了如何在独立脚本中使用 CreateLocator 函数。
# Description: Create a POI locator using a feature class in a file geodatabase
# that contains points of interest for Arts & Entertainment
# locations as reference data, where country_code and language_code
# are defined in the data. The new locator will be created in a
# file folder.
# Import system modules
import arcpy
# Set workspace
arcpy.env.workspace = "C:/Data/RhodeIsland"
# Set local variables:
primary_reference_data = "RI_Arts_POI POI"
field_mapping = ["POI.PLACE_NAME 'RI_Arts_POI'.PLACE_NAME",\
"POI.CATEGORY 'RI_Arts_POI'.CATEGORY",\
"POI.SUBCATEGORY 'RI_Arts_POI'.SUBCATEGORY",\
"POI.HOUSE_NUMBER 'RI_Arts_POI'.HOUSE_NUMB",\
"POI.STREET_NAME 'RI_Arts_POI'.STREET_NAME",\
"POI.NEIGHBORHOOD 'RI_Arts_POI'.NEIGHBORHOOD",\
"POI.CITY 'RI_Arts_POI'.CITY_NAME",\
"POI.SUBREGION 'RI_Arts_POI'.SUBREGION",\
"POI.REGION 'RI_Arts_POI'.REGION_NAME",\
"POI.POSTAL 'RI_Arts_POI'.POSTAL_CODE",\
"POI.COUNTRY_CODE 'RI_Arts_POI'.COUNTRY_CODE",\
"POI.LANG_CODE 'RI_Arts_POI'.LANGUAGE_CODE",\
"POI.RANK 'RI_Arts_POI'.RANK"]
out_locator = "Arts_Entertainment_POIs"
# Run CreateLocator
arcpy.geocoding.CreateLocator("AS_DEFINED_IN_DATA", primary_reference_data, field_mapping,
out_locator, "AS_DEFINED_IN_DATA")
以下 Python 脚本演示了如何在独立脚本中使用 CreateLocator 函数。
# Description: Create a POI locator using a shapefile that contains points
# of interest for airport locations as reference data. The new
# locator will be created in a file folder.
# Import system modules
import arcpy
# Set local variables:
country_code="USA"
primary_reference_data=r"C:\Data\airports.shp POI"
field_mapping=["POI.PLACE_NAME 'airports.shp'.name",\
"POI.CATEGORY 'airports.shp'.type",\
"POI.REGION 'airports.shp'.iso_region",\
"POI.ZONE 'airports.shp'.iso_country"]
out_locator=r"C:\Data\Airports_Locator"
language_code="ENG"
# Run CreateLocator
arcpy.geocoding.CreateLocator(country_code, primary_reference_data, field_mapping,
out_locator, language_code)
以下 Python 脚本演示了如何在即时模式下使用 CreateLocator 函数。
# Description: Create a StreetAddress locator using a street centerline feature
# class in a file geodatabase as reference data, where multiple
# custom_output_fields are added to the locator for use in the
# geocode result. country_code and language_code are specified and
# will be applied to the entire reference dataset. The new locator
# will be created in a file folder.
# Import system modules
import arcpy
# Set workspace
arcpy.env.workspace = "C:/Data/Denver"
# Set local variables
country_code = "USA"
primary_reference_data = "Street_Centerline StreetAddress"
field_mapping = ["StreetAddress.HOUSE_NUMBER_FROM_LEFT 'Street_Centerline'.L_F_ADD",\
"StreetAddress.HOUSE_NUMBER_TO_LEFT 'Street_Centerline'.L_T_ADD",\
"StreetAddress.HOUSE_NUMBER_FROM_RIGHT 'Street_Centerline'.R_F_ADD",\
"StreetAddress.HOUSE_NUMBER_TO_RIGHT 'Street_Centerline'.R_T_ADD",\
"StreetAddress.STREET_PREFIX_DIR 'Street_Centerline'.PREFIX",\
"StreetAddress.STREET_PREFIX_TYPE 'Street_Centerline'.TYPE",\
"StreetAddress.STREET_NAME 'Street_Centerline'.NAME",\
"StreetAddress.STREET_SUFFIX_TYPE 'Street_Centerline'.TYPE",\
"StreetAddress.STREET_SUFFIX_DIR 'Street_Centerline'.SUFFIX",\
"StreetAddress.POSTAL_LEFT 'Street_Centerline'.ZIPLEFT",\
"StreetAddress.POSTAL_RIGHT 'Street_Centerline'.ZIPRIGHT",\
"StreetAddress.CustomField1_left 'Street_Centerline'.LEFTFIRE",\
"StreetAddress.CustomField1_right 'Street_Centerline'.RTFIRE",\
"StreetAddress.CustomField2_left 'Street_Centerline'.LEFTEMS",\
"StreetAddress.CustomField2_right 'Street_Centerline'.RTEMS"]
out_locator = "DenverStreetsCustomFieldsLocator"
language_code = "ENG"
# Run CreateLocator
arcpy.geocoding.CreateLocator(country_code, primary_reference_data, field_mapping,
language_code, None, None, "CustomField1;CustomField2")
以下 Python 脚本演示了如何在即时模式下使用 CreateLocator 函数。
# Create a StreetAddress locator using a street centerline feature class and an alternate
# name table, for alternate street names, in a file geodatabase as reference data.
# The new locator will be created in a file folder.
# Import system modules
import arcpy
# Set workspace
arcpy.env.workspace = "C:/ArcTutor/Geocoding/Atlanta"
# Set local variables
primary_reference_data = "streets StreetAddress"
field_mapping = ["StreetAddress.STREET_NAME_JOIN_ID 'streets'.STREETID",\
"StreetAddress.HOUSE_NUMBER_FROM_LEFT 'streets'.L_F_ADD",\
"StreetAddress.HOUSE_NUMBER_TO_LEFT 'streets'.L_T_ADD",\
"StreetAddress.HOUSE_NUMBER_FROM_RIGHT 'streets'.R_F_ADD",\
"StreetAddress.HOUSE_NUMBER_TO_RIGHT 'streets'.R_T_ADD",\
"StreetAddress.STREET_PREFIX_DIR 'streets'.PREFIX",\
"StreetAddress.STREET_PREFIX_TYPE 'streets'.PRE_TYPE",\
"StreetAddress.STREET_NAME 'streets'.NAME",\
"StreetAddress.STREET_SUFFIX_TYPE 'streets'.TYPE",\
"StreetAddress.STREET_SUFFIX_DIR 'streets'.SUFFIX",\
"StreetAddress.CITY_LEFT 'streets'.CITYL",\
"StreetAddress.CITY_RIGHT 'streets'.CITYR",\
"StreetAddress.REGION_LEFT 'streets'.STATE_ABBR",\
"StreetAddress.REGION_RIGHT 'streets'.STATE_ABBR",\
"StreetAddress.POSTAL_LEFT 'streets'.ZIPL",\
"StreetAddress.POSTAL_RIGHT 'streets'.ZIPR"]
alternatename_tables = "altname AlternateStreetName"
alternate_field_mapping = ["AlternateStreetName.STREET_NAME_JOIN_ID 'altname'.STREETID",\
"AlternateStreetName.STREET_PREFIX_DIR 'altname'.PRE_DIR",\
"AlternateStreetName.STREET_PREFIX_TYPE 'altname'.PRE_TYPE",\
"AlternateStreetName.STREET_NAME 'altname'.ST_NAME",\
"AlternateStreetName.STREET_SUFFIX_TYPE 'altname'.ST_TYPE",\
"AlternateStreetName.STREET_SUFFIX_DIR 'altname'.SUF_DIR",\
"AlternateStreetName.PRIMARY_NAME_INDICATOR 'altname'.PRIMARY"]
out_locator = "AtlantaAlternateStreetsLocator"
# Run CreateLocator
arcpy.geocoding.CreateLocator("USA", primary_reference_data, field_mapping,
out_locator, "ENG", alternatename_tables,
alternate_field_mapping)
以下 Python 脚本演示了如何在即时模式下使用 CreateLocator 函数。
# Description: Create a multirole locator (PointAddress & StreetAddress) using a hosted
# feature service from ArcGIS Online as reference data.
# country_code and language_code
# are specified and will be applied to the entire reference dataset.
# The new locator will be created in a file folder.
# Import system modules
import arcpy
# Sign in to ArcGIS Online to use feature services as input
arcpy.SignInToPortal("https://www.arcgis.com", "<username>", "<password>")
# Set local variables
country = "USA"
in_table = "https://services.arcgis.com/<layer_id>/arcgis/rest/services/<service_name>/FeatureServer/<layer_number> PointAddress;"\
"https://services.arcgis.com/<layer_id>/arcgis/rest/services/<service_name>/FeatureServer/<layer_number> StreetAddress"
field_mapping = ["PointAddress.ADDRESS_JOIN_ID '0'.PT_ADDR_ID",\
"PointAddress.HOUSE_NUMBER '0'.ADDRESS",\
"PointAddress.STREET_NAME '0'.ST_NAME",\
"PointAddress.SIDE '0'.SIDE",\
"PointAddress.CITY '0'.CITY",\
"PointAddress.REGION '0'.STATE",\
"StreetAddress.HOUSE_NUMBER_FROM_LEFT '1'.L_F_ADD_INT",\
"StreetAddress.HOUSE_NUMBER_TO_LEFT '1'.L_T_ADD_INT",\
"StreetAddress.HOUSE_NUMBER_FROM_RIGHT '1'.R_F_ADD_INT",\
"StreetAddress.HOUSE_NUMBER_TO_RIGHT '1'.R_T_ADD_INT",\
"StreetAddress.STREET_PREFIX_DIR '1'.PREFIX",\
"StreetAddress.STREET_PREFIX_TYPE '1'.PRETYPE",\
"StreetAddress.STREET_NAME '1'.NAME",\
"StreetAddress.STREET_SUFFIX_TYPE '1'.TYPE",\
"StreetAddress.STREET_SUFFIX_DIR '1'.SUFFIX",\
"StreetAddress.CITY_LEFT '1'.PLACENAME_L",\
"StreetAddress.CITY_RIGHT '1'.PLACENAME_R",\
"StreetAddress.REGION_LEFT '1'.STATE",\
"StreetAddress.REGION_ABBR_LEFT '1'.STATE_L",\
"StreetAddress.REGION_RIGHT '1'.STATE",\
"StreetAddress.REGION_ABBR_RIGHT '1'.STATE_R"]
out_locator = r"C:\output\locators\MultiroleFeatureServiceBasedLocator"
language = "ENG"
# Run CreateLocator
arcpy.geocoding.CreateLocator(country, in_table, field_mapping, out_locator, language)