URI
<geometry_uri>/grid3d/dronepathplanning[.<format>]
支持的方法
父资源
子资源
无
介绍
无人机三维网格路径规划资源。该资源支持基于 A* 算法和指定网格类型(如 GeoSOT)的三维路径规划,提供避障能力和自定义代价区域功能。
支持多组起终点对、多种障碍物配置、对角移动、缓冲距离和自定义代价等高级功能。当前版本仅支持 GeoSOT 网格类型,需要工作空间中存在 Yukon 数据源。
对该资源发送 POST 请求,可以执行无人机三维网格路径规划;发送 GET 请求,可以获取可用于配置障碍物的工作空间数据集列表。
支持的方法:
支持的表述格式:RJSON、JSON、HTML、XML。
HTTP 请求方法
对如下 URI 执行 HTTP 请求,以 rjson 输出格式为例加以说明,其中,supermapiserver 是服务器名。
http://supermapiserver:8090/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst/geometry/grid3d/dronepathplanning.rjson
GET 请求
返回工作空间中所有数据源的数据集列表。
响应结构
正常响应情况:响应码 200。响应参数如下:
| 字段 | 类型 | 说明 |
| allDatasets | ResourceInfo[] | 工作空间中所有数据源的数据集列表。每项包含 name(数据集名称)、dataSourceName(数据源名称)、schema(数据库 schema,仅 Yukon 数据源)、tableName(数据库表名,仅 Yukon 数据源)。 |
响应示例
执行 GET 请求,返回的响应结果如下:
{
"allDatasets": [
{"name": "buildings", "dataSourceName": "postgres", "schema": "public", "tableName": "buildings_grid"},
{"name": "nofly_zone", "dataSourceName": "postgres", "schema": "public", "tableName": "nofly_zone_grid"}
]
}
POST 请求
执行无人机三维网格路径规划。
请求参数
请求体中需传递如下参数:
| 名称 | 类型 | 含义 |
| gridType | Spatial3DGridType | 【可选参数】三维网格类型,默认为 GEOSOT。当前版本仅支持 GeoSOT 网格。 |
| pathPairs | Drone3DGridPathPair[] | 【必填参数】起点终点对列表,建议不超过 10 组。每组包含 start(起点 Point3D)和 end(终点 Point3D)。 |
| obstacleConfigs | Drone3DGridObstacleConfig[] | 【必填参数】障碍物配置列表。每项包含 schemaName、tableName、columnName、is2d(默认 false)、queryParameter(支持 attributeFilter)、minLevel(默认 1)、maxLevel(默认 32)。障碍物数据集需提前通过"数据集网格生成"接口生成网格列。 |
| gridLevel | int | 【可选参数】路径规划网格层级,范围 1-32,默认为 17。一般建议最高使用 24-25 层级,过高的层级会导致网格数量过多,可能超出数据库的限制。 |
| allowDiagonalMovement | boolean | 【可选参数】是否允许对角移动,默认为 true。 |
| maxIterations | int | 【可选参数】A* 算法最大迭代次数,默认为 100000。 |
| heuristicWeight | double | 【可选参数】A* 算法启发式权重,默认为 1.0。 |
| bufferDistanceMeters | double | 【可选参数】障碍物缓冲距离(米),默认为 0。 |
| customCost | Drone3DGridCustomCost | 【可选参数】自定义代价配置,包含 geoGridCodes 和 costs(两数组长度必须一致)。 |
| returnGrid3DPositioning | boolean | 【可选参数】是否返回路径几何对象,默认为 false。 |
响应结构
正常响应情况:响应码 200。响应参数如下:
| 字段 | 类型 | 说明 |
| succeed | boolean | 操作是否成功。 |
| message | String | 失败时返回的错误信息。 |
| gridType | Spatial3DGridType | 网格类型。 |
| pathCount | int | 成功规划的路径数量。 |
| paths | Drone3DGridPath[] | 规划路径列表,无结果时为 null。每项含 gridType、startPoint、endPoint、pathGridCodes、pathGeometry。 |
响应示例
执行 POST 请求,请求参数如下:
{
"gridType": "GEOSOT",
"pathPairs": [{"start": {"x": 116.397, "y": 39.908, "z": 100.0}, "end": {"x": 116.450, "y": 39.920, "z": 200.0}}],
"obstacleConfigs": [{"schemaName": "public", "tableName": "buildings", "columnName": "grid_codes"}],
"gridLevel": 17,
"allowDiagonalMovement": true,
"bufferDistanceMeters": 10.0,
"returnGrid3DPositioning": false
}
则返回的 rjson 格式的响应结果如下:
{
"succeed": true,
"message": "",
"status": "FINISHED",
"gridType": "GEOSOT",
"pathCount": 1,
"paths": [
{"gridType": "GEOSOT", "startPoint": {"x": 116.397, "y": 39.908, "z": 100.0}, "endPoint": {"x": 116.450, "y": 39.920, "z": 200.0}, "pathGridCodes": ["G001310322-232132-032220.312,1101"], "pathGeometry": null}
]
}
HEAD 请求
返回跟 GET 请求一样的 HTTP 响应头,但是没有响应实体。可以在不必传输整个响应内容的情况下,获取包含在响应消息头中的元数据信息。元数据信息包括媒体类型,字符编码,压缩编码,实体内容长度等。
HEAD 请求可以用来判断 grid3dDronePathPlanning 资源是否存在,或者客户端是否有权限访问该资源。通过对加.<format>的 URI 执行 HEAD 请求,还可以快速判断该资源是否支持<format>格式的表述。
请参见