URI

<geometry_uri>/grid3d/dronepathplanning[.<format>]

支持的方法

GETPOSTHEAD

父资源

geometry

子资源

介绍

无人机三维网格路径规划资源。该资源支持基于 A* 算法和指定网格类型(如 GeoSOT)的三维路径规划,提供避障能力和自定义代价区域功能。

支持多组起终点对、多种障碍物配置、对角移动、缓冲距离和自定义代价等高级功能。当前版本仅支持 GeoSOT 网格类型,需要工作空间中存在 Yukon 数据源。

对该资源发送 POST 请求,可以执行无人机三维网格路径规划;发送 GET 请求,可以获取可用于配置障碍物的工作空间数据集列表。

支持的方法:

  • GET:返回工作空间中所有数据源的数据集列表。
  • POST:执行无人机三维网格路径规划。
  • HEAD:检查 grid3dDronePathPlanning 资源是否存在,或权限是否可以访问该资源。

支持的表述格式: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>格式的表述。

请参见