Skip to content

Instantly share code, notes, and snippets.

@hobu
Created June 22, 2022 14:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hobu/c55766384edb40c347b1389298a2eabf to your computer and use it in GitHub Desktop.
Save hobu/c55766384edb40c347b1389298a2eabf to your computer and use it in GitHub Desktop.
projjson.adoc
== PROJJSON
PROJJSON is a JSON encoding of
http://docs.opengeospatial.org/is/18-010r7/18-010r7.html[WKT2:2019 /
ISO-19162:2019], which itself implements the model of
http://docs.opengeospatial.org/as/18-005r4/18-005r4.html[OGC Topic 2:
Referencing by coordinates]. Apart from the difference of encodings, the
semantics is intended to be exactly the same as WKT2:2019.
PROJJSON is available as input and output of PROJ since PROJ 6.2.
The current version is 0.4.
=== Schema
A JSON schema of its grammar is available at
https://proj.org/schemas/v0.4/projjson.schema.json
=== History
* v0.4: additional properties allowed in id object (version,
authority_citation, uri)
* v0.3: additional properties allowed in BoundCRS object (name, scope,
area, bbox, usages, remarks, id, ids)
* v0.2: addition of geoid_model in VerticalCRS object.
* v0.1: initial version for PROJ 6.2
=== Content
The high level objects are:
* Coordinate Reference Systems (CRS):
** Common ones:
*** `GeographicCRS`
*** `GeodeticCRS`
*** `ProjectedCRS`
*** `CompoundCRS`
*** `BoundCRS`
** More esoteric ones:
*** `VerticalCRS`
*** `EngineeringCRS`
*** `TemporalCRS`
*** `ParametricCRS`
*** `DerivedGeographicCRS`
*** `DerivedGeodeticCRS`
*** `DerivedProjectedCRS`
*** `DerivedVerticalCRS`
*** `DerivedEngineeringCRS`
*** `DerivedTemporalCRS`
*** `DerivedParametricCRS`
* Coordinate operations:
** `Transformation`
** `Conversion`
** `ConcatenatedOperation`
* Others:
** `PrimeMeridian`
** `Ellipsoid`
** `Datum`
** `DatumEnsemble`
=== Examples
==== GeographicCRS
The following invocation
....
projinfo EPSG:4326 -o PROJJSON -q
....
will output:
[source,json]
----
{
"$schema": "https://proj.org/schemas/v0.1/projjson.schema.json",
"type": "GeographicCRS",
"name": "WGS 84",
"datum": {
"type": "GeodeticReferenceFrame",
"name": "World Geodetic System 1984",
"ellipsoid": {
"name": "WGS 84",
"semi_major_axis": 6378137,
"inverse_flattening": 298.257223563
}
},
"coordinate_system": {
"subtype": "ellipsoidal",
"axis": [
{
"name": "Geodetic latitude",
"abbreviation": "Lat",
"direction": "north",
"unit": "degree"
},
{
"name": "Geodetic longitude",
"abbreviation": "Lon",
"direction": "east",
"unit": "degree"
}
]
},
"area": "World",
"bbox": {
"south_latitude": -90,
"west_longitude": -180,
"north_latitude": 90,
"east_longitude": 180
},
"id": {
"authority": "EPSG",
"code": 4326
}
}
----
==== ProjectedCRS
The following invocation
....
projinfo EPSG:32631 -o PROJJSON -q
....
will output:
[source,json]
----
{
"$schema": "https://proj.org/schemas/v0.1/projjson.schema.json",
"type": "ProjectedCRS",
"name": "WGS 84 / UTM zone 31N",
"base_crs": {
"name": "WGS 84",
"datum": {
"type": "GeodeticReferenceFrame",
"name": "World Geodetic System 1984",
"ellipsoid": {
"name": "WGS 84",
"semi_major_axis": 6378137,
"inverse_flattening": 298.257223563
}
},
"coordinate_system": {
"subtype": "ellipsoidal",
"axis": [
{
"name": "Geodetic latitude",
"abbreviation": "Lat",
"direction": "north",
"unit": "degree"
},
{
"name": "Geodetic longitude",
"abbreviation": "Lon",
"direction": "east",
"unit": "degree"
}
]
},
"id": {
"authority": "EPSG",
"code": 4326
}
},
"conversion": {
"name": "UTM zone 31N",
"method": {
"name": "Transverse Mercator",
"id": {
"authority": "EPSG",
"code": 9807
}
},
"parameters": [
{
"name": "Latitude of natural origin",
"value": 0,
"unit": "degree",
"id": {
"authority": "EPSG",
"code": 8801
}
},
{
"name": "Longitude of natural origin",
"value": 3,
"unit": "degree",
"id": {
"authority": "EPSG",
"code": 8802
}
},
{
"name": "Scale factor at natural origin",
"value": 0.9996,
"unit": "unity",
"id": {
"authority": "EPSG",
"code": 8805
}
},
{
"name": "False easting",
"value": 500000,
"unit": "metre",
"id": {
"authority": "EPSG",
"code": 8806
}
},
{
"name": "False northing",
"value": 0,
"unit": "metre",
"id": {
"authority": "EPSG",
"code": 8807
}
}
]
},
"coordinate_system": {
"subtype": "Cartesian",
"axis": [
{
"name": "Easting",
"abbreviation": "E",
"direction": "east",
"unit": "metre"
},
{
"name": "Northing",
"abbreviation": "N",
"direction": "north",
"unit": "metre"
}
]
},
"area": "World - N hemisphere - 0°E to 6°E - by country",
"bbox": {
"south_latitude": 0,
"west_longitude": 0,
"north_latitude": 84,
"east_longitude": 6
},
"id": {
"authority": "EPSG",
"code": 32631
}
}
----
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment