Created
January 23, 2013 14:28
-
-
Save fge/4606371 to your computer and use it in GitHub Desktop.
JSON Schema (v4) for a geometry as defined by GeoJSON
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"$schema": "http://json-schema.org/draft-04/schema#", | |
"id": "http://json-schema.org/geojson/geometry.json#", | |
"title": "geometry", | |
"description": "One geometry as defined by GeoJSON", | |
"type": "object", | |
"required": [ "type", "coordinates" ], | |
"oneOf": [ | |
{ | |
"title": "Point", | |
"properties": { | |
"type": { "enum": [ "Point" ] }, | |
"coordinates": { "$ref": "#/definitions/position" } | |
} | |
}, | |
{ | |
"title": "MultiPoint", | |
"properties": { | |
"type": { "enum": [ "MultiPoint" ] }, | |
"coordinates": { "$ref": "#/definitions/positionArray" } | |
} | |
}, | |
{ | |
"title": "LineString", | |
"properties": { | |
"type": { "enum": [ "LineString" ] }, | |
"coordinates": { "$ref": "#/definitions/lineString" } | |
} | |
}, | |
{ | |
"title": "MultiLineString", | |
"properties": { | |
"type": { "enum": [ "MultiLineString" ] }, | |
"coordinates": { | |
"type": "array", | |
"items": { "$ref": "#/definitions/lineString" } | |
} | |
} | |
}, | |
{ | |
"title": "Polygon", | |
"properties": { | |
"type": { "enum": [ "Polygon" ] }, | |
"coordinates": { "$ref": "#/definitions/polygon" } | |
} | |
}, | |
{ | |
"title": "MultiPolygon", | |
"properties": { | |
"type": { "enum": [ "MultiPolygon" ] }, | |
"coordinates": { | |
"type": "array", | |
"items": { "$ref": "#/definitions/polygon" } | |
} | |
} | |
} | |
], | |
"definitions": { | |
"position": { | |
"description": "A single position", | |
"type": "array", | |
"minItems": 2, | |
"items": [ | |
{ "type": "number" }, | |
{ "type": "number" } | |
], | |
"additionalItems": false | |
}, | |
"positionArray": { | |
"description": "An array of positions", | |
"type": "array", | |
"items": { "$ref": "#/definitions/position" } | |
}, | |
"lineString": { | |
"description": "An array of two or more positions", | |
"allOf": [ | |
{ "$ref": "#/definitions/positionArray" }, | |
{ "minItems": 2 } | |
] | |
}, | |
"linearRing": { | |
"description": "An array of four positions where the first equals the last", | |
"allOf": [ | |
{ "$ref": "#/definitions/positionArray" }, | |
{ "minItems": 4 }, | |
{ "maxItems": 4 } | |
] | |
}, | |
"polygon": { | |
"description": "An array of linear rings", | |
"type": "array", | |
"items": { "$ref": "#/definitions/linearRing" } | |
} | |
} | |
} |
This version has bugs, e.g.
{ "minItems": 4 },
{ "maxItems": 4 }
in linearRing.
As I see, updated version of this schema is available here: https://github.com/fge/sample-json-schemas/blob/master/geojson/geometry.json
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This was super helpful!