{"id":"v001","input":{"area":[{"lat":0,"lon":0},{"lat":0,"lon":0.001796630568239043},{"lat":0.0013565542155755733,"lon":0.001796630568239043},{"lat":0.0013565542155755733,"lon":0}],"distance":"50 m","waypoints":[{"lat":-0.000560709075771237,"lon":0.0008983152841195215},{"lat":-0.0003617477908201529,"lon":0.0008983152841195215},{"lat":-9.043694770503822e-05,"lon":0.0008983152841195215},{"lat":0.0006782771077877866,"lon":-0.0005569554761541034}],"warning_distance":"30 m"},"expect":{"result.outside_count":2,"result.area_enclosed.value":0.07285398163397448,"result.flagged.0.waypoint":1,"result.flagged.0.beyond.value":12.0,"result.flagged.1.waypoint":2,"result.flagged.1.beyond.value":10.0,"result.flagged.2.waypoint":4,"result.flagged.2.beyond.value":12.0,"result.warning_count":1,"ok":true,"result.max_deviation.value":0.0},"source":"Geodesic distance on the equator and a meridian in closed form, and Steiner's formula for the fence area, evaluated in Python (tools/vectors/gen_drone.py)","sourceVersion":"2026","tolerance":{"result.outside_count":{"rel":1e-06,"abs":1e-09},"result.area_enclosed.value":{"rel":0.002,"abs":0},"result.flagged.0.waypoint":{"rel":1e-06,"abs":1e-09},"result.flagged.0.beyond.value":{"rel":0,"abs":0.001},"result.flagged.1.waypoint":{"rel":1e-06,"abs":1e-09},"result.flagged.1.beyond.value":{"rel":0,"abs":0.001},"result.flagged.2.waypoint":{"rel":1e-06,"abs":1e-09},"result.flagged.2.beyond.value":{"rel":0,"abs":0.001},"result.warning_count":{"rel":1e-06,"abs":1e-09},"result.max_deviation.value":{"rel":0,"abs":0.5}}}
{"id":"v002","input":{"area":[{"lat":0,"lon":0},{"lat":0,"lon":0.004491576420597608},{"lat":0.0027131084311511466,"lon":0.004491576420597608},{"lat":0.0027131084311511466,"lon":0}],"distance":"100 m","waypoints":[{"lat":-0.0013565542155755733,"lon":0.002245788210298804},{"lat":-0.0007234955816403058,"lon":0.002245788210298804},{"lat":-0.00018087389541007645,"lon":0.002245788210298804},{"lat":-0.000913413171820886,"lon":0.002245788210298804},{"lat":0.0013565542155755733,"lon":-0.001347472926179282}],"warning_distance":"60 m"},"expect":{"result.outside_count":3,"result.area_enclosed.value":0.341415926535898,"result.flagged.0.waypoint":1,"result.flagged.0.beyond.value":50.0,"result.flagged.1.waypoint":2,"result.flagged.1.beyond.value":20.0,"result.flagged.2.waypoint":4,"result.flagged.2.beyond.value":1.0,"result.flagged.3.waypoint":5,"result.flagged.3.beyond.value":50.0,"result.warning_count":1,"ok":true,"result.max_deviation.value":0.0},"source":"Geodesic distance on the equator and a meridian in closed form, and Steiner's formula for the fence area, evaluated in Python (tools/vectors/gen_drone.py)","sourceVersion":"2026","tolerance":{"result.outside_count":{"rel":1e-06,"abs":1e-09},"result.area_enclosed.value":{"rel":0.002,"abs":0},"result.flagged.0.waypoint":{"rel":1e-06,"abs":1e-09},"result.flagged.0.beyond.value":{"rel":0,"abs":0.001},"result.flagged.1.waypoint":{"rel":1e-06,"abs":1e-09},"result.flagged.1.beyond.value":{"rel":0,"abs":0.001},"result.flagged.2.waypoint":{"rel":1e-06,"abs":1e-09},"result.flagged.2.beyond.value":{"rel":0,"abs":0.001},"result.flagged.3.waypoint":{"rel":1e-06,"abs":1e-09},"result.flagged.3.beyond.value":{"rel":0,"abs":0.001},"result.warning_count":{"rel":1e-06,"abs":1e-09},"result.max_deviation.value":{"rel":0,"abs":0.5}}}
{"id":"v003","input":{"area":[{"lat":0,"lon":0},{"lat":0,"lon":0.0008983152841195215},{"lat":0.0009043694770503822,"lon":0.0008983152841195215},{"lat":0.0009043694770503822,"lon":0}],"distance":"25 m","waypoints":[{"lat":-0.00027131084311511465,"lon":0.00044915764205976077},{"lat":-0.00018087389541007645,"lon":0.00044915764205976077},{"lat":0.0004521847385251911,"lon":-0.00026949458523585647}]},"expect":{"result.outside_count":2,"result.area_enclosed.value":0.02196349540849362,"result.flagged.0.waypoint":1,"result.flagged.0.beyond.value":5.0,"result.flagged.1.waypoint":3,"result.flagged.1.beyond.value":5.0,"ok":true,"result.max_deviation.value":0.0},"source":"Geodesic distance on the equator and a meridian in closed form, and Steiner's formula for the fence area, evaluated in Python (tools/vectors/gen_drone.py)","sourceVersion":"2026","tolerance":{"result.outside_count":{"rel":1e-06,"abs":1e-09},"result.area_enclosed.value":{"rel":0.002,"abs":0},"result.flagged.0.waypoint":{"rel":1e-06,"abs":1e-09},"result.flagged.0.beyond.value":{"rel":0,"abs":0.001},"result.flagged.1.waypoint":{"rel":1e-06,"abs":1e-09},"result.flagged.1.beyond.value":{"rel":0,"abs":0.001},"result.max_deviation.value":{"rel":0,"abs":0.5}}}
{"id":"v004","input":{"area":[{"lat":0,"lon":0},{"lat":0,"lon":0.008983152841195215},{"lat":0.0036174779082015288,"lon":0.008983152841195215},{"lat":0.0036174779082015288,"lon":0}],"distance":"200 m","waypoints":[{"lat":-0.0023513606403309938,"lon":0.004491576420597608},{"lat":-0.0016278650586906878,"lon":0.004491576420597608},{"lat":-0.0010852433724604586,"lon":0.004491576420597608},{"lat":0.0018087389541007644,"lon":-0.0023356197387107555}],"warning_distance":"150 m"},"expect":{"result.outside_count":2,"result.area_enclosed.value":1.0856637061435919,"result.flagged.0.waypoint":1,"result.flagged.0.beyond.value":60.0,"result.flagged.1.waypoint":2,"result.flagged.1.beyond.value":30.0,"result.flagged.2.waypoint":4,"result.flagged.2.beyond.value":60.0,"result.warning_count":1,"ok":true,"result.max_deviation.value":0.0},"source":"Geodesic distance on the equator and a meridian in closed form, and Steiner's formula for the fence area, evaluated in Python (tools/vectors/gen_drone.py)","sourceVersion":"2026","tolerance":{"result.outside_count":{"rel":1e-06,"abs":1e-09},"result.area_enclosed.value":{"rel":0.002,"abs":0},"result.flagged.0.waypoint":{"rel":1e-06,"abs":1e-09},"result.flagged.0.beyond.value":{"rel":0,"abs":0.001},"result.flagged.1.waypoint":{"rel":1e-06,"abs":1e-09},"result.flagged.1.beyond.value":{"rel":0,"abs":0.001},"result.flagged.2.waypoint":{"rel":1e-06,"abs":1e-09},"result.flagged.2.beyond.value":{"rel":0,"abs":0.001},"result.warning_count":{"rel":1e-06,"abs":1e-09},"result.max_deviation.value":{"rel":0,"abs":0.5}}}
{"id":"v005","input":{"area":[{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0027131084311511466,"lon":0.002694945852358564},{"lat":0.0027131084311511466,"lon":0}],"distance":"50 m","waypoints":[{"lat":-0.00043409734898418344,"lon":0.001347472926179282},{"lat":-0.0004974032123777102,"lon":0.001347472926179282},{"lat":0.0013565542155755733,"lon":-0.00043119133637737033}],"warning_distance":"45 m"},"expect":{"result.outside_count":1,"result.area_enclosed.value":0.15785398163397446,"result.flagged.0.waypoint":1,"result.flagged.0.beyond.value":3.0,"result.flagged.1.waypoint":2,"result.flagged.1.beyond.value":5.0,"result.flagged.2.waypoint":3,"result.flagged.2.beyond.value":3.0,"result.warning_count":2,"ok":true,"result.max_deviation.value":0.0},"source":"Geodesic distance on the equator and a meridian in closed form, and Steiner's formula for the fence area, evaluated in Python (tools/vectors/gen_drone.py)","sourceVersion":"2026","tolerance":{"result.outside_count":{"rel":1e-06,"abs":1e-09},"result.area_enclosed.value":{"rel":0.002,"abs":0},"result.flagged.0.waypoint":{"rel":1e-06,"abs":1e-09},"result.flagged.0.beyond.value":{"rel":0,"abs":0.001},"result.flagged.1.waypoint":{"rel":1e-06,"abs":1e-09},"result.flagged.1.beyond.value":{"rel":0,"abs":0.001},"result.flagged.2.waypoint":{"rel":1e-06,"abs":1e-09},"result.flagged.2.beyond.value":{"rel":0,"abs":0.001},"result.warning_count":{"rel":1e-06,"abs":1e-09},"result.max_deviation.value":{"rel":0,"abs":0.5}}}
{"id":"v006","input":{"area":[{"lat":0,"lon":0},{"lat":0,"lon":0.01796630568239043}],"distance":"100 m","waypoints":[{"lat":0.0011756803201654969,"lon":0.008983152841195215}]},"expect":{"result.outside_count":1,"result.flagged.0.beyond.value":30.0,"result.area_enclosed.value":0.43141592653589794,"ok":true},"source":"Geodesic distance on the equator and a meridian in closed form, and Steiner's formula for the fence area, evaluated in Python (tools/vectors/gen_drone.py)","sourceVersion":"2026","tolerance":{"result.outside_count":{"rel":0.002,"abs":1e-09},"result.flagged.0.beyond.value":{"rel":0,"abs":0.001},"result.area_enclosed.value":{"rel":0.002,"abs":1e-09}}}
{"id":"v007","input":{"area":[{"lat":0,"lon":0}],"distance":"500 m"},"expect":{"result.outside_count":0,"result.area_enclosed.value":0.7853981633974483,"ok":true},"source":"Geodesic distance on the equator and a meridian in closed form, and Steiner's formula for the fence area, evaluated in Python (tools/vectors/gen_drone.py)","sourceVersion":"2026","tolerance":{"result.outside_count":{"rel":0.001,"abs":1e-09},"result.area_enclosed.value":{"rel":0.001,"abs":1e-09}}}
{"id":"v008","input":{"area":[{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0}],"distance":"50 m","waypoints":[{"lat":0.0009043694770503822,"lon":0.001347472926179282},{"lat":-0.000560709075771237,"lon":0.001347472926179282}]},"expect":{"meta.warnings.1.code":"WAYPOINT_OUTSIDE_GEOFENCE","result.flagged.0.waypoint":2,"result.flagged.0.beyond.value":12.0,"ok":true},"source":"add-drone-suite scenarios","sourceVersion":"2026","tolerance":{"result.flagged.0.waypoint":{"rel":1e-09,"abs":1e-09},"result.flagged.0.beyond.value":{"rel":0,"abs":0.001}}}
{"id":"v009","input":{"area":[{"lat":0,"lon":0}],"distance":"50 m","warning_distance":"60 m"},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"add-drone-suite scenarios","sourceVersion":"2026","tolerance":{}}
{"id":"v010","input":{"area":[{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0},{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0},{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0},{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0},{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0},{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0},{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0},{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0},{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0},{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0},{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0},{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0},{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0},{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0},{"lat":0,"lon":0},{"lat":0,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0.002694945852358564},{"lat":0.0018087389541007644,"lon":0}],"distance":"50 m"},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"add-drone-suite scenarios","sourceVersion":"2026","tolerance":{}}
