基本介绍

API 常规接口地址:http://api.alanweb.site
API 高性能接口地址:http://superapi.alanweb.site

  AWP API 提供程序化的接口来计算地理几何,你可以通过该接口获取地理区域经纬计算相关数据。它原本属于AlanWayPoint工具的一部分,但它应当公开以供更多人使用,这将有利于部分兴趣爱好者做一些:数据测试、游戏实验、轨迹模拟、数字地形仿真模拟。
  它的内部实现均采用了[Matrix calculation]矩阵变换,以确保纵横坐标永远为对齐的状态、高纬度无畸变;同时内部已内置多款主流飞行器的镜头参数,初学者也能直接使用,不必要填写飞行器复杂的镜头参数,直接传入坐标就能获取经纬点。
  此API接口对已拥有AlanWayPoint工具的玩家完全无偿开放,如果你需要api_key值,联系我们即可。

使用本 API 需要你拥有 API 密钥。如需获取 API 密钥,请联系我们:
1、邮箱:alanlw21@qq.com
2、薇薪:alanwaypoint
3、如果你有好的建议或者遇到调用时发生未达到预期的问题,可以反馈于我们薇薪:alanwaypoint 或者邮箱 alanlw21@qq.com

面状网格

                 
 ### 以下是“面状网格 API”的“Python”请求示例 ####
import requests
import json

# API地址,此处以网格生成为例。
API_URL = "http://api.alanweb.site/api/FlightRoute/GridGeneration"
# 你的key值
API_KEY = "api_key_value_xxxxxxxxxxxxxx"
# 请求头
HEADERS = {
    "X-Api-Key": API_KEY,
    "Content-Type": "application/json"
}
# 请求参数(网格生成接口参数)
REQUEST_DATA = {
    "HxValue": 100,
    "PxValue": 100,
    "SimplePoint": True,
    "BaoLiuTwoDian": True,
    "AirLineAngle": 0,
    "Area": [
        {
            "longitude": 107.707574236791,
            "latitude": 27.9486901470109
        },
        {
            "longitude": 107.71361909641,
            "latitude": 27.9475811444902
        },
        {
            "longitude": 107.713524153021,
            "latitude": 27.9516255958259
        },
        {
            "longitude": 107.708360173145,
            "latitude": 27.9520076717445
        }
    ]
}


if __name__ == "__main__":
    try:
        # 发送POST请求
        response = requests.post(
            url=API_URL,
            headers=HEADERS,
            data=json.dumps(REQUEST_DATA),
            timeout=30
        )
        print(f"响应状态码: {response.status_code}")
        print("返回数据:")
        try:
            json_data = response.json()
            formatted_json = json.dumps(json_data,
            indent=4,
            ensure_ascii=False)
            print(formatted_json)
        except json.JSONDecodeError:
            print(f"(非JSON格式){response.text}")
    except Exception as e:
        print(f"ERRO:未知错误:{str(e)}")
 
                

如需获取“面状网格”经纬度坐标,你需要向以下地址发送 POST 请求:
http://api.alanweb.site/api/FlightRoute/GridGeneration



 “面状网格”API返回结果示例:
{
    "Success": true,
    "Message": "航线计算成功",
    "RoutePoints": [
        {
            "index": 0,
            "longitude": 107.71422726815904,
            "latitude": 27.94811000379821,
            "speed": -1,
            "flyHight": -1,
            "cameraAngle": -1,
            "circleRadiu": -1,
            "angleFocus": -1,
            "angleCutin": -1,
            "expandPoint": false,
            "isPhoton": false
        },
        {
            "index": 1,
            "longitude": 107.7113250447244,
            "latitude": 27.94811000379821,
            "speed": -1,
            "flyHight": -1,
            "cameraAngle": -1,
            "circleRadiu": -1,
            "angleFocus": -1,
            "angleCutin": -1,
            "expandPoint": false,
            "isPhoton": false
        },
        {
            "index": 2,
            "longitude": 107.70842282128977,
            "latitude": 27.94901237903789,
            "speed": -1,
            "flyHight": -1,
            "cameraAngle": -1,
            "circleRadiu": -1,
            "angleFocus": -1,
            "angleCutin": -1,
            "expandPoint": false,
            "isPhoton": false
        }
    ]
}
                 

面状网格-请求参数

字段名 类型 描述 范围
HxValue float 经纬度点在指定区域距离前后点的纵向距离(米) 5~1000
PxValue float 经纬度点在指定区域距离左右点的横向距离(米) 5~1000
SimplePoint bool 是否启用“航点简化”,单条航线仅保留两端两个点。 true/false
BaoLiuTwoDian bool 是否启用“超级简化”,单条航线仅保留两端单个点(仅当“航点简化”开启时有效) true/false
AirLineAngle float 航线旋转角度 -180~0~180
Area List<Point> 区域范围的经纬度坐标集合,你必须确保至少保证有3个经纬度点。 { (lng, lat) | lng ∈ [-180, 180], lat ∈ [-90, 90] }

带状网格


 ### 以下是“航带飞行 API”的“Python”请求示例 ####
# 请求头
HEADERS = {
    "X-Api-Key": "api_key_value_xxxxxxxxxxxxxx",
    "Content-Type": "application/json"
}
# 请求参数
REQUEST_DATA = {
  "CameraIndex": 0
  "FlyHight": 120,
  "FlySpeed": 5,
  "HxValue": 70, #表示纵向70%重叠率
  "PxValue": 70, #表示横向70%重叠率
  "CameraAngle": -90,
  "SimplePoint": False, # 关闭了简化模式
  "BaoLiuTwoDian": False, # 关闭了极简模式
  "WaiKuoNum": 1, # 航线外扩条数
  "Area": [
        {
            "longitude": 107.707574236791,
            "latitude": 27.9486901470109
        },
        {
            "longitude": 107.71361909641,
            "latitude": 27.9475811444902
        },
        {
            "longitude": 107.713524153021,
            "latitude": 27.9516255958259
        },
        {
            "longitude": 107.708360173145,
            "latitude": 27.9520076717445
        }
    ]
}

if __name__ == "__main__":
    try:
        response = requests.post(
            url=API_URL, # 在这里填写说明书API.URL地址。
            headers=HEADERS,
            data=json.dumps(REQUEST_DATA),
            timeout=30
        )
        print(f"状态码: {response.status_code}")
        try:
            json_data = response.json()
            formatted_json = json.dumps(json_data,
            indent=4,
            ensure_ascii=False)
            print(formatted_json)
        except json.JSONDecodeError:
            print(f"(非JSON格式){response.text}")
    except Exception as e:
        print(f"ERROR:{str(e)}")

                 

如需获取“航带飞行”经纬度坐标,你需要向以下地址发送 POST 请求:
http://api.alanweb.site/api/FlightRoute/StripFlight



 返回结果示例:
{
    "Success": true,
    "Message": "航线计算成功",
    "RoutePoints": [
        {
            数据类似网格航线
        }
        ....
    ]
}
                 

请求参数说明

字段名 类型 描述 范围
CameraIndex int 镜头选择(如果为“-1”则HxValue、PxValue将要视为经纬点的间距) -1~0~26
FlyHight float 飞行高度 10~1500
FlySpeed float 飞行速度 1~15
CameraAngle float 云台角度(无限制) -90~90
HxValue float 航向重叠率 5~98
PxValue float 旁向重叠率 5~98
WaiKuoNum int 外扩条数 0~50
Area List<Point> 区域范围的经纬度坐标集合,你必须确保至少保证有3个经纬度点。 { (lng, lat) | lng ∈ [-180, 180], lat ∈ [-90, 90] }

交叉网格


 ### 以下是“交叉倾斜 API”的“Python”请求示例 ####
# 请求头
HEADERS = {
    "X-Api-Key": "api_key_value_xxxxxxxxxxxxxx",
    "Content-Type": "application/json"
}
# 请求参数
REQUEST_DATA = {
  "CameraIndex": 0, 
  "FlyHight": 130,
  "FlySpeed": 5,
  "HxValue": 70,
  "PxValue": 70,
  "CameraAngle": -45,
  "SimplePoint": False,
  "BaoLiuTwoDian": False,
  "ZuiJiaHangXian": True,
  "Start2D": False, # 正射模式是关闭的,开启后为交叉倾斜模式。
  "AirLineAngle": 0,
  "Area": [
        {
            "longitude": 107.707574236791,
            "latitude": 27.9486901470109
        },
        {
            "longitude": 107.71361909641,
            "latitude": 27.9475811444902
        },
        {
            "longitude": 107.713524153021,
            "latitude": 27.9516255958259
        },
        {
            "longitude": 107.708360173145,
            "latitude": 27.9520076717445
        }
    ]
}
                 

如需获取“交叉倾斜”经纬度坐标,,你需要向以下地址发送 POST 请求:
http://api.alanweb.site/api/FlightRoute/CrossTilt



 返回结果示例:
 {
    "index": 0,
    "longitude": 107.71688763964077,
    "latitude": 27.948359961712065,
    "speed": 12, # 建议速度
    "flyHight": 130,
    "cameraAngle": -45,
    "circleRadiu": -1,
    "angleFocus": -1,
    "angleCutin": -1,
    "expandPoint": true, # 为扩展点,当ZuiJiaHangXian开启时检测。
    "isPhoton": false # 此点不建议拍照
 }
                 

请求参数说明

字段名 类型 描述 范围
CameraIndex int 镜头选择(如果为“-1”则HxValue、PxValue将要视为经纬点的间距) -1~0~26
FlyHight float 飞行高度 10~1500
FlySpeed float 飞行速度 1~15
CameraAngle float 云台角度 -90~-20
HxValue float 航向重叠率 5~98
PxValue float 旁向重叠率 5~98
SimplePoint bool 是否启用“航点简化”,单条航线仅保留两端两个点。 true/false
Start2D bool 是否启用“面状经纬点”,类似正射航线 true/false
ZuiJiaHangXian bool 是否启用“最佳航线”,减少拐弯角非必要的拍照。 true/false
BaoLiuTwoDian bool 是否启用“超级简化”,单条航线仅保留两端单个点(仅当“航点简化”开启时有效) true/false
AirLineAngle float 航线旋转角度 -180~180
Area List<Point> 区域范围的经纬度坐标集合,你必须确保至少保证有3个经纬度点。 { (lng, lat) | lng ∈ [-180, 180], lat ∈ [-90, 90] }

五向网格


 ### 以下是“五向飞行 API”的“Python”请求示例 ####
# 请求头(必须包含X-Api-Key和Content-Type)
HEADERS = {
    "X-Api-Key": API_KEY,
    "Content-Type": "application/json"
}
# 请求参数(你的网格生成接口参数)
REQUEST_DATA = {
  "CameraIndex": 0,
  "FlyHight": 130,
  "FlySpeed": 5,
  "HxValue": 70,
  "PxValue": 70,
  "CameraAngle": -40, # 这个参数设定的是其余四条倾斜航线的角度
  "SimplePoint": True, # CameraAngle无论设定多少,首条航线自动-90度
  "BaoLiuTwoDian": False,
  "AirLineAngle": 0,
  "Area": [
        {
            "longitude": 107.707574236791,
            "latitude": 27.9486901470109
        },
        {
            "longitude": 107.71361909641,
            "latitude": 27.9475811444902
        },
        {
            "longitude": 107.713524153021,
            "latitude": 27.9516255958259
        },
        {
            "longitude": 107.708360173145,
            "latitude": 27.9520076717445
        }
    ]
}
                 

如需获取“五向飞行”经纬度坐标,,你需要向以下地址发送 POST 请求:
http://api.alanweb.site/api/FlightRoute/Dir5Tilt



 
                 

请求参数说明

字段名 类型 描述 范围
CameraIndex int 镜头选择(如果为“-1”则HxValue、PxValue将要视为经纬点的间距) -1~0~26
FlyHight float 飞行高度 10~1500
FlySpeed float 飞行速度 1~15
CameraAngle float 云台角度 -90~-20
HxValue float 航向重叠率 5~98
PxValue float 旁向重叠率 5~98
SimplePoint bool 是否启用“航点简化”,单条航线仅保留两端两个点。 true/false
BaoLiuTwoDian bool 是否启用“超级简化”,单条航线仅保留两端单个点(仅当“航点简化”开启时有效) true/false
AirLineAngle float 航线旋转角度 -180~180
Area List<Point> 区域范围的经纬度坐标集合,你必须确保至少保证有3个经纬度点。 { (lng, lat) | lng ∈ [-180, 180], lat ∈ [-90, 90] }

弓字带状


 ### 以下是“弓字航线 API”的“Python”请求示例 ####
HEADERS = {
    "X-Api-Key": API_KEY,
    "Content-Type": "application/json"
}
# 请求参数
REQUEST_DATA = {
  "CameraIndex": 0,
  "FlyHight": 120,
  "FlySpeed": 5,
  "HxValue": 70,
  "PxValue": 70,
  "CameraAngle": -90,
  "SimplePoint": True,
  "LineWidth": 120,
  "Area": [
        {
            "longitude": 107.707574236791,
            "latitude": 27.9486901470109
        },
        {
            "longitude": 107.71361909641,
            "latitude": 27.9475811444902
        },
        {
            "longitude": 107.713524153021,
            "latitude": 27.9516255958259
        },
        {
            "longitude": 107.708360173145,
            "latitude": 27.9520076717445
        }
    ]
}
                 

如需获取“弓字航线”经纬度坐标,,你需要向以下地址发送 POST 请求:
http://api.alanweb.site/api/FlightRoute/BowShapedTilt



 
                 

请求参数说明

字段名 类型 描述 范围
CameraIndex int 镜头选择(如果为“-1”则HxValue、PxValue将要视为经纬点的间距) -1~0~26
FlyHight float 飞行高度 10~1500
FlySpeed float 飞行速度 1~15
CameraAngle float 云台角度(无限制) -90~90
HxValue float 航向重叠率 5~98
PxValue float 旁向重叠率 5~98
LineWidth float 航线纵向宽度(米) 10~500
SimplePoint bool 是否启用“航点简化”,单条航线仅保留两端两个点。 true/false
Area List<Point> 经纬度坐标集合,你必须确保至少保证有2个经纬度点。 { (lng, lat) | lng ∈ [-180, 180], lat ∈ [-90, 90] }

单点环绕


 ### 以下是“定点环绕 API”的“Python”请求示例 ####
# 请求头(必须包含X-Api-Key和Content-Type)
HEADERS = {
    "X-Api-Key": API_KEY,
    "Content-Type": "application/json"
}
# 请求参数(你的网格生成接口参数)
REQUEST_DATA = {
  "EncircleModuleType": 1,
  "AngleRadModeState": 1,
  "CameraIndex": 0,
  "FlyHight": 120,
  "FlySpeed": 5,
  "HxValue": 60,
  "CameraAngle": -45,
  "SimplePoint": False,
  "CircleRadiu": 100,
  "AngleFocusCorrection": -2,
  "CircleNum": 15,
  "Area": [
        {
            "longitude": 107.707574236791,
            "latitude": 27.9486901470109
        },
        {
            "longitude": 107.71361909641,
            "latitude": 27.9475811444902
        },
        {
            "longitude": 107.713524153021,
            "latitude": 27.9516255958259
        },
        {
            "longitude": 107.708360173145,
            "latitude": 27.9520076717445
        }
    ]
}
                 

如需获取“定点环绕”经纬度坐标,,你需要向以下地址发送 POST 请求:
http://api.alanweb.site/api/FlightRoute/EncircleTilt



 返回的Point结果示例:
 {
    {
        "index": 0,
        "longitude": 107.71084134059655,
        "latitude": 27.94540287807918,
        "speed": 12,
        "flyHight": 500,
        "cameraAngle": -45,
        "circleRadiu": 500, # 半径
        "angleFocus": -4, # 圆心聚焦角
        "angleCutin": 40.4, # 切入角
        "expandPoint": false,
        "isPhoton": true
    }
 }
                 

请求参数说明

字段名 类型 描述 范围
EncircleModuleType int [必填“1”]
模块选择:
1-定点环绕。
2-航带倾斜。
3-环绕倾斜。
1|2|3
AngleRadModeState int [可选]镜头聚焦类型:
1-根据“云台角度”设置“环绕半径”。
2-根据“环绕半径”设置“云台角度”。
3-取消“环绕半径”和“云台角度”关联,自由设定“半径”和“云台”
1|2|3
CameraIndex int [可选]镜头选择(如果为“-1”则HxValue将要视为经纬点的间距) -1~0~26
FlyHight float 飞行高度 10~1500
FlySpeed float 飞行速度 1~15
CameraAngle float 云台角度 -80~-20
HxValue float 航向重叠率 5~98
CircleRadiu float 设置圆的半径 5~1000
CircleNum int [可选]环绕采集点,默认15 3~120
SimplePoint bool [可选]是否启用“航点简化”,默认5点采集。 true/false
AngleFocusCorrection float [可选]角度聚焦圆心矫正 -90~0
Area List<Point> 经纬度坐标集合,你必须确保至少保证有1个经纬度点。 { (lng, lat) | lng ∈ [-180, 180], lat ∈ [-90, 90] }

带状环绕


 ### 以下是“航带环绕 API”的“Python”请求示例 ####
# 请求头(必须包含X-Api-Key和Content-Type)
HEADERS = {
    "X-Api-Key": API_KEY,
    "Content-Type": "application/json"
}
# 请求参数(你的网格生成接口参数)
REQUEST_DATA = {
  "EncircleModuleType": 2,
  "AngleRadModeState": 1,
  "CameraIndex": 0,
  "FlyHight": 120,
  "FlySpeed": 5,
  "HxValue": 60,
  "CameraAngle": -45,
  "SimplePoint": False,
  "CircleRadiu": 100,
  "AngleFocusCorrection": -2,
  "CircleNum": 15,
  "Area": [
        {
            "longitude": 107.707574236791,
            "latitude": 27.9486901470109
        },
        {
            "longitude": 107.71361909641,
            "latitude": 27.9475811444902
        },
        {
            "longitude": 107.713524153021,
            "latitude": 27.9516255958259
        },
        {
            "longitude": 107.708360173145,
            "latitude": 27.9520076717445
        }
    ]
}
                 

如需获取“航带环绕”经纬度坐标,,你需要向以下地址发送 POST 请求:
http://api.alanweb.site/api/FlightRoute/EncircleTilt



 
                 

请求参数说明

字段名 类型 描述 范围
EncircleModuleType int [必填“2”]
模块选择:
1-定点环绕。
2-航带倾斜。
3-环绕倾斜。
1|2|3
AngleRadModeState int [可选]镜头聚焦类型:
1-根据“云台角度”设置“环绕半径”。
2-根据“环绕半径”设置“云台角度”。
3-取消“环绕半径”和“云台角度”关联,自由设定“半径”和“云台”
1|2|3
CameraIndex int 镜头选择(如果为“-1”则HxValue将要视为经纬点的间距) -1~0~26
FlyHight float 飞行高度 10~1500
FlySpeed float 飞行速度 1~15
CameraAngle float 云台角度 -90~-20
HxValue float 航向重叠率 5~98
CircleRadiu float 设置圆的半径 5~1000
CircleNum int [可选]环绕采集点,默认15 3~120
SimplePoint bool [可选]是否启用“航点简化”,默认5点采集。 true/false
AngleFocusCorrection float [可选]角度聚焦圆心矫正,默认0 -90~0
Area List<Point> 经纬度坐标集合,你必须确保至少保证有2个经纬度点。 { (lng, lat) | lng ∈ [-180, 180], lat ∈ [-90, 90] }

区域环绕


 ### 以下是“环绕倾斜 API”的“Python”请求示例 ####
# 请求头(必须包含X-Api-Key和Content-Type)
HEADERS = {
    "X-Api-Key": API_KEY,
    "Content-Type": "application/json"
}
# 请求参数(你的网格生成接口参数)
REQUEST_DATA = {
  "EncircleModuleType": 3,
  "AngleRadModeState": 1,
  "CameraIndex": 0,
  "FlyHight": 120,
  "FlySpeed": 5,
  "HxValue": 60,
  "CameraAngle": -45,
  "SimplePoint": False,
  "CircleRadiu": 100,
  "AirLineAngle": 0,
  "AngleFocusCorrection": -2,
  "CircleNum": 15,
  "Area": [
        {
            "longitude": 107.707574236791,
            "latitude": 27.9486901470109
        },
        {
            "longitude": 107.71361909641,
            "latitude": 27.9475811444902
        },
        {
            "longitude": 107.713524153021,
            "latitude": 27.9516255958259
        },
        {
            "longitude": 107.708360173145,
            "latitude": 27.9520076717445
        }
    ]
}
                 

如需获取“环绕倾斜”经纬度坐标,,你需要向以下地址发送 POST 请求:
http://api.alanweb.site/api/FlightRoute/EncircleTilt



 
                 

请求参数说明

字段名 类型 描述 范围
EncircleModuleType int [必填“3”]
模块选择:
1-定点环绕。
2-航带倾斜。
3-环绕倾斜。
1|2|3
AngleRadModeState int [可选]镜头聚焦类型:
1-根据“云台角度”设置“环绕半径”。
2-根据“环绕半径”设置“云台角度”。
3-取消“环绕半径”和“云台角度”关联,自由设定“半径”和“云台”
1|2|3
CameraIndex int 镜头选择(如果为“-1”则HxValue将要视为经纬点的间距) -1~0~26
FlyHight float 飞行高度 10~1500
FlySpeed float 飞行速度 1~15
CameraAngle float 云台角度 -90~-20
HxValue float 航向重叠率 5~98
CircleRadiu float 设置圆的半径 5~1000
CircleNum int [可选]环绕采集点,默认15 3~120
SimplePoint bool [可选]是否启用“航点简化”,默认5点采集。 true/false
AngleFocusCorrection float [可选]角度聚焦圆心矫正 -20~-90
AirLineAngle float [可选]航线旋转角度,默认0 -180~0~180
Area List<Point> 区域范围的经纬度坐标集合,你必须确保至少保证有3个经纬度点。 { (lng, lat) | lng ∈ [-180, 180], lat ∈ [-90, 90] }

立面光绘(正在挖掘中..)


 ### 以下是“立面光绘 API”的“Python”请求示例 ####
code
                 

如需获取“立面光绘”经纬度坐标,你需要向以下地址发送 POST 请求:
http://api.alanweb.site/api/FlightRoute/xxxxxxxxxxx



 
                 

请求参数说明

字段名 类型 描述 范围
FlyHight float 最低高度 10~1500
FlySpeed float 飞行速度 1~15
CameraAngle float 云台角度 -90~90
xxxxxxxxx xxxxxxx xxxxxxxxxxx xxxxxxxxxx
xxxxxxxxx xxxxxxx xxxxxxxxxxx xxxxxxxxxx
Area List<Point> 区域范围的经纬度坐标集合,你必须确保至少保证有三个经纬度点。 { (lng, lat) | lng ∈ [-180, 180], lat ∈ [-90, 90] }

镜头参数

镜头下标参数说明

参数    描述
-1    [暂未实现,正在挖掘中..]先不传入负值
不指定选择某个镜头
直接按照传入距离计算HxValue、PxValue
0    Air3
1    Air3(48MP)
2    Air3(48MP)x3中长焦
3    Air3S
4    Air3S(50MP)
5    Mavic3
6    Mavic3Class
7    Mavic3Cine
8    Mavic3Pro
9    Mavic3Pro中焦x3(48MP)
10    Mavic3Pro长焦x7(12MP)
11    Mini4Pro
12    Mini4Pro(48MP)
13    Mavic 3E
14    Matrice 4E
15    Mavic3E-x7(12MP)
16    Mavic3T(RGB)48MP
17    Mavic3T(IR)
18    Mavic3M(ML)
19    Mini3Pro(12MP)
20    Mini3Pro(48MP)
21    Mavic4Pro
22    Mavic4Pro-x7
23    Air2(12MP)
24    Air2S(3:4)
25    Mavic2Pro
26    Mavic5Pro
说明    如果你有其他无人机的参数
你可以联系我们进行纠正或修改

至此结束


### “Python”请求示例完整版 ####
import requests
import json

API_URL = "http://api.alanweb.site/api/FlightRoute/GridGeneration"
API_KEY = "api_key_xxxxxxxxxxxxxxxxxxxx"
HEADERS = {
    "X-Api-Key": API_KEY,
    "Content-Type": "application/json"
}
# 请求参数
REQUEST_DATA = {
  "HxValue": 100,
  "PxValue": 100,
  "SimplePoint": True,
  "BaoLiuTwoDian": True,
  "AirLineAngle": 0,
  "Area": [
        {
            "longitude": 107.707574236791,
            "latitude": 27.9486901470109
        },
        {
            "longitude": 107.71361909641,
            "latitude": 27.9475811444902
        },
        {
            "longitude": 107.713524153021,
            "latitude": 27.9516255958259
        },
        {
            "longitude": 107.708360173145,
            "latitude": 27.9520076717445
        }
    ]
}

def call_flight_route_api():
    """调用航线计算API,包含完整异常处理"""
    try:
        # 发送POST请求
        response = requests.post(
            url=API_URL,
            headers=HEADERS,
            data=json.dumps(REQUEST_DATA),
            timeout=30
        )

        # 打印响应状态码(保留原有逻辑)
        print(f"响应状态码: {response.status_code}")
        print("响应内容:")
        try:
            # 尝试解析并格式化JSON
            json_data = response.json()  # 直接用response.json()更简洁
            formatted_json = json.dumps(json_data, indent=4, ensure_ascii=False)
            print(formatted_json)
        except json.JSONDecodeError:
            # 如果不是JSON,打印原始文本
            print(f"(非JSON格式){response.text}")

        if response.status_code == 200:
            # 这里直接复用上面解析的json_data,避免重复解析
            result = json_data
            print(f"\n计算结果 - 是否成功: {result.get('Success')}")
            print(f"计算结果 - 消息: {result.get('Message')}")
            print(f"计算结果 - 航线点数: {len(result.get('RoutePoints', []))}")
        elif response.status_code == 401:
            print("❌ 错误:API Key无效/缺失,请检查X-Api-Key是否正确")
        elif response.status_code == 429:
            print("❌ 错误:请求频率超限(每秒5次/每分钟60次/每天1000次)")
        else:
            print(f"❌ 其他错误:{response.status_code} - {response.text}")

    except requests.exceptions.ConnectionError:
        print("❌ 错误:无法连接到API服务器,请检查地址/端口是否正确")
    except requests.exceptions.Timeout:
        print("❌ 错误:请求超时,请检查服务器是否正常")
    except Exception as e:
        print(f"❌ 未知错误:{str(e)}")

if __name__ == "__main__":
    print("=== API调用(经纬网格) ===")
    call_flight_route_api()

这是一个Python语言编写的完整的例子
路由:http://api.alanweb.site/api/FlightRoute/GridGeneration


简单例子

步骤      
1 你可以利用AI工具,例如“豆包AI”,告诉他把JSON的经纬度数据转为csv文件
字段按照latitude,longitude保存。
2 打开网址“火星3D地球仪”
3 点击“功能”——“导入CSV”,此时会自动定位到你刚刚规划的经纬网格位置。

其他工具

名称      
1 经纬转换工具,打开网址“荔枝转换工具”
2 假设把他们应用在飞行器中?打开网址“大疆上云API”
3 用在数字地球,打开网址“Cesium”
4 使用AI完成以上工作,打开网址“豆包AI问答”

特别鸣谢

名称      
1 颜泽·黔
2 朱旭东·晋
3 张多金·宁
3 夏雨程

错误码说明

当前API接口遇到错误可能返回的代码如下:

错码 含义
429 短时间内频繁调用接口!
401 未知或无效的 api_key。当你使用了未知的 API 密钥或 API 密钥已过期时会出现此错误。
400 传入类型错误 api_key。例如Python中当你把True字段写成了“true”字符串传入时,会报错。
405 协议错误 http/https调用时应当使用https,而使用为http。
Success=false 返回的JSON数据消息附带Success=false,计算失败时将返回此附带消息。
Success=true 返回的JSON数据消息附带Success=true,计算成功时将返回此附带消息。