我正试图在提供JSON的Swagger API中为GeoJSON添加一个定义。我遇到了一些问题,无法定义GeoJSON功能的选项。
单个要素可以选择"Point"
,"MultiPoint"
,"LineString"
,"MultiLineString"
,"Polygon"
或"MultiPolygon"
。然而,每个要素对其coordinates
字段施加不同的约束。例如,一个点可能有由一个经纬度组成的单个坐标,而多边形可能具有像这样的字段:[ [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ] ]
。
我已经寻找过解决此问题的优雅方法,除了将几何对象定义为string
而不是像这样的复杂对象之外,似乎没有更好的解决方案。这意味着会丢失信息,并且使基于Swagger规范的API不可移植,因为输入字符串必须首先被解析为对象。
GeoJSON对象看起来像这样。
到目前为止,我所得到的是:
"Feature": {
"type": "object",
"properties": {
"id": {
},
"geometry": {
"$ref": "#/definitions/Geometry"
},
"type" : {
"type" : "string"
},
"properties": {
"type": "object"
}
}
}
而几何定义看起来像这样:
"Geometry": {
"type": "object",
"properties": {
"type":{
"type": "string",
"enum": ["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon"]
},
"coordinates": {
"type": "array",
"items": {
"type": "number",
"example": [4.49965, 52.06891]
}
}
}
}