[Proj] From proj4 string to EPSG code

Glynn Clements glynn at gclements.plus.com
Tue Aug 12 07:04:59 EDT 2008

Maarten Plieger wrote:

> Is there a simple way to convert from a proj4 string to an EPSG code?
> My proj4 string has the same format as the strings in the epsg 
> definition file.

If the format is identical in every regard, you could just "grep" for
the string then extract the code from the output.

But it would be more robust to parse each line and check that the
key/value pairs match. Even then, there's the possibility that some
floating-point value (e.g. the ellipsoid radius) won't match exactly
e.g. due to trailing zeroes or some negligible difference in value.

Other than the last issue, the following python script will do the

#!/usr/bin/env python
import sys

myparms = sorted(sys.argv[1:])
# use this instead if you want one argument rather than many:
# myparms = sorted(sys.argv[1].split())

f = file("/usr/share/proj/epsg")
for line in f:
    if line.startswith("#"):
    l = line.split()
    code = l[0].strip("<>")
    parms = l[1:-1]
    if sorted(parms) == myparms:
        print code

Example usage:

	$ ./epsg.py +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.999601 +x_0=400000 +y_0=-100000 +ellps=airy +units=m +no_defs

If you need to handle the precision issues, things get more

Glynn Clements <glynn at gclements.plus.com>

More information about the Proj mailing list