Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
GeoJSON
JSON subset for geospatial data

GeoJSON is an open standard format based on JSON for representing simple geographical features and their attributes, including points (such as addresses), line strings (like streets), and polygons (such as countries). Unlike traditional geographic information system standards, GeoJSON is maintained by an Internet working group rather than a formal standards body. It is widely used in mobile routing and navigation to describe service areas. An important extension is TopoJSON, which encodes geospatial topology and often results in smaller file sizes, enhancing data efficiency.

We don't have any images related to GeoJSON yet.
We don't have any YouTube videos related to GeoJSON yet.
We don't have any PDF documents related to GeoJSON yet.
We don't have any Books related to GeoJSON yet.
We don't have any archived web articles related to GeoJSON yet.

History

The GeoJSON format working group and discussion were begun in March 20074 and the format specification was finalized in June 2008.

In April 2015 the Internet Engineering Task Force founded the Geographic JSON working group5 which released GeoJSON as RFC 7946 in August 2016.

Example

{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [102.0, 0.5] }, "properties": { "prop0": "value0" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0] ] }, "properties": { "prop0": "value0", "prop1": 0.0 } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ] ] }, "properties": { "prop0": "value0", "prop1": { "this": "that" } } } ] } GeoJSON example (map data)

Geometries

Points are [x, y] or [x, y, z]. They may be [longitude, latitude] or [eastings, northings]. Elevation, in meters,6 is an optional third number. They are decimal numbers.7

For example, London (51.5074° North, 0.1278° West) is [-0.1278, 51.5074]

The coordinate reference system for all GeoJSON coordinates is a geographic coordinate reference system, using the World Geodetic System 1984 (WGS 84) [WGS84] datum, with longitude and latitude units of decimal degrees.8

Geometry primitives
TypeExamples
Point{ "type": "Point", "coordinates": [30.0, 10.0]}
LineString{ "type": "LineString", "coordinates": [ [30.0, 10.0], [10.0, 30.0], [40.0, 40.0] ]}
Polygon{ "type": "Polygon", "coordinates": [ [ [30.0, 10.0], [40.0, 40.0], [20.0, 40.0], [10.0, 20.0], [30.0, 10.0] ] ]}
{ "type": "Polygon", "coordinates": [ [ [35.0, 10.0], [45.0, 45.0], [15.0, 40.0], [10.0, 20.0], [35.0, 10.0] ], [ [20.0, 30.0], [35.0, 35.0], [30.0, 20.0], [20.0, 30.0] ] ]}
Multipart geometries
TypeExamples
MultiPoint{ "type": "MultiPoint", "coordinates": [ [10.0, 40.0], [40.0, 30.0], [20.0, 20.0], [30.0, 10.0] ]}
MultiLineString{ "type": "MultiLineString", "coordinates": [ [ [10.0, 10.0], [20.0, 20.0], [10.0, 40.0] ], [ [40.0, 40.0], [30.0, 30.0], [40.0, 20.0], [30.0, 10.0] ] ]}
MultiPolygon{ "type": "MultiPolygon", "coordinates": [ [ [ [30.0, 20.0], [45.0, 40.0], [10.0, 40.0], [30.0, 20.0] ] ], [ [ [15.0, 5.0], [40.0, 10.0], [10.0, 20.0], [5.0, 10.0], [15.0, 5.0] ] ] ]}
{ "type": "MultiPolygon", "coordinates": [ [ [ [40.0, 40.0], [20.0, 45.0], [45.0, 30.0], [40.0, 40.0] ] ], [ [ [20.0, 35.0], [10.0, 30.0], [10.0, 10.0], [30.0, 5.0], [45.0, 20.0], [20.0, 35.0] ], [ [30.0, 20.0], [20.0, 15.0], [20.0, 25.0], [30.0, 20.0] ] ] ]}
GeometryCollection{ "type": "GeometryCollection", "geometries": [ { "type": "Point", "coordinates": [40.0, 10.0] }, { "type": "LineString", "coordinates": [ [10.0, 10.0], [20.0, 20.0], [10.0, 40.0] ] }, { "type": "Polygon", "coordinates": [ [ [40.0, 40.0], [20.0, 45.0], [45.0, 30.0], [40.0, 40.0] ] ] } ]}

Newline-delimited GeoJSON

An alternative to GeoJSON is to encode one geographic feature per line, with line breaks (or record-separator characters) designating the separation between records.

This format can be much faster more efficient to parse than normal GeoJSON, as tooling can read individual records in parallel. This format is similar to newline-delimited JSON.

Variants of newline-delimited GeoJSON include:

  • GeoJSONSeq (short for GeoJSON Text Sequences) - with record-separator (RS) characters separating features9
  • GeoJSONL (short for GeoJSON Lines) - with newline characters separating features10

TopoJSON

TopoJSON is an extension of GeoJSON that encodes topology. Rather than representing geometries discretely, geometries in TopoJSON files are stitched together from shared line segments called arcs.11 Arcs are sequences of points, while line strings and polygons are defined as sequences of arcs. Each arc is defined only once, but can be referenced several times by different shapes, thus reducing redundancy and decreasing the file size.12 In addition, TopoJSON facilitates applications that use topology, such as topology-preserving shape simplification, automatic map coloring, and cartograms.

A reference implementation of the TopoJSON specification is available as a command-line tool to encode TopoJSON from GeoJSON (or ESRI Shapefiles) and a client side JavaScript library to decode TopoJSON back to GeoJSON again. TopoJSON is also supported by the popular OGR tool as of version 1.1113 and PostGIS as of version 2.1.0.14

TopoJSON Schema

Given a GIS shape near coordinates latitude 0° and longitude 0°, a simple but valid and complete topojson file containing all metadata, Polygon, LineString, Point elements, arcs and properties is defined as follows:

{ "type":"Topology", "transform":{ "scale": [1,1], "translate": [0,0] }, "objects":{ "two-squares":{ "type": "GeometryCollection", "geometries":[ {"type": "Polygon", "arcs":[[0,1]],"properties": {"name": "Left_Polygon" }}, {"type": "Polygon", "arcs":[[2,-1]],"properties": {"name": "Right_Polygon" }} ] }, "one-line": { "type":"GeometryCollection", "geometries":[ {"type": "LineString", "arcs": [3],"properties":{"name":"Under_LineString"}} ] }, "two-places":{ "type":"GeometryCollection", "geometries":[ {"type":"Point","coordinates":[0,0],"properties":{"name":"Origine_Point"}}, {"type":"Point","coordinates":[0,-1],"properties":{"name":"Under_Point"}} ] } }, "arcs": [ [[1,2],[0,-2]], [[1,0],[-1,0],[0,2],[1,0]], [[1,2],[1,0],[0,-2],[-1,0]], [[0,-1],[2,0]] ] }

See also

Sources

References

  1. Butler, Howard; Daly, Martin; Doyle, Allan; Gillies, Sean; Hagen, Stefan; Schaub, Tim (August 2016). RFC 7946. IETF. doi:10.17487/RFC7946. https://datatracker.ietf.org/doc/html/rfc7946

  2. "Providing Directions". developer.apple.com. https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/LocationAwarenessPG/ProvidingDirections/ProvidingDirections.html

  3. "GeoJSON Info Page". lists.geojson.org. http://lists.geojson.org/listinfo.cgi/geojson-geojson.org

  4. "The GeoJSON March 2007 Archive by thread". lists.geojson.org. http://lists.geojson.org/pipermail/geojson-geojson.org/2007-March/thread.html

  5. "Geographic JSON (geojson) -". datatracker.ietf.org. https://datatracker.ietf.org/wg/geojson/history/

  6. Butler, H.; Daly, M.; Doyle, A.; Gillies, Sean; Schaub, T.; Hagen, Stefan (August 2016). The GeoJSON Format (Report). Internet Engineering Task Force. https://datatracker.ietf.org/doc/rfc7946/

  7. Butler, H.; Daly, M.; Doyle, A.; Gillies, Sean; Schaub, T.; Hagen, Stefan (August 2016). "GeoJSON RFC #3.1.1". https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.1

  8. Butler, H.; Daly, M.; Doyle, A.; Gillies, Sean; Schaub, T.; Hagen, Stefan (August 2016). The GeoJSON Format (Report). Internet Engineering Task Force. https://datatracker.ietf.org/doc/html/rfc7946#section-4

  9. Gillies, Sean (April 2017). GeoJSON Text Sequences (Report). Internet Engineering Task Force. https://datatracker.ietf.org/doc/html/rfc8142

  10. "GeoJSONL: An optimized format for large geographic datasets". Interline Technologies. 11 September 2018. Retrieved 11 November 2024. https://www.interline.io/blog/geojsonl-extracts/

  11. "topojson/topojson-specification". 11 December 2020 – via GitHub. https://github.com/topojson/topojson-specification

  12. "topojson/topojson". GitHub. https://github.com/topojson/topojson

  13. "Release/1.11.0-News – GDAL". trac.osgeo.org. https://trac.osgeo.org/gdal/wiki/Release/1.11.0-News

  14. "AsTopoJSON". postgis.net. http://postgis.net/docs/AsTopoJSON.html