标注 | 说明 | 数据类型 |
输入表 | 要对其进行地理编码的地址表。 | Table View |
输入地址定位器 | 将用于对地址表进行地理编码的地址定位器。 注:在定位器路径末尾的定位器名称后包含 .loc 扩展名为可选项。 | Address Locator |
输入地址字段 | 地址定位器所使用的地址字段与输入地址表中的字段之间的映射。 如果完整地址储存在输入表的一个字段中,例如 303 Peachtree St NE, Atlanta, GA 30308,请选择单个字段。 如果将常规美国地址的输入划分为 Address、City、State 和 ZIP 等多个字段,请选择多个字段。 如果将完整地址和国家/地区拆分为多个字段,例如 Address (303 Peachtree St NE, Atlanta, GA 30308) 和 Country (USA),则选择单个字段和国家/地区字段。 某些定位器支持多个输入地址字段,例如 Address、Address2 和 Address3。 在此情况下,可以将地址组件分为多个字段,然后在进行地理编码时将地址字段连接在一起。 例如,跨三个字段的 100、Main st 和 Apt 140,或者跨两个字段的 100 Main st 和 Apt 140,在进行地理编码时,都将成为 100 Main st Apt 140。 如果不想将地址定位器所使用的可选输入地址字段映射到输入地址表中的字段,请使用 <None> 来代替字段名,以此指定不存在任何映射。 | Field Info |
输出要素类 | 经过地理编码的输出要素类。 注:由于 shapefile 限制,系统不支持将输出保存为 shapefile 格式。 | Feature Class |
动态输出要素类 (可选) | 参数在 ArcGIS AllSource 中处于非活动状态。 保留它是为了支持 ArcGIS Desktop 向后兼容。 | Boolean |
国家/地区 (可选) | 搜索地理编码地址的一个或多个国家/地区。 此参数可用于支持国家/地区参数的定位器,并将地理编码限制在所选国家/地区。 指定一个国家/地区将在大多数情况下提高地理编码的准确性。 当为输入地址字段参数选择单个字段和国家/地区字段,并在映射表示国家的字段时将输入表参数值用于输入地址字段参数值的 Country 字段,输入表参数中的国家/地区值将覆盖国家/地区参数。 这仅限于指定的一个或多个国家/地区。 如果未指定国家/地区,则使用定位器的所有受支持国家/地区执行地理编码。 国家/地区参数不适用于所有定位器。 | String |
首选位置类型 (可选) | 用于指定 PointAddress 匹配的首选输出几何。 此参数的选项包括路由位置(可用于路由的街道位置侧)和地址位置(表示地址屋顶或宗地质心的位置)。 如果数据中不存在首选位置,则将返回默认位置。 对于 Addr_type=PointAddress 的地理编码结果,x,y 属性值用于描述沿着街道的地址的坐标,而 DisplayX 和 DisplayY 值用于描述屋顶或建筑物质心坐标。 此参数并非支持所有定位器。
| String |
类别 (可选) | 限制定位器搜索的地点类型,从而消除误报匹配并可能加快搜索过程的速度。 如果未使用任何类别,将使用所有支持的类别执行地理编码。 并非所有位置和国家/地区都支持所有类别值。 通常,该参数可以用于以下几个方面:
此参数并非支持所有定位器。 有关类别过滤的详细信息,请参阅 ArcGIS REST API Web 帮助。 | String |
输出字段 (可选) | 指定将在地理编码结果中返回的定位器输出字段。
| String |
摘要
对地址表进行地理编码。 此过程需要一个存储有要进行地理编码的地址的表和一个地址定位器或复合地址定位器。 此工具根据定位器来匹配存储的地址并将每个输入记录的结果保存在新的点要素类中。 使用 ArcGIS World Geocoding Service 时,此操作可能会消耗配额。
使用 ArcGIS World Geocoding Service 执行地理编码操作需要 ArcGIS 组织账户并需要消耗配额。 组织帐户必须具有足够的配额,才能完成整个地理编码请求。
注:
当活动门户为 ArcGIS Online 且输入定位器为 ArcGIS World Geocoding Service 时,工具顶部将提供配额估算。
使用情况
您可以对存储在单个字段中或拆分成多个字段的地址进行地理编码,也可以对存储在单个字段和国家/地区字段的地址编码。 单个输入字段可存储完整地址,例如,303 Peachtree St NE, Atlanta, GA 30308。 如果将常规美国地址的输入地址划分为 Address、City、State 和 ZIP 等多个字段,则系统支持多个字段。 单个输入字段可存储完整地址,例如,303 Peachtree St NE, Atlanta, GA 30308,以及存储与地址关联的国家/地区的字段(例如,USA)
某些定位器支持多个输入地址字段,例如 Address、Address2 和 Address3。 在此情况下,可以将地址组件分为多个字段,然后在进行地理编码时将地址字段连接在一起。 例如,跨三个字段的 100、Main st 和 Apt 140,或者跨两个字段的 100 Main st 和 Apt 140,在进行地理编码时,都将成为 100 Main st Apt 140。
输出要素类保存在与地址定位器相同的空间参考中。 要更改输出要素类的空间参考,请在工具的环境设置中设置其他输出坐标系。
默认情况下,输出要素类会存储输入地址的副本及其他信息(例如每个记录的得分、状态和匹配的地址)。 可使用重新匹配地址工具或重新匹配地址选项(将打开重新匹配地址窗格)重新匹配地址。 一旦匹配过程结束且创建了要素类,编辑输入地址表中的地址就不会改变输出要素类中的结果。
要使用 ArcGIS World Geocoding Service 来匹配地址表,则需要 ArcGIS Online for organizations 订阅。
要生成正确的 Python 语法,首先使用适当的结果顺序参数选项从地理处理窗格运行该工具。 然后打开运行菜单并选择复制 Python 命令。
参数
arcpy.geocoding.GeocodeAddresses(in_table, address_locator, in_address_fields, out_feature_class, {out_relationship_type}, {country}, {location_type}, {category}, {output_fields})
名称 | 说明 | 数据类型 |
in_table | 要对其进行地理编码的地址表。 | Table View |
address_locator | 将用于对地址表进行地理编码的地址定位器。 注:在定位器路径末尾的定位器名称后包含 .loc 扩展名为可选项。 | Address Locator |
in_address_fields [input_address_field, table_field_name] |
此参数中的每个字段映射均采用 input_address_field, table_field_name 格式,其中 input_address_field 是地址定位器指定的输入地址字段名称,table_field_name 是要进行地理编码的地址表中相应字段的名称。 您可以可以指定单个输入字段以存储完整地址,例如,303 Peachtree St NE, Atlanta, GA 30308。 如果常规美国地址的输入地址划分为 Address、City、State 和 ZIP 等多个字段,也可以指定多个字段。 也可以指定单个输入字段可存储完整地址,例如,303 Peachtree St NE, Atlanta, GA 30308,以及存储与地址关联的国家/地区的字段(例如,USA)。 某些定位器支持多个输入地址字段,例如 Address、Address2 和 Address3。 在此情况下,可以将地址组件分为多个字段,然后在进行地理编码时将地址字段连接在一起。 例如,跨三个字段的 100、Main st 和 Apt 140,或者跨两个字段的 100 Main st 和 Apt 140,在进行地理编码时,都将成为 100 Main st Apt 140。 如果不想将地址定位器所使用的可选输入地址字段映射到输入地址表中的字段,请使用 <None> 来代替字段名,以此指定不存在任何映射。 | Field Info |
out_feature_class | 经过地理编码的输出要素类。 注:由于 shapefile 限制,系统不支持将输出保存为 shapefile 格式。 | Feature Class |
out_relationship_type (可选) | 旧版本:此参数在 ArcGIS AllSource 中不起作用。 保留它是为了支持 ArcGIS Desktop 向后兼容。 在 ArcGIS AllSource 中,唯一允许的值是 STATIC。
| Boolean |
country [country,...] (可选) | 搜索地理编码地址的一个或多个国家/地区。 此参数可用于支持国家/地区参数的定位器,并将地理编码限制在所选国家/地区。 指定一个国家/地区将在大多数情况下提高地理编码的准确性。 如果 in_table 参数中表示国家/地区的字段映射到 input_address_field 参数值中的 Country 字段,则 in_table 参数中的国家/地区值将覆盖 country 参数。 这仅限于指定的一个或多个国家/地区。 如果未指定国家/地区,则使用定位器的所有受支持国家/地区执行地理编码。 在以逗号分隔的列表中,将值指定为 2 个字符或 3 个字符的国家/地区代码。 有关要使用的输入值,请参阅受支持的国家/地区代码列。 country 参数并非支持所有定位器。 | String |
location_type (可选) | 用于指定 POINT_ADDRESS 匹配的首选输出几何。 此参数的选项包括 ROUTING_LOCATION(可用于路由的街道位置侧)和 ADDRESS_LOCATION(表示屋顶、地址宗地质心或前门的位置) 如果数据中不存在首选位置,则会返回 ROUTING_LOCATION 的默认位置。 对于 Addr_type = PointAddress 的地理编码结果,x,y 属性值用于描述沿着街道的地址的坐标,而 DisplayX 和 DisplayY 值用于描述屋顶或建筑物质心坐标。 有关 geocodeAddresses 的 locationType 参数的详细信息,请参阅 ArcGIS REST API Web 帮助。 此参数并非支持所有定位器。
| String |
category [category,...] (可选) | 限制定位器搜索的地点类型,从而消除误报匹配并可能加快搜索过程的速度。 如果未使用任何类别,将使用所有支持的类别执行地理编码。 并非所有位置和国家/地区都支持所有类别值。 通常,该参数可以用于以下几个方面:
此参数并非支持所有定位器。 有关类别过滤的详细信息,请参阅 ArcGIS REST API Web 帮助。 | String |
output_fields (可选) | 指定将在地理编码结果中返回的定位器输出字段。 注:此参数可与使用创建定位器或创建要素定位器工具创建的输入定位器一起使用,这些定位器存储在磁盘上或已发布到 Enterprise 10.9 或更高版本。 包含至少一个使用创建地址定位器工具创建的定位器的复合定位器不支持此参数。
| String |
代码示例
以下脚本演示了如何使用 GeocodeAddresses 函数,以使用本地定位器对地址表进行地理编码。
import arcpy
arcpy.env.workspace = "C:\Geocoding\atlanta"
# Set local variables
table = "customers.dbf"
locator = "Atlanta_AddressLocator.loc"
field_map = ("\'Address or Place\' Address VISIBLE NONE;Address2 <None> VISIBLE NONE;Address3 <None> VISIBLE NONE;" +
"Neighborhood <None> VISIBLE NONE;City <None> VISIBLE NONE;County <None> VISIBLE NONE;" +
"State <None> VISIBLE NONE;ZIP ZIP <None> VISIBLE NONE;ZIP4 <None> VISIBLE NONE;" +
"Country <None> VISIBLE NONE")
geocode_result = "geocode_result.shp"
arcpy.geocoding.GeocodeAddresses(table, locator,
field_map, geocode_result)
以下脚本演示了如何使用 GeocodeAddresses 函数,以使用服务器定位器通过 AGS 连接对地址表进行地理编码。
import arcpy
# Set local variables:
table = r"C:\data\Atlanta.gdb\customers"
locator = r"C:\ags_connections\server_name.ags\Atlanta.GeocodeServer"
field_map = "'Single Line Input' SingleLine VISIBLE NONE"
geocode_result = r"C:\outputs\geocode_result.shp"
arcpy.geocoding.GeocodeAddresses(table, locator,
field_map, geocode_result)
以下脚本演示了如何使用 GeocodeAddresses 函数,以使用门户定位器对地址表进行地理编码。
注:
如果您正在使用您的门户上的定位器,请确保您已登录系统并在 ArcGIS AllSource 中将其设置为您的活动门户。 要访问除活动门户之外的门户上的定位器,请使用 SignInToPortal 函数进行身份验证。
import arcpy
# Set local variables
table = r"C:\data\Atlanta.gdb\customers"
locator = "https://machinename.domain.com/server/rest/services/service_name/GeocodeServer/portal_item_name"
field_map = ("\'Address or Place\' Address VISIBLE NONE;Address2 <None> VISIBLE NONE;Address3 <None> VISIBLE NONE;" +
"Neighborhood <None> VISIBLE NONE;City <None> VISIBLE NONE;County <None> VISIBLE NONE;" +
"State <None> VISIBLE NONE;ZIP ZIP <None> VISIBLE NONE;ZIP4 <None> VISIBLE NONE;" +
"Country <None> VISIBLE NONE")
geocode_result = r"C:\outputs\geocode_result.shp"
arcpy.geocoding.GeocodeAddresses(table, locator, field_map, geocode_result)
以下脚本演示了如何使用 GeocodeAddresses 函数,以使用 ArcGIS World Geocoding Service 对地址表进行地理编码。
注:
如果您正在使用您的门户上的定位器,请确保您已登录系统并在 ArcGIS AllSource 中将其设置为您的活动门户。 要访问除活动门户之外的门户上的定位器,请使用 SignInToPortal 函数进行身份验证。
注:
使用 ArcGIS World Geocoding Service 时,此操作可能会消耗配额。
import arcpy
# Set local variables
table = r"C:\data\Addresses.csv"
#Sign in to Portal
#arcpy.SignInToPortal("https://www.arcgis.com.", "MyUsername", "MyPassword")
locator = "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/ArcGIS World Geocoding Service"
field_map = ("\'Address or Place\' Address VISIBLE NONE;Address2 <None> VISIBLE NONE;Address3 <None> VISIBLE NONE;" +
"Neighborhood <None> VISIBLE NONE;City <None> VISIBLE NONE;Subregion <None> VISIBLE NONE;" +
"Region <None> VISIBLE NONE;ZIP ZIP <None> VISIBLE NONE;ZIP4 <None> VISIBLE NONE;" +
"Country <None> VISIBLE NONE")
geocode_result = r"C:\outputs\geocode_result.shp"
arcpy.geocoding.GeocodeAddresses(table, locator, field_map, geocode_result)
下面的 Python 窗口脚本演示了如何使用 GeocodeAddresses 函数通过 ArcGIS World Geocoding Service 对地址表进行地理编码,其中,所有地址数据均位于单个字段中,国家/地区数据位于第二个字段中。
注:
如果您正在使用您的门户上的定位器,请确保您已登录系统并在 ArcGIS AllSource 中将其设置为您的活动门户。 要访问除活动门户之外的门户上的定位器,请使用 SignInToPortal 函数进行身份验证。
注:
使用 ArcGIS World Geocoding Service 时,此操作可能会消耗配额。
import arcpy
# Set local variables
table = r"C:\Data\MyDatabase.gdb\DistributionCenters"
#Sign in to Portal
#arcpy.SignInToPortal("https://www.arcgis.com.", "MyUsername", "MyPassword")
locator = "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/ArcGIS World Geocoding Service"
field_map = "'Single Line Input' SingleLine VISIBLE NONE;Country Country VISIBLE NONE"
geocode_result = r"C:\Data\MyDatabase.gdb\DistributionCenters_Geocoded"
arcpy.geocoding.GeocodeAddresses(table, locator, field_map, geocode_result)