描述
对地址表进行地理编码。此过程需要一个存储有要进行地理编码的地址的表和一个地址定位器或复合地址定位器。此工具根据定位器来匹配地址并将每个输入记录的结果保存在新的点要素类中。使用 ArcGIS World Geocoding Service 时,此操作可能会消耗配额。
使用 ArcGIS World Geocoding Service 执行地理编码操作需要 ArcGIS Online 组织订阅并需要消耗配额。组织帐户必须具有足够的配额,才能完成整个地理编码请求。
使用方法
您可以对存储在单个字段中或拆分成多个字段的地址进行地理编码。单个输入字段可存储完整地址,例如,303 Peachtree St NE, Atlanta, GA 30308。如果将常规美国地址的输入地址拆分成 Address、City、State 和 ZIP 等多个字段,则支持多个字段。
某些定位器支持多个输入地址字段,例如 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 订阅。
语法
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 等多个字段,也可以指定多个字段。 某些定位器支持多个输入地址字段,例如 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。 | Feature Class |
out_relationship_type (可选) | 旧版本:此参数在 ArcGIS Pro 中不起作用。保留它是为了向后支持与 ArcGIS Desktop 的兼容。 在 ArcGIS Pro 中,唯一允许的值是 STATIC。
| Boolean |
country [country,...] (可选) | 此参数可用于支持国家/地区参数的定位器,并将地理编码限制在所选国家/地区。选择一个国家/地区将在大多数情况下提高地理编码的准确性。如果将表示输入表中国家/地区的字段映射到输入地址字段中的 Country 字段,则输入表中的国家/地区值将会覆盖国家/地区参数。 这仅限于所选的一个或多个国家/地区。如果未指定国家/地区,则对定位器的所有受支持国家/地区进行地理编码。输入值应指定为 ISO 3166-1 三位字符的国家/地区代码。 国家/地区不受所有定位器支持。 | String |
location_type (可选) | 用于指定 POINT_ADDRESS 匹配的首选输出几何。此参数的选项是 ROUTING_LOCATION(街道位置的一侧,可用于路径),或 ADDRESS_LOCATION(表示屋顶、地址的宗地质心或前门的位置)。如果数据中不存在首选位置,则会返回 ROUTING_LOCATION 的默认位置。对于 Addr_type = PointAddress 的地理编码结果,x,y 属性值用于描述沿着街道的地址的坐标,而 DisplayX 和 DisplayY 值用于描述屋顶或建筑物质心坐标。有关 reverseGeocode 的 locationType 参数的其他详细信息,请参阅 REST API Web 帮助。 此参数不受所有定位器支持。
| String |
category [category,...] (可选) | 限制定位器搜索的地点类型,从而消除误报匹配并可能加快搜索过程的速度。在没有使用类别的情况下,对所有支持的类别进行地理编码。并非所有位置和国家/地区都支持所有类别值。通常,该参数可以用于以下几个方面:
此参数不受所有定位器支持。 有关类别过滤的详细信息,请参阅 REST API Web 帮助。 | String |
output_fields (可选) | 指定将在地理编码结果中返回的定位器输出字段。 注:此参数可与使用创建定位器工具或创建要素定位器工具创建的输入定位器一起使用,这些定位器存储在磁盘上或已发布到 Enterprise 10.9 或更高版本。包含至少一个使用创建地址定位器工具创建的定位器的复合定位器不支持此参数。
| String |
代码示例
下面的 Python 窗口脚本演示了如何使用 GeocodeAddresses 函数通过本地定位器对地址表进行地理编码。
import arcpy
arcpy.env.workspace = "C:\ArcTutor\Geocoding\atlanta"
# Set local variables
address_table = "customers.dbf"
address_locator = "Atlanta_AddressLocator"
address_fields = ("\'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.GeocodeAddresses_geocoding(address_table, address_locator,
address_fields, geocode_result,
'STATIC')
下面的 Python 窗口脚本演示了如何使用 GeocodeAddresses 函数通过服务器定位器的 AGS 连接对地址表进行地理编码。
import arcpy
# Set local variables:
address_table = r"C:\data\Atlanta.gdb\customers"
address_locator = r"C:\ags_connections\server_name.ags\Atlanta.GeocodeServer"
address_fields = "'Single Line Input' SingleLine VISIBLE NONE"
geocode_result = r"C:\outputs\geocode_result.shp"
arcpy.GeocodeAddresses_geocoding(address_table, address_locator,
address_fields, geocode_result,
'STATIC')
下面的 Python 窗口脚本演示了如何使用 GeocodeAddresses 函数通过 Portal 定位器对地址表进行地理编码。
import arcpy
arcpy.SignInToPortal("https://machinename.domain.com/portal", "username", "password")
# Set local variables
address_table = r"C:\data\Atlanta.gdb\customers"
address_locator = "https://machinename.domain.com/server/rest/services/service_name/GeocodeServer/portal_item_name"
address_fields = ("\'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.GeocodeAddresses_geocoding(address_table, address_locator,
address_fields, geocode_result,
'STATIC')
下面的 Python 窗口脚本演示了如何使用 GeocodeAddresses 函数通过 World Geocoding Service 对地址表进行地理编码。
import arcpy
arcpy.SignInToPortal("https://www.arcgis.com/", username='username', password='password')
# Set local variables
address_table = r"C:\data\Addresses.csv"
# Using the World Geocoding Service charges credits to the signed in account
address_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.GeocodeAddresses_geocoding(address_table, address_locator,
address_fields, geocode_result,
'STATIC')
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是