Summary
Geocodes a table of addresses. This process requires a table that stores the addresses you want to geocode and an address locator or a composite address locator. This tool matches the addresses against the locator and saves the result for each input record in a new point feature class. When using the ArcGIS World Geocoding Service, this operation may consume credits.
Performing geocoding operations using the ArcGIS World Geocoding Service requires an ArcGIS Online organizational subscription and consumes credits. The organizational account must have enough credits to complete the entire geocoding request.
Usage
You can geocode addresses that are stored in a single field or are split into multiple fields. A single input field stores the complete address, for example, 303 Peachtree St NE, Atlanta, GA 30308. Multiple fields are supported if the input addresses are split into multiple fields, such as Address, City, State, and ZIP for a general United States address.
Some locators support multiple input address fields, such as Address, Address2, and Address3. In this case, the address component can be separated into multiple fields, and the address fields will be concatenated at the time of geocoding. For example, 100, Main st, and Apt 140 across three fields, or 100 Main st and Apt 140 across two fields, both become 100 Main st Apt 140 when geocoding.
The output feature class is saved in the same spatial reference as the address locator. To change the spatial reference of the output feature class, set a different output coordinate system in the tool's environment settings.
The output feature class, by default, stores a copy of the input address and additional information such as score, status, and matched address of each record. The addresses can be rematched using the Rematch Addresses tool or the Rematch Addresses option that opens the Rematch Addresses pane. Editing addresses in the input address table will not change the result in the output feature class once the matching process finishes and the feature class is created.
An ArcGIS Online for organizations subscription is required to match a table of addresses using the ArcGIS World Geocoding Service.
Syntax
arcpy.geocoding.GeocodeAddresses(in_table, address_locator, in_address_fields, out_feature_class, {out_relationship_type}, {country}, {location_type}, {category}, {output_fields})
Parameter | Explanation | Data Type |
in_table | The table of addresses to geocode. | Table View |
address_locator | The address locator to use to geocode the table of addresses. Note:Including the .loc extension after the locator name at the end of the locator path is optional. | Address Locator |
in_address_fields [input_address_field, table_field_name] |
Each field mapping in this parameter is in the format input_address_field, table_field_name where input_address_field is the name of the input address field specified by the address locator, and table_field_name is the name of the corresponding field in the table of addresses you want to geocode. You can specify one single input field that stores the complete address, for example, 303 Peachtree St NE, Atlanta, GA 30308. Alternatively, you can specify multiple fields if the input addresses are split into multiple fields such as Address, City, State, and ZIP for a general United States address. Some locators support multiple input address fields, such as Address, Address2, and Address3. In this case, the address component can be separated into multiple fields, and the address fields will be concatenated at the time of geocoding. For example, 100, Main st, and Apt 140 across three fields, or 100 Main st and Apt 140 across two fields, both become 100 Main st Apt 140 when geocoding. If you choose not to map an optional input address field used by the address locator to a field in the input table of addresses, specify that there is no mapping using <None> in place of the field name. | Field Info |
out_feature_class | The output geocoded feature class or shapefile. | Feature Class |
out_relationship_type (Optional) | Legacy:This parameter has no effect in ArcGIS Pro. It remains to support backward compatibility with ArcGIS Desktop. In ArcGIS Pro, the only permissible value is STATIC.
| Boolean |
country [country,...] (Optional) | This parameter is available for locators that support a country parameter and will limit geocoding to the selected countries. Making a country selection will improve the accuracy of geocoding in most cases. If a field representing countries in the Input Table is mapped to the Country field in Input Address Fields, the country value from the Input Table will override the Country parameter. This is limited to the selected country or countries. When no country is specified, geocoding is performed against all supported countries of the locator. The input value should be specified as ISO 3166-1 3-character country codes. Country is not supported for all locators. | String |
location_type (Optional) | Specifies the preferred output geometry for POINT_ADDRESS matches. The options for this parameter are ROUTING_LOCATION, the side of street location, which can be used for routing, or ADDRESS_LOCATION, the location that represents the rooftop, parcel centroid for the address, or front door. If the preferred location does not exist in the data, the default location of ROUTING_LOCATION will be returned instead. For geocode results with Addr_type = PointAddress, the x,y attribute values describe the coordinates of the address along the street, while the DisplayX and DisplayY values describe the rooftop or building centroid coordinates. See the REST API web help for additional details about the locationType parameter for reverseGeocode. This parameter is not supported for all locators.
| String |
category [category,...] (Optional) | Limits the types of places the locator searches, which eliminates false positive matches and potentially speeds up the search process. When no category is used, geocoding is performed against all supported categories. Not all category values are supported for all locations and countries. In general, the parameter can be used for the following:
This parameter is not supported for all locators. See the REST API web help for details about category filtering. | String |
output_fields (Optional) | Specifies which locator output fields are returned in the geocode results. Note:This parameter can be used with input locators created with the Create Locator tool or Create Feature Locator tool stored on disk or published to Enterprise 10.9 or later. Composite locators that contain at least one locator created with the Create Address Locator tool do not support this parameter.
| String |
Code sample
The following Python window script demonstrates how to use the GeocodeAddresses function to geocode a table of addresses with a local locator.
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')
The following Python window script demonstrates how to use the GeocodeAddresses function to geocode a table of addresses with a server locator via AGS connection.
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')
The following Python window script demonstrates how to use the GeocodeAddresses function to geocode a table of addresses with a Portal locator.
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')
The following Python window script demonstrates how to use the GeocodeAddresses function to geocode a table of addresses with the 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')
Environments
Licensing information
- Basic: Yes
- Standard: Yes
- Advanced: Yes