In ArcGIS Enterprise, you can use a locator to turn addresses or place-names into points on the map.
Add geocode services in ArcGIS Enterprise
To turn addresses into points on the map in your organization, you must add a geocode service to your organization and configure it as a Utility Service. You can configure and use the ArcGIS World Geocoding Service, but this requires ArcGIS Online credits to do batch geocoding. Alternatively, you can publish your own locator as a geocode service to ArcGIS Enterprise and use it.
See Configure utility services for more information about setting a locator in your organization to enable geocoding. For information about configuring the service, see the next sections.
Configure ArcGIS World Geocoding Service for ArcGIS Enterprise
To configure ArcGIS World Geocoding Service for ArcGIS Enterprise, complete the following steps:
- Sign in to your organization as an administrator.
- Go to the Organization tab, click Settings, and click ArcGIS Online.
- Check the Geocode check box and provide your ArcGIS Online username and password.
Any time ArcGIS World Geocoding Service is used for batch geocoding in this organization, credits are deducted from the account of the ArcGIS Online user you specify on this dialog box.
- Click Configure.
Configure your own locator
Sharing your own locator using either your own data or ArcGIS StreetMap Premium data allows you to create geocode services customized to your organization's needs.
How your geocode services access locator data is an important consideration when sharing locators. Performant geocoding requires data that is local to the service in order to minimize latency. While it is possible to publish geocode services that access locator data over a network connection such as an NFS share, the slower connection will result in less performant geocode services.
When publishing your own locator, it is recommended to use local Persistent Volumes to make the locator data available to the geocode service pods. Local Persistent Volumes are a feature in Kubernetes that allow you to define volumes that are bound to specific nodes in a cluster. This node-attached storage provides fast access and performance. See Add a PV-based folder data store for more information.
Local Persistent Volumes require data to be copied to the file system of the node. To prevent data from being unnecessarily copied to every node, it is recommended that you separate geocode service workloads from other workloads. Use a dedicated geocode node pool to ensure that locator data is only copied to nodes in that pool. Use node affinity, tolerations, and taints to ensure that geocode service pods are exclusively scheduled to nodes in the dedicated geocode node pool.
To configure your own locator, complete the following steps:
- Create a node pool in your cluster with a node specification that can support local volumes.
For example, you can use nodes with instance stores on Amazon Elastic Kubernetes Service (EKS).
- Create a custom label for this node pool.
For example, to label nodes with the key Type and the value Geocoding, use the following command:
kubectl label nodes <your-node-pool-selector> Type=Geocoding
- Create a local Persistent Volume with node affinity for the node pool.
Because the local Persistent Volume is only available on the nodes you specify, geocode services configured to use this Persistent Volume will only be scheduled on those nodes. Below is an example:
apiVersion: v1 kind: PersistentVolume metadata: name: arcgis-enterprise-folder-pv spec: capacity: storage: 100Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: arcgis-folder-pv local: path: /path/to/service/data # copy locator data to this path nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: Type operator: In values: - geocoding
- Create a locator.
You can use ArcGIS Pro to create a locator from your own data. Alternatively, you can use the StreetMap Premium locator if ArcGIS Enterprise on Kubernetes and ArcGIS Pro are both licensed for the proper regional StreetMap Premium extension.
- For each node in the dedicated geocode node pool, copy the .loc and .loz files for the locator into the local path specified in the Persistent Volume.
It is recommended that all nodes created in the dedicated geocode node pool automatically create the directory path and copy the locator data to that path. For example, in EKS, you can use launch templates to specify commands that are run when new nodes are created.
- Add a PV-based folder data store.
You must specify This is a local persistent volume for routing or geocoding services. For Publisher folder path, specify the location where the publisher can access the locator data from ArcGIS Pro.
- Share a locator from ArcGIS Pro and configure the number of instances per pod of the locator in ArcGIS Pro.
- Apply a toleration to ensure that geocode service pods can be scheduled on the nodes in the dedicated geocode node pool.
For example, to add a toleration for nodes with a key of Type and value Geocoding, use the following values:
- Effect—No Execute
- Key—Type
- Operator—Equal
- Value—Geocoding
- Taint the nodes in the dedicated geocode node pool to ensure only geocode service pods are scheduled on those nodes.
For example, you can use the following command to taint all nodes with a key of Type and value Geocoding.
kubectl taint nodes -l Type=Geocoding:NoExecute
- Allocate more resources to the pod if
necessary.
Configure the number of pods, memory limit, and CPU limit for the locator in ArcGIS Enterprise Manager. You must be an organization administrator to allocate resources.
- Sign in to your portal as an administrator.
- Go to Organization > Settings > Utility Services and configure the shared locator for your organization.
Note:
It is possible to add a folder data store item through the portal. This method does not use a Persistent Volume to make data in the folder available. You can publish geocode services that reference this data store if the data are available on each node at the specified file path. This option is not recommended because it prevents the use of both the restricted pod security standard and a dedicated geocode node pool.