GeoJSON

From Wikipedia, the free encyclopedia
Jump to: navigation, search
GeoJSON
Filename extension .json, .geojson
Internet media type application/vnd.geo+json
Type of format GIS file format
Extended from JSON
Open format? yes
Website geojson.org

GeoJSON[1] is an open standard format for encoding collections of simple geographical features along with their non-spatial attributes using JavaScript Object Notation. The features include points (therefore addresses and locations), line strings (therefore streets, highways and boundaries), polygons (countries, provinces, tracts of land), and multi-part collections of these types. GeoJSON features need not represent entities of the physical world only; mobile routing and navigation apps, for example, might describe their service coverage using GeoJSON.[2]

The GeoJSON format differs from other GIS standards in that it was written and is maintained not by a formal standards organization, but by an Internet working group of developers.[3]

A notable offspring of GeoJSON is TopoJSON, an extension of GeoJSON that encodes geospatial topology and that typically provides smaller file sizes.

History[edit]

The GeoJSON format working group and discussion were begun in March 2007[4] and the format specification was finalized in June 2008.

Example[edit]

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [102.0, 0.6]
      },
      "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": {
        "prop1": 0.0,
        "prop0": "value0"
      }
    },
    {
      "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": {
        "prop1": {
          "this": "that"
        },
        "prop0": "value0"
      }
    }
  ]
}

Geometries[edit]

Geometry primitives
Type Examples
Point SFA Point.svg
{
    "type": "Point", 
    "coordinates": [30, 10]
}
LineString SFA LineString.svg
{
    "type": "LineString", 
    "coordinates": [
        [30, 10], [10, 30], [40, 40]
    ]
}
Polygon SFA Polygon.svg
{
    "type": "Polygon", 
    "coordinates": [
        [[30, 10], [40, 40], [20, 40], [10, 20], [30, 10]]
    ]
}
SFA Polygon with hole.svg
{
    "type": "Polygon", 
    "coordinates": [
        [[35, 10], [45, 45], [15, 40], [10, 20], [35, 10]], 
        [[20, 30], [35, 35], [30, 20], [20, 30]]
    ]
}
Multipart geometries
Type Examples
MultiPoint SFA MultiPoint.svg
{
    "type": "MultiPoint", 
    "coordinates": [
        [10, 40], [40, 30], [20, 20], [30, 10]
    ]
}
MultiLineString SFA MultiLineString.svg
{
    "type": "MultiLineString", 
    "coordinates": [
        [[10, 10], [20, 20], [10, 40]], 
        [[40, 40], [30, 30], [40, 20], [30, 10]]
    ]
}
MultiPolygon SFA MultiPolygon.svg
{
    "type": "MultiPolygon", 
    "coordinates": [
        [
            [[30, 20], [45, 40], [10, 40], [30, 20]]
        ], 
        [
            [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]
        ]
    ]
}
SFA MultiPolygon with hole.svg
{
    "type": "MultiPolygon", 
    "coordinates": [
        [
            [[40, 40], [20, 45], [45, 30], [40, 40]]
        ], 
        [
            [[20, 35], [10, 30], [10, 10], [30, 5], [45, 20], [20, 35]], 
            [[30, 20], [20, 15], [20, 25], [30, 20]]
        ]
    ]
}

Supported software[edit]

GeoJSON is supported by numerous mapping and GIS software packages, including OpenLayers,[5] Leaflet, MapServer [6], Geoforge software,[7] GeoServer,[8] GeoDjango,[9] GDAL,[10] Safe Software FME,[11] and CartoDB.[12] It is also possible to use GeoJSON with PostGIS[13] and Mapnik,[14] both of which handle the format via the GDAL OGR conversion library. Bing Maps, Yahoo! and Google also support GeoJSON in their API services.

The Google Maps Javascript API v3 directly supports the integration of GeoJSON data layers [15] as of March 19, 2014.[16]

GitHub also supports GeoJSON rendering[17] and Potrace GeoJSON export.

TopoJSON[edit]

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.[18] 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.[19] 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.11[20] and PostGIS as of version 2.1.0.[21]

References[edit]

  1. ^ The GeoJSON Format Specification
  2. ^ iOS Location and Maps Programming Guide
  3. ^ The GeoJSON Discussion List
  4. ^ March 2007 Archives by thread
  5. ^ http://openlayers.org/dev/examples/vector-formats.html
  6. ^ http://mapserver.org/output/template_output.html
  7. ^ http://leafletjs.com/reference.html#geojson
  8. ^ http://svn.codehaus.org/geoserver/tags/2.0.0-alpha1/geoserver/release/README.txt
  9. ^ http://geodjango.org/docs/db-api.html
  10. ^ http://gdal.org/ogr/drv_geojson.html
  11. ^ http://www.safe.com/reader_writerPDF/geojson.pdf
  12. ^ http://developers.cartodb.com/documentation/cartodb-js.html
  13. ^ http://pugs.postgresql.org/files/Introduction_to_PostGIS_v1.0.pdf
  14. ^ http://svn.mapnik.org/tags/release-0.6.0/docs/api_docs/python/mapnik-module.html
  15. ^ https://developers.google.com/maps/documentation/javascript/examples/layer-data-simple
  16. ^ http://googledevelopers.blogspot.com/2014/03/maps-made-easier-geojson-in-javascript.html
  17. ^ https://github.com/blog/1528-there-s-a-map-for-that
  18. ^ https://github.com/topojson/topojson-specification
  19. ^ https://github.com/mbostock/topojson/wiki
  20. ^ GDAL/OGR 1.11.0 Release Notes
  21. ^ PostGIS AsTopoJSON

Sources[edit]