Tag: Locator

Add a locator map to your website


GIS offers much more than just the ability to put the proverbial “dot on a map.” But sometimes, that’s all you need or want to do. Here’s a very simple way to accomplish just that, in a quick minute (far … Continue reading

Posted in ArcGIS Enterprise, ArcGIS Online | Tagged , , , , , , | Leave a comment

Customize your Geocoding experience with Locator Views


Esri has many users in many different industries using ArcGIS Online, and has always supported users with the ability to locate or geocode their postal addresses and Points of Interest (POIs).  However, users are often geocoding locations that are only … Continue reading

Posted in App Developers, Apps, ArcGIS Online, Developer, Location Analytics, Transportation | Tagged , , , , | 4 Comments

Enabling the power of search on Geospatial data within a Water Utility

There is no doubt that in today’s technology-centric world “Search” is one of the most powerful tools available.  One common challenge many utilities face is making data accessible to those who need it, and empowering them with the proper tools to find and use it.  This post focuses on some tools and workflows to enable search and broaden the reach of spatial data within a utility. Continue reading

Posted in Uncategorized, Water Utilities | Tagged , , , , , , | 3 Comments

Geonames Tools toolbox is available for download

The new Geonames Tools toolbox is available for download from Arcgis.com.  The Geonames Tools toolbox is an Esri Defense toolbox for intelligence analysis. The zip file contains the tools and a template geodatabase with the schema needed to create a gazetteer style locator from National Geospatial-Intelligence Agency (NGA) UTF-8 encoded tab-delimited geonames text files.

The package includes two tools, with supporting scripts, and instructions for using the tools to create your geonames gazetteer locator.  The first tool loads data from a UTF-8 encoded, tab-delimited geonames text files into a feature class, updating the Admin, Country, and Feature codes in the process.  The second tool creates a gazetteer style locator from the feature class.  This locator can be used on a local machine, or published via ArcGIS for Server for use by multiple clients.

This toolbox is designed to work with the files from NGA, available at:


Geoname files from other sources with different formats are not supported.

Posted in Defense | Tagged , , , , , , | 6 Comments

UC 2011 Geocoding Technical Workshop Presentations

 UC 2011 was another great conference as we (the geocoding
team) could meet many of you there in San Diego.

I have posted the presentations of the two geocoding
technical workshops on the Gallery of the Geocoding Resource Center. The
Geocoding – Advanced Techniques workshop also includes the demo GP models and
sample workspaces.

Here is the link to the download:



Posted in Analysis & Geoprocessing | Tagged , | Leave a comment

New ArcGIS Online geocode services

New ArcGIS Online geocode services go live today!

Starting today, you will see two new ArcGIS Online geocode services available in the Geocoding toolbar or Find dialog box when you start ArcMap version 10:

  • 10.0 North America Geocode Service (ArcGIS Online)
             – A composite locator that can be used to geocode addresses in the USA and Canada.
  • 10.0 US Streets Geocode Service (ArcGIS Online)
             – A street level locator that can be used to geocode addresses in the USA.

These are geocode services based on ArcGIS 10 geocoding technology. ArcGIS 10 geocode services allow you to find addresses in a single-line input. You may also use it to find an address with a spatial offset or by its latitude and longitude coordinates. Click this link to learn more about what you can find using ArcGIS 10 locators or geocode services.


Posted in Analysis & Geoprocessing | Tagged , , , | 3 Comments

Improving batch geocoding performance

Geocoding performance has always been a top priority when working with large volumes of addresses, and it’s a primary consideration when designing and implementing a geocoding workflow.  There are several factors that contribute to geocoding performance, I won’t cover all of these in this article but, let’s look at some simple, high value changes we can make to our locators and workflow to improve performance. 

Increasing the run time memory limit:

ArcGIS Locators can be configured to use more system memory.  Using system memory (RAM) to work with locators is much faster than reading a locator from disk.  ArcGIS supports use of 2GB memory on a 32 bit system and 3GB of memory on a 64 bit system.  By default ArcGIS locators are configured to use 512MB of system memory.  The default values were chosen to ensure the greatest possible system coverage, without exceeding system limits and possibly destabilizing a system.  By increasing the memory allocation for locator use above 512MB we see good performance gains. 

ArcGIS locators support a “Run Time Memory Limit” parameter.  For large geocoding jobs working against a large locator such as US streets, or US Composite, we’ll want to set this limit near the capabilities of our system.  With ArcGIS 10, geocoding performance continues improving as the cache grows beyond 2GB.  

Follow the steps below to create or edit an existing Run Time Memory Limit parameter:

  1. Open the *.loc file in a text editor (note this is the .loc file and not the .loc.xml file).  
  2. Look for the line that starts with RuntimeMemoryLimit =
  3. If the value does not exist, create one and change the value to represent the number of bytes of system memory you want to allocate for the locator:
        RuntimeMemoryLimit = 2048000000
  4. Save the locator. 
  5. Use the locator and compare performance and system memory use.

You can play with this value to find something that is appropriate for your system.  In most cases you will see optimum performance near 2GB of memory.  If you’ve allocated too much memory, the system may become unstable or ArcGIS may crash.  Reduce the memory allocation to rectify.

Presort reference data for optimal performance:

It’s always much faster to find something when it is organized than when it is chaotic.   Geocoding is no different.  Sorted addresses can be geocoded faster than unsorted data.  Sorted addresses tax the system less, hard disks don’t have to work so hard and the geocoding engine makes less frequent memory allocations. 

A typical approach for sorting data would be to sort by the highest level of geography first and then to sort on smaller levels of geography.  With a U.S. address for example, you should sort the address data by State, followed by City, and Postal Code.  If your data isn’t already sorted, you can sort it using the ArcGIS Sort (Data Management) tool or you can configure a locator to sort data as it’s read into the geocoding process. 

Configuring a locator for sorting is similar to changing the run time memory limit, except you need to configure two parameters instead of one.  The first parameter specifies the fields to sort by.  These fields are the input fields defined by the locator.  The second parameter is the number of records to sort in each process.  You could sort the entire table, but that would be very memory and CPU intensive so instead you can choose to sort the first n number of records.  Defining a higher value can help produce higher performance but again, taxes system resources.  A typical value supporting good performance might be 100000 records.

Follow the steps below to create or edit an existing Batch Presort parameter:


  1. Open the *.loc file in a text editor (note this is the .loc file and not the .loc.xml file) . 
  2. Look for the line that starts with BatchPresortInputs = State
  3.  If the value does not exist, create one and assign the first locator input field to sort by. Repeat the entry for additional fields
    BatchPresortInputs = State
    BatchPresortInputs = City

    BatchPresortInputs = Zip

  4. Look for the line that starts with BatchPresortCacheSize =
  5. If the value does not exist, create one and assign the first locator input field to sort by.  Repeat the entry for additional fields
    BatchPresortCacheSize = 100000

  6. Save the locator.
  7. Use the locator and compare performance and system memory use.

In this example I geocoded 10,000 unsorted U.S. addresses with a U.S. streets locator and the preceding enhancements.  Performance increased from 350,000 recs/hr to 614,000 recs/hr.  You can experiment with the  batch presort cache size to find optimal performance for your locators and data. 

In the future we’ll look at more ways to increase geocoding performance, but these techniques are a good start and should result in some excellent results. 


Posted in Analysis & Geoprocessing | Tagged , , , | 4 Comments

Understanding and customizing ArcGIS 10 locators

Although locator customization may not be necessary for most of the geocoding tasks, ArcGIS 10 locators and locator styles can be modified. You can add special street type aliases to the locator style or tune a few parameters to make the geocoding process more suitable to your applications. You can also adjust the schema of a locator style or the scoring weights for a match.

We just posted a technical paper Customizing ArcGIS 10 Locators (An Esri Geocoding Technical Paper)  that can help you understand the structure and principles behind geocoding and how to modify the elements in the locators.

Please click here to download the paper http://www.arcgis.com/home/item.html?id=aeb00de638f3492a93308a4a03183c7d

See ArcGIS Help to learn more about locator and locator styles.


Posted in Analysis & Geoprocessing | Tagged , | 5 Comments

Getting data into military features

So, let’s say you’ve downloaded the Military Overlay layer package and created military feature templates for your units. How will you get some existing data into those features?

In this blog post I’ll walk you through the process of taking a table of military units and putting them into a Units feature class. I’ll start by creating intermediate features, then I’ll match the attribute values between the input data and the military features geodatabase, and then I’ll use the Append tool to load the data.

Part One:  Create intermediate features from a table
My table of unit locationsThe first thing to do is convert the table into features; point features to be exact. If you already have points (or lines or polygons) you can skip this step. In this case I’ve got a table of units, called LocalUnits.dbf. This table contains the MGRS coordinate location for each unit, as well as a name and unit type. This is what it looks like if I open it up in a spreadsheet.

Since each unit has a coordinate value, I can represent the table spatially.  I’ll  use the Geocode Addresses tool to read the MGRS coordinates and convert the table to points.

Search for Geocode Addresses toolTo find the Geocode Addresses tool, I’ll use the ArcGIS Search window (To get there in ArcMap, click the Windows menu and click Search).
Click Geocode Addresses  in the Search window to open the tool.

 Geocode tool




I’ll make LocalUnits.dbf my Input Table and select MGRS as my Input Address Locator.

The tool should pick up MGRS as the field name for these coordinates. 

I’ll make the output a shapefile called LocalUnitPoints.shp, then run the tool.

Part Two:  Match the schema
Now I’ve got some points that I can load into my Units features.  Before I do this, I need to compare the field names of my source features, LocalUnitPoints.shp, and my target features, Units.

Why? If I don’t know how the field names of the source and target features match up, I could end up loading the points but not their attributes. If that happened I’d have a feature class of units, but no idea what units the points represented.

Match fieldsLet’s take a look at the LocalUnitPoints fields and the target Units fields.  The original table had three fields:  MGRS, Name, and UnitType. I just used the MGRS field in the geocoding tool to make these points, so I won’t need to keep it.  The shapefile also has several additional fields created by the geocoding process (Status, Score, Match_type, etc.) that I won’t need.   

The two fields I do need are Name and UnitType
The Name field holds the unit names.  In the Units feature class the field that holds this information is called UniqueDesignation.  When I append the data I’ll make sure that the Name data will go into the UniqueDesignation field. 

The UnitType field tells me the type of each unit. In the Units feature class, the SymbolName field holds this information.  When I append the data from LocalUnitsPoints into the Units feature class, the UnitType data should go into the SymbolName field.

OK, now that I’ve determined how the field names match up, I need to make sure that the field values match.  Why?  Well, for one thing, both of the fields I’m interested in hold text; I couldn’t load that type of data into an integer field.  The SymbolName and UniqueDesignation fields are also text fields, so that’s not a problem.  However, the data in the SymbolName field is used by ArcMap to determine which feature template each military feature belongs to, and the symbol used to draw the feature.

All other values symbol draws for unknown unit typesIf the values in SymbolName don’t match the template names, all of the features will be drawn with the generic  “<all other values>” symbol.

Unit TypeSo, let’s compare the input UnitType values to the feature template names that ArcMap will look for in SymbolName.  Here’s the attribute table of LocalUnitPoints.
To see the values that have been assigned for the feature templates I’ll right-click on Units, point to Edit Features, and click Organize Feature Templates.

Organize feature templates dialog box




The right-hand panel shows the names of the feature templates that have been defined. These are the values that SymbolNames will need in order to automatically match the units to their symbols.
Comparing the values, I see that they are close, but not exact matches.Value comparison table 




If I load the data as it is, the values will not match and the units will all be drawn with the <all other values> symbol.

Four of the values are close; I’ll fix these by changing the values in the LocalUnitPoints features. The fifth value “Engineer Platoon” doesn’t have a corresponding feature template in the Units features.  The way to fix this is to add a new feature template for Engineer Platoons. Creating new feature templates for military features is covered in this blog post and this Help topic.  I’ll go ahead and deal with the other problem, then load the data.
There are various ways to do this.  For a small dataset I could simply edit the values, though that method doesn’t scale well; for larger datasets it can be time consuming and may introduce typographical errors.  I could select all of the “Infantry Platoon” values and then calculate them to be “Infantry Platoon F”, repeating the process for each type of unit, but that would also take a while. Calculate field values with Python code block

In order to get it done quickly, I’ll use the Calculate Field tool and a chunk of Python script to change the values to match the input templates.

To do this, I open the Calculate Field tool (I searched for it, like I did for the Geocode Addresses tool), set the Input Table to LocalUnitPoints, and the FieldName to UnitType. 

Since I’m going to use my own Python script, I’ll set the Expression Type to PYTHON_9.3.

The Expression is:

The Code Block is:
def fixValues(unitName):
    if unitName == “Infantry Platoon”: return “Infantry Platoon F”
    if unitName == “Armor Company”: return “Armor Company F”
    if unitName == “Cavalry Platoon”: return “Cavalry Platoon F”
    if unitName == “Air Defense Platoon”: return “Air Defense F”
    else: return unitName

After I run the tool I can see the changed field values.

Updated UnitType values


Part Three:  Append the data

Now that the values match, I’m ready to add the data to the Units feature class. I’ll do that with the Append tool.  I set the Input Dataset to LocalUnitPoints and the Target Dataset to Units.

Append tool top section



Since the input and target dataset field names don’t match, I’ll use the NO_TEST option for Schema Type. This lets me manually match the fields.

To match a field, I right-click the target field name (UniqueDesignation) and click Add Input Field.Append field matching 




In the Add Input dialog box I choose the source field (Name) from the fields of the input feature class.

Add Input field


I use the same method to map SymbolName to UnitType.


Units appended and drawn correctlyAfter I’ve run the Append tool I can check the Unit table to see that all of the rows converted.  Looking on the map, I can see that all but one of the units are drawn with their correct feature template symbol.

Check out the post on creating new feature templates to see the method you’d use to create the Engineer Platoon template.  If you name it “Engineer Platoon F” (which would be consistent with the other templates), remember to update this feature’s SymbolName attribute to be “Engineer Platoon F” too.

Content provided by Matt Funk



Posted in Defense | Tagged , , , , , , , | 2 Comments

Clearing the Fog of Coordinates

Are you fed up with manually translating your coordinate data between decimal degrees, UTM Meters, and MGRS coordinate strings?

We’re excited to report that ArcGIS 9.4 beta 2 (soon to be ArcGIS 10) supports the Military Grid Reference System (MGRS) as part of core ArcGIS. 

Now you can get MGRS coordinates for a clicked location using the Identify tool or the Address Inspector tool, MGRS coordinate in Identify window

and show the current MGRS coordinates in the ArcMap status bar as you move the pointer over the map.

MGRS coordinates in status bar 


You can also find locations from their MGRS coordinates using the Find Features tool, the Go To XY tool, and the Address Input text box on the Geocoding toolbar.

Go To XY with MGRS

Because we’ve built an MGRS locator for the Geocoding tools, you can now geocode tables of MGRS locations to show the results in the map and create new feature classes.  You can also reverse geocode a set of points to get a new point feature class with the MGRS locations stored as an attribute.

MGRS Locator
You can map MGRS locations with the ArcMap geocoding toolbar, or geocode in bulk with the geoprocessing tools. You can even use the MGRS locator to interpret partial MGRS coordinates, for example where the Grid Zone Designation or 100,000 Meter Square Identifier are left off. You can pick how you want the locator to fill in that missing information.

 MGRS components

Last, but not least, now you can type MGRS coordinates in any of the editing tools that allow you to choose the units in which coordinates are entered, such as the Absolute X,Y tool and the Construct Geodetic tool.

We think that these enhancements will greatly streamline the collection, processing, and communication of location data for our Defense and Intelligence users.

Posted in Defense | Tagged , , , , , | Leave a comment