我试图在为JSON提供服务的Swagger API中添加GeoJSON的定义。我在定义GeoJSON对功能的选项时遇到了一些问题。
单个功能可以选择"Point"
,"MultiPoint"
,"LineString"
,"MultiLineString"
,"Polygon"
或"MultiPolygon"
。这些中的每一个虽然对他们的coordinates
字段施加了不同的约束。例如,一个点可能有一个由长度纬度pai组成的坐标,而Polygon可能有一个如下所示的字段:
[ [ [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]
}
}
}
}
答案 0 :(得分:1)
我担心没有办法用Swagger描述。您可以描述单个类型,但不能描述接受/生成所有类型的内容。
答案 1 :(得分:1)
您是否检查了这个要点文件:geometry_geojson-yaml