Is there a standard for the specification of .prj files?

There's some information on the OGC Call for Comments page on the new specification for coordinate reference system WKT standard.

The original specification was written by Esri many moons ago for OGC based on the mid-1990s version of the EPSG Geodetic Parameter Dataset's schema. It was revised and extended by other OGC specifications. Because it was a very loosely defined specification, there arose many, sometimes subtly, different implementations. Over the past two years or so, a new specification has been hammered out. It's currently at ISO for comment.

Although I have some documentation on 'best practices' for writing an Esri-flavor prj string, it's not been published in the documentation.

The EPSG registry can now export WKT for its objects based on this new specification. Here's WGS 84, geographic 2D CRS, as a sample:

GEODCRS["WGS 84",
  DATUM["World Geodetic System 1984",
    ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1.0]]],
  CS[ellipsoidal,2],
    AXIS["latitude",north,ORDER[1]],
    AXIS["longitude",east,ORDER[2]],
    ANGLEUNIT["degree",0.01745329252],
  ID["EPSG",4326]]

Existing WKT should be able to be read by a 'new' parser, but the converse won't be true. Some changes to note:

  • Top-level keywords have changed to enable parsers to quickly identify the new format
  • More elements of the schema are supported (like axis directions and ordering)

Update 6 July 2016: The CRS WKT specification/standard has been approved by ISO and OGC in 2015. The OGC version is here.

Disclosure: I work for Esri and helped write that first OGC specification, was a member of the group that hammered out the new specification, and is a member of the subcommittee that maintains the EPSG registry.


The names you marked are truely free to use, because the relevant data is in the following parameters. The .prj file has to be in WKT format, as explained here:

http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/doc-files/WKT.html

Those keywords have to be used exactly, but not the names.

Every (good) software looks at the parameters, and makes its own projection definition from it.

Alternatively, EPSG codes can be used (except for the datum shift).