【发布时间】:2015-11-21 19:38:31
【问题描述】:
我正在尝试在提供 JSON 的 Swagger API 中添加 GeoJSON 的定义。我在定义 GeoJSON 的功能选项时遇到了一些问题。
单个功能可以选择 "Point"、"MultiPoint"、"LineString"、"MultiLineString"、"Polygon" 或 "MultiPolygon"。但是,它们中的每一个都对其coordinates 字段施加了不同的约束。例如,一个点可能有一个由经度纬度 pai 组成的坐标,而多边形可能有一个如下所示的字段:
[ [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ] ].
我环顾四周,但除了将几何定义为 string 而不是像这样的复杂对象外,似乎没有优雅的解决方案来解决这个问题。这意味着信息的丢失,并且基于 Swagger 规范移植 API 是不可取的,因为必须首先将输入字符串解析为对象。
GeoJSON 对象看起来像 this。
到目前为止,我得到的是这样的:
"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]
}
}
}
}
【问题讨论】: