Identifying Unknown Coordinate Systems: Best Practices And Tools
What is a Coordinate System and Why it Matters
A coordinate system is a reference framework that is used to represent locations on the Earth’s surface. It typically consists of a set of numbers that identify horizontal and vertical positions, allowing the description of spatial information in two or three dimensions.
Being able to correctly identify the coordinate system for a dataset is crucially important in geospatial analysis. Using an incorrect coordinate system can lead to distorted visualizations and invalid measurements of distance, area and direction. This can undermine analysis and lead to incorrect conclusions.
Some key reasons why properly recognizing coordinate systems matters include:
- Preventing improper alignment of spatial data layers leading to inaccurate maps and analyses
- Calculating accurate distances, areas and directions between geographic features
- Integrating multiple datasets from different sources correctly
- Ensuring spatial queries, digitizing and editing tasks are performed properly
Common Challenges When Dealing with Unknown Systems
Attempting to utilize spatial data without knowing the correct coordinate system can pose multiple challenges:
- Inability to interpret coordinates and derive locations accurately
- Difficulty merging data layers and performing overlay analyses
- Distorted geometries and topologies making features unrecognizable
- Incorrect measurements for distances, areas and directions
- Misaligned or misplaced features and maps
- Errors in analysis workflows and processes
Such issues can lead to inaccurate products, misleading conclusions, and improper decision making. Identifying unknown coordinate systems is key to avoiding these problems.
Best Practices for Identifying Unknown Systems
When dealing with spatial data from an unknown coordinate system, there are several best practices that can help determine the proper system:
- Examine metadata – Metadata often contains spatial reference information describing coordinate systems. This should be the first source checked.
- Use identification tools – Specialized software tools can help recognize and define unknown coordinate reference systems.
- Visually inspect data – The visual appearance and alignment of data layers can provide clues about the coordinate system used.
- Transform data – Transforming datasets into known coordinate systems can help reveal their proper alignment and location.
- Consult data source – Discussing unknown systems with the original data providers can yield useful spatial reference details.
Additionally, collecting spatial reference information at data creation time for storage in metadata helps avoid unknown system issues altogether.
Useful Tools and Resources
QGIS
QGIS is an open source geographic information system software with multiple tools and plugins that help identify unknown coordinate reference systems:
- projfinder – Recommends potential coordinate systems based on input coordinate values
- projector – Provides a user interface to help users assign correct projections
- wkt-inspection – Analyzes the structure of well-known text strings specifying coordinate systems
These tools can match spatial properties of data to entries in reference system databases to suggest the correct system parameters.
GDAL
GDAL is a translator library for geospatial data that contains the gdalsrsinfo utility. This tool can be used to provide detailed reports about potential coordinate reference systems based on:
- EPSG codes
- Proj4 strings
- OGC WKT definitions
- ESRI WKT definitions
- XML spatial metadata
For unknown coordinate systems, suspected srings and definitions can be input and matched against known definitions to help determine proper assigned systems.
Spatial Reference Systems Databases
Reference databases containing definitions for thousands of coordinate systems are employed by identification tools for matching purposes:
- EPSG – Database of official coordinate system definitions maintained by the International Association of Oil and Gas Producers.
- CRS Barn – Registry of coordinate reference systems based on the EPSG database.
- SpatialReference.org – Database with over 8000 entries compiled from EPSG and other sources.
These standardized resources for spatial reference metadata power many of the identification capabilities described.
Step-by-Step Workflow
A general workflow for tackling unknown coordinate systems includes the following key steps:
Examining Data Properties
Investigate all metadata, attribute tables and properties of dataset files to locate any spatial reference information recorded there:
- File metadata tags may contain relevant coordinate system descriptors
- Feature class attributes may have projection parameters or geo-locational columns
- File properties could list coordinate system WKT or proj4 text strings
Text search metadata for the terms “projection”, “coordinate”, “spatial reference” etc. to uncover potential useful details.
Using Identification Tools
Feed available coordinate system snippets from the dataset into specialized identification tools:
- Enter potential proj4 or WKT strings into gdalsrsinfo to get match confidence percentages for results
- Input a set of coordinate pairs from data into QGIS projfinder to determine suggested coordinate systems
- Use ESRI ArcGIS’s Define Projection tool by providing it coordinate values to analyze
Review results with high confidence ratings as potential candidates for the unknown system.
Manual Visual Inspection
Manually load data layers into a GIS and evaluate their visual appearance for clues:
- Do points align properly with base layers or appear offset?
- Do areas and distances seem distorted or inaccurate?
- Can tile grids and graticules offer hints about projection properties?
Attempt applying transformations and comparing resulting appearances side by side with expectations.
Transforming to a Known System
Transform data into standardized coordinate systems to test for proper alignment:
- Project into global systems like WGS84 to check continent/country placement
- Reproject into appropriate Universal Transverse Mercator zones to validate feature locations
- Transform into localized custom systems commonly used in the study area
Overlay transformed layers with other geo-located reference data to validate accuracy.
When You Still Can’t Determine the System
After exhausting the identification options above, there are still a few routes that may lead to determining the unknown system:
- Contact the data source directly to inquire about the coordinate system used
- Post requests for information to spatial forums and LISTSERVs describing the mystery dataset
- Hire an expert geospatial consultant to investigate and decipher the system
Lacking the native system details, a custom user-defined system approximating transformations and alignments may have to suffice.
Additional Tips and Best Practices
Further recommendations for working with unknown coordinate reference systems effectively:
- Collect native coordinate system information during data collection/survey activities for storage alongside deliverables
- Record all coordinate reference details used in metadata when generating new geospatial data
- Consider projected/geographic system types based on required analysis measurements and location/extent
- Utilize standardized systems when possible for interoperability across software platforms
Following standards, generating quality metadata, and performing due diligence analyzing new datasets helps avoid the challenges of unidentified coordinate systems.
Example Codes
Here is some example code utilizing GDAL and Python to help identify an unknown coordinate system file:
import gdal, osr # Open dataset ds = gdal.Open("mystery_dataset.shp") # Check projection metadata print(ds.GetProjection()) # Get extent coordinates x1, x2, y1, y2 = ds.GetLayer().GetExtent() # Build Proj4 string p4 = "+proj= ??? +zone= ???" # Create spatial reference object srs = osr.SpatialReference() srs.ImportFromProj4(p4) # Output for checking print(srs.ExportToPrettyWkt()) # Attempt transformation trans_ds = gdal.VectorTranslate("trans_dataset.shp", ds, spatialRef=srs)
By iteratively testing different proj4 string values and inspecting transformed outputs, the correct projection and coordinate system can potentially be determined.