USGS uses Python to deliver Water Quality Assessment tools

Looking for 10.3 or Pro content?

Documentation and other resources for this ArcGIS capability can be accessed from, a new site focused on ArcGIS for Desktop users. In about three weeks we will begin redirecting to that page. Documentation for 10.2x and earlier releases will continue to be accessible.

Don't wait. Begin exploring now!

Curtis V Price, the technical lead for the U.S. Geological Survey Enterprise GIS support team, demonstrated the National Water-Quality Assessment (NAWQA) Area-Characterization Toolbox at the 2011 Esri International User Conference. This demonstration was part of the User Software Application Fair in which he and his colleague, Naomi Nakagaki, won first place under the Desktop GIS Application category.

During his demonstration, Curtis explained why he decided to build the tools and toolbox using Python and the Geoprocessing framework.

The toolbox is a collection of custom tools that implement NAWQA-standard GIS methods and techniques in ArcGIS. The Geoprocessing tools were developed in Python and ModelBuilder to characterize aquifer areas, drainage basins, and sampled wells.

Curtis outlined numerous reasons for choosing Python to compose the NAWQA tools and toolbox:

  • Python provides easy access to Geoprocessing tools, and simple functions for listing data, describing data, and reading and writing data. The scripting environment's ease of use is reminiscent of ArcInfo Workstation's Arc Macro Language (AML).
  • The NAWQA toolbox can be installed without administrative privileges by simply copying the toolbox and scripts to any folder.
  • The tools provide the same user experience as all Geoprocessing tools and can be used in other models and scripts. Each tool documents exactly how it works and explains the geoprocessing tools and techniques used to perform area characterizations.
  • In addition to performing NAWQA analysis, the tools are meant to be used as a learning aid for understanding the standard GIS methods used for NAWQA. Since the tools are scripts and models, the source may be reviewed and edited.
  • Python modules provide a convenient way to share functions among similar tools, and avoid code duplication.
  • Python's large collection of built-in modules provide easy-to-use libraries to accomplish common programming tasks such as parsing strings, reading and writing files, and working with key data structures such as lists and dictionaries.

For more information, and to download the toolbox, visit