Geometry.json 3.56 KB
Newer Older
canterafonsj's avatar
canterafonsj committed
1
{
Stefan Wiedemann's avatar
Stefan Wiedemann committed
2
  "title": "Geometry",
Stefan Wiedemann's avatar
Stefan Wiedemann committed
3
4
5
6
7
8
  "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
9
  "allOf": [
Stefan Wiedemann's avatar
Stefan Wiedemann committed
10
    {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
      "$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
63
64
65
66
67
68
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "Point"
          ]
canterafonsj's avatar
canterafonsj committed
69
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
70
71
72
73
74
        "coordinates": {
          "$ref": "#/definitions/position"
        }
      }
    },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
75
76
    "MultiPoint": {
      "type": "object",
Stefan Wiedemann's avatar
Stefan Wiedemann committed
77
78
79
80
81
82
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "MultiPoint"
          ]
canterafonsj's avatar
canterafonsj committed
83
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
84
85
86
87
88
        "coordinates": {
          "$ref": "#/definitions/positionArray"
        }
      }
    },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
89
90
    "Polygon": {
      "type": "object",
Stefan Wiedemann's avatar
Stefan Wiedemann committed
91
92
93
94
      "properties": {
        "type": {
          "type": "string",
          "enum": [
Stefan Wiedemann's avatar
Stefan Wiedemann committed
95
            "Polygon"
Stefan Wiedemann's avatar
Stefan Wiedemann committed
96
          ]
canterafonsj's avatar
canterafonsj committed
97
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
98
        "coordinates": {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
99
          "$ref": "#/definitions/polygon"
Stefan Wiedemann's avatar
Stefan Wiedemann committed
100
101
102
        }
      }
    },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
103
104
    "LineString": {
      "type": "object",
Stefan Wiedemann's avatar
Stefan Wiedemann committed
105
106
107
108
      "properties": {
        "type": {
          "type": "string",
          "enum": [
Stefan Wiedemann's avatar
Stefan Wiedemann committed
109
            "LineString"
Stefan Wiedemann's avatar
Stefan Wiedemann committed
110
          ]
canterafonsj's avatar
canterafonsj committed
111
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
112
        "coordinates": {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
113
          "$ref": "#/definitions/lineString"
Stefan Wiedemann's avatar
Stefan Wiedemann committed
114
115
116
        }
      }
    },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
117
118
    "MultiLineString": {
      "type": "object",
Stefan Wiedemann's avatar
Stefan Wiedemann committed
119
120
121
122
      "properties": {
        "type": {
          "type": "string",
          "enum": [
Stefan Wiedemann's avatar
Stefan Wiedemann committed
123
            "MultiLineString"
Stefan Wiedemann's avatar
Stefan Wiedemann committed
124
          ]
canterafonsj's avatar
canterafonsj committed
125
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
126
        "coordinates": {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
127
128
129
130
          "type": "array",
          "items": {
            "$ref": "#/definitions/lineString"
          }
canterafonsj's avatar
canterafonsj committed
131
        }
Stefan Wiedemann's avatar
Stefan Wiedemann committed
132
133
      }
    },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
134
135
    "MultiPolygon": {
      "type": "object",
Stefan Wiedemann's avatar
Stefan Wiedemann committed
136
137
138
139
140
141
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "MultiPolygon"
          ]
canterafonsj's avatar
canterafonsj committed
142
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
143
144
145
146
147
148
149
        "coordinates": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/polygon"
          }
        }
      }
Stefan Wiedemann's avatar
Stefan Wiedemann committed
150
151
152
153
    },
    "Geometry": {
      "description": " Avalid GeoJSON geometry object",
      "oneOf": [
Stefan Wiedemann's avatar
Stefan Wiedemann committed
154
        {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
155
          "$ref": "#/definitions/Point"
canterafonsj's avatar
canterafonsj committed
156
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
157
        {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
158
159
          "$ref": "#/definitions/MultiPoint"
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
160
        {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
161
          "$ref": "#/definitions/Polygon"
canterafonsj's avatar
canterafonsj committed
162
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
163
        {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
164
165
          "$ref": "#/definitions/LineString"
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
166
        {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
167
          "$ref": "#/definitions/MultiLineString"
canterafonsj's avatar
canterafonsj committed
168
        },
Stefan Wiedemann's avatar
Stefan Wiedemann committed
169
        {
Stefan Wiedemann's avatar
Stefan Wiedemann committed
170
          "$ref": "#/definitions/MultiPolygon"
canterafonsj's avatar
canterafonsj committed
171
        }
Stefan Wiedemann's avatar
Stefan Wiedemann committed
172
      ]
canterafonsj's avatar
canterafonsj committed
173
    }
Stefan Wiedemann's avatar
Stefan Wiedemann committed
174
  }
Stefan Wiedemann's avatar
Stefan Wiedemann committed
175
}