Geometry.json 3.56 KB
Newer Older
canterafonsj's avatar
canterafonsj committed
{
Stefan Wiedemann's avatar
Stefan Wiedemann committed
  "title": "Geometry",
Stefan Wiedemann's avatar
Stefan Wiedemann committed
  "description": "One geometry as defined by GeoJSON. Licensed as per original source is https://github.com/fge/sample-json-schemas/blob/master/geojson/geometry.json",
  "type": "object",
  "required": [
    "type",
    "coordinates"
  ],
Stefan Wiedemann's avatar
Stefan Wiedemann committed
  "allOf": [
Stefan Wiedemann's avatar
Stefan Wiedemann committed
    {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
      "$ref": "#/definitions/Geometry"
    }
  ],
  "definitions": {
    "position": {
      "description": "A single position",
      "type": "array",
      "minItems": 2,
      "maxItems": 2,
      "items": {
        "type": "number"
      },
      "additionalProperties": 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
        }
      ]
    },
    "polygon": {
      "description": "An array of linear rings",
      "type": "array",
      "items": {
        "$ref": "#/definitions/linearRing"
      }
    },
    "Point": {
      "type": "object",
Stefan Wiedemann's avatar
Stefan Wiedemann committed
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "Point"
          ]
canterafonsj's avatar
canterafonsj committed
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
        "coordinates": {
          "$ref": "#/definitions/position"
        }
      }
    },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
    "MultiPoint": {
      "type": "object",
Stefan Wiedemann's avatar
Stefan Wiedemann committed
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "MultiPoint"
          ]
canterafonsj's avatar
canterafonsj committed
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
        "coordinates": {
          "$ref": "#/definitions/positionArray"
        }
      }
    },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
    "Polygon": {
      "type": "object",
Stefan Wiedemann's avatar
Stefan Wiedemann committed
      "properties": {
        "type": {
          "type": "string",
          "enum": [
Stefan Wiedemann's avatar
Stefan Wiedemann committed
            "Polygon"
Stefan Wiedemann's avatar
Stefan Wiedemann committed
          ]
canterafonsj's avatar
canterafonsj committed
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
        "coordinates": {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
          "$ref": "#/definitions/polygon"
Stefan Wiedemann's avatar
Stefan Wiedemann committed
        }
      }
    },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
    "LineString": {
      "type": "object",
Stefan Wiedemann's avatar
Stefan Wiedemann committed
      "properties": {
        "type": {
          "type": "string",
          "enum": [
Stefan Wiedemann's avatar
Stefan Wiedemann committed
            "LineString"
Stefan Wiedemann's avatar
Stefan Wiedemann committed
          ]
canterafonsj's avatar
canterafonsj committed
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
        "coordinates": {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
          "$ref": "#/definitions/lineString"
Stefan Wiedemann's avatar
Stefan Wiedemann committed
        }
      }
    },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
    "MultiLineString": {
      "type": "object",
Stefan Wiedemann's avatar
Stefan Wiedemann committed
      "properties": {
        "type": {
          "type": "string",
          "enum": [
Stefan Wiedemann's avatar
Stefan Wiedemann committed
            "MultiLineString"
Stefan Wiedemann's avatar
Stefan Wiedemann committed
          ]
canterafonsj's avatar
canterafonsj committed
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
        "coordinates": {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
          "type": "array",
          "items": {
            "$ref": "#/definitions/lineString"
          }
canterafonsj's avatar
canterafonsj committed
        }
Stefan Wiedemann's avatar
Stefan Wiedemann committed
      }
    },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
    "MultiPolygon": {
      "type": "object",
Stefan Wiedemann's avatar
Stefan Wiedemann committed
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "MultiPolygon"
          ]
canterafonsj's avatar
canterafonsj committed
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
        "coordinates": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/polygon"
          }
        }
      }
Stefan Wiedemann's avatar
Stefan Wiedemann committed
    },
    "Geometry": {
      "description": " Avalid GeoJSON geometry object",
      "oneOf": [
Stefan Wiedemann's avatar
Stefan Wiedemann committed
        {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
          "$ref": "#/definitions/Point"
canterafonsj's avatar
canterafonsj committed
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
        {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
          "$ref": "#/definitions/MultiPoint"
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
        {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
          "$ref": "#/definitions/Polygon"
canterafonsj's avatar
canterafonsj committed
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
        {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
          "$ref": "#/definitions/LineString"
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
        {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
          "$ref": "#/definitions/MultiLineString"
canterafonsj's avatar
canterafonsj committed
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
        {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
          "$ref": "#/definitions/MultiPolygon"
canterafonsj's avatar
canterafonsj committed
        }
Stefan Wiedemann's avatar
Stefan Wiedemann committed
      ]
canterafonsj's avatar
canterafonsj committed
    }
Stefan Wiedemann's avatar
Stefan Wiedemann committed
  }
Stefan Wiedemann's avatar
Stefan Wiedemann committed
}