{"id":"v001","input":{"polygon":[{"lat":-0.0013565542155755733,"lon":-0.001796630568239043},{"lat":-0.0013565542155755733,"lon":0.001796630568239043},{"lat":0.0013565542155755733,"lon":0.001796630568239043},{"lat":0.0013565542155755733,"lon":-0.001796630568239043}]},"expect":{"result.centroid_lat.value":0.0,"result.centroid_lon.value":0.0,"result.centroid_inside":"yes","result.clearance.value":150.0,"ok":true},"source":"Symmetry and local-plane centroids, evaluated in Python (tools/vectors/gen_shape.py)","sourceVersion":"2026","tolerance":{"result.centroid_lat.value":{"rel":0,"abs":1e-11},"result.centroid_lon.value":{"rel":0,"abs":1e-11},"result.clearance.value":{"rel":0,"abs":0.81}}}
{"id":"v002","input":{"polygon":[{"lat":-0.004521847385251911,"lon":9.995508423579402},{"lat":-0.004521847385251911,"lon":10.004491576420598},{"lat":0.004521847385251911,"lon":10.004491576420598},{"lat":0.004521847385251911,"lon":9.995508423579402}]},"expect":{"result.centroid_lat.value":0.0,"result.centroid_lon.value":10.0,"result.centroid_inside":"yes","result.clearance.value":500.0,"result.interior_lat.value":0.0,"result.interior_lon.value":10.0,"ok":true},"source":"Symmetry and local-plane centroids, evaluated in Python (tools/vectors/gen_shape.py)","sourceVersion":"2026","tolerance":{"result.centroid_lat.value":{"rel":0,"abs":1e-11},"result.centroid_lon.value":{"rel":0,"abs":1e-11},"result.clearance.value":{"rel":0,"abs":2.01},"result.interior_lat.value":{"rel":0,"abs":1.796630568239043e-05},"result.interior_lon.value":{"rel":0,"abs":1.796630568239043e-05}}}
{"id":"v003","input":{"polygon":[{"lat":-33.90270463783315,"lon":18.398648544954302},{"lat":-33.90270463783315,"lon":18.401351455045695},{"lat":-33.897295362166844,"lon":18.401351455045695},{"lat":-33.897295362166844,"lon":18.398648544954302}]},"expect":{"result.centroid_lat.value":-33.9,"result.centroid_lon.value":18.4,"result.centroid_inside":"yes","result.clearance.value":125.0,"ok":true},"source":"Symmetry and local-plane centroids, evaluated in Python (tools/vectors/gen_shape.py)","sourceVersion":"2026","tolerance":{"result.centroid_lat.value":{"rel":0,"abs":3e-07},"result.centroid_lon.value":{"rel":0,"abs":3e-07},"result.clearance.value":{"rel":0,"abs":1.21}}}
{"id":"v004","input":{"polygon":[{"lat":59.99910243293373,"lon":-150.00716845857934},{"lat":59.99910243293373,"lon":-149.99283154142066},{"lat":60.00089756706627,"lon":-149.99283154142066},{"lat":60.00089756706627,"lon":-150.00716845857934}]},"expect":{"result.centroid_lat.value":60.0,"result.centroid_lon.value":-150.0,"result.centroid_inside":"yes","result.clearance.value":100.0,"ok":true},"source":"Symmetry and local-plane centroids, evaluated in Python (tools/vectors/gen_shape.py)","sourceVersion":"2026","tolerance":{"result.centroid_lat.value":{"rel":0,"abs":3e-07},"result.centroid_lon.value":{"rel":0,"abs":3e-07},"result.clearance.value":{"rel":0,"abs":1.61}}}
{"id":"v005","input":{"polygon":[{"lat":40.0,"lon":-105.0},{"lat":40.00135092985422,"lon":-104.99976579111528},{"lat":40.000360247961126,"lon":-104.9980092244799}]},"expect":{"result.centroid_lat.value":40.00057039260511,"result.centroid_lon.value":-104.99925833853173,"result.centroid_inside":"yes","ok":true},"source":"Symmetry and local-plane centroids, evaluated in Python (tools/vectors/gen_shape.py)","sourceVersion":"2026","tolerance":{"result.centroid_lat.value":{"rel":0,"abs":2e-07},"result.centroid_lon.value":{"rel":0,"abs":2e-07}}}
{"id":"v006","input":{"polygon":[{"lat":-12.0,"lon":130.0},{"lat":-12.000813579251483,"lon":130.00055095077485},{"lat":-11.999728806916172,"lon":130.00183650258285}]},"expect":{"result.centroid_lat.value":-12.000180795389218,"result.centroid_lon.value":130.0007958177859,"result.centroid_inside":"yes","ok":true},"source":"Symmetry and local-plane centroids, evaluated in Python (tools/vectors/gen_shape.py)","sourceVersion":"2026","tolerance":{"result.centroid_lat.value":{"rel":0,"abs":2e-07},"result.centroid_lon.value":{"rel":0,"abs":2e-07}}}
{"id":"v007","input":{"polygon":[{"lat":71.00008962629148,"lon":25.0},{"lat":71.0017925258298,"lon":25.00137547716797},{"lat":71.0,"lon":25.00330114520312}]},"expect":{"result.centroid_lat.value":71.00062738404043,"result.centroid_lon.value":25.001558874123695,"result.centroid_inside":"yes","ok":true},"source":"Symmetry and local-plane centroids, evaluated in Python (tools/vectors/gen_shape.py)","sourceVersion":"2026","tolerance":{"result.centroid_lat.value":{"rel":0,"abs":2e-07},"result.centroid_lon.value":{"rel":0,"abs":2e-07}}}
{"id":"v008","input":{"polygon":[{"lat":-0.004521847385251911,"lon":-0.004491576420597608},{"lat":-0.004521847385251911,"lon":0.004491576420597608},{"lat":0.004521847385251911,"lon":0.004491576420597608},{"lat":0.004521847385251911,"lon":-0.004491576420597608},{"lat":-0.0018087389541007644,"lon":-0.001796630568239043,"ring":1},{"lat":-0.0018087389541007644,"lon":0.001796630568239043,"ring":1},{"lat":0.0018087389541007644,"lon":0.001796630568239043,"ring":1},{"lat":0.0018087389541007644,"lon":-0.001796630568239043,"ring":1}]},"expect":{"result.centroid_lat.value":0.0,"result.centroid_lon.value":0.0,"result.area.value":0.84,"ok":true},"source":"Symmetry and local-plane centroids, evaluated in Python (tools/vectors/gen_shape.py)","sourceVersion":"2026","tolerance":{"result.centroid_lat.value":{"rel":0,"abs":1e-11},"result.centroid_lon.value":{"rel":0,"abs":1e-11},"result.area.value":{"rel":0,"abs":1e-06}}}
{"id":"v009","input":{"polygon":[{"lat":80,"lon":0},{"lat":80,"lon":90},{"lat":80,"lon":180},{"lat":80,"lon":-90}]},"expect":{"result.centroid_lat.value":90.0,"result.centroid_inside":"yes","ok":true},"source":"Symmetry and local-plane centroids, evaluated in Python (tools/vectors/gen_shape.py)","sourceVersion":"2026","tolerance":{"result.centroid_lat.value":{"rel":0,"abs":1e-09}}}
{"id":"v010","input":{"polygon":[{"lat":40.0,"lon":-105.0},{"lat":40.0,"lon":-104.997},{"lat":40.0006,"lon":-104.997},{"lat":40.0006,"lon":-104.9994},{"lat":40.0024,"lon":-104.9994},{"lat":40.0024,"lon":-104.997},{"lat":40.003,"lon":-104.997},{"lat":40.003,"lon":-105.0}]},"expect":{"result.centroid_inside":"no","meta.warnings.0.code":"CENTROID_OUTSIDE","ok":true},"source":"add-navigation-and-geometry scenarios","sourceVersion":"2026","tolerance":{}}
{"id":"v011","input":{"polygon":[{"lat":-9.043694770503822e-05,"lon":-8.983152841195215e-05},{"lat":-9.043694770503822e-05,"lon":8.983152841195215e-05},{"lat":9.043694770503822e-05,"lon":8.983152841195215e-05},{"lat":9.043694770503822e-05,"lon":-8.983152841195215e-05},{"lat":-0.0004521847385251911,"lon":-0.00044915764205976077,"ring":1},{"lat":-0.0004521847385251911,"lon":0.00044915764205976077,"ring":1},{"lat":0.0004521847385251911,"lon":0.00044915764205976077,"ring":1},{"lat":0.0004521847385251911,"lon":-0.00044915764205976077,"ring":1}]},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"add-navigation-and-geometry scenarios","sourceVersion":"2026","tolerance":{}}
{"id":"v012","input":{"polygon":[{"lat":0.0,"lon":0.0,"ring":0.5},{"lat":0.0,"lon":8.983152841195215e-05},{"lat":9.043694770503822e-05,"lon":8.983152841195215e-05}]},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"add-navigation-and-geometry scenarios","sourceVersion":"2026","tolerance":{}}
{"id": "v013", "input": {"polygon": [{"lat": 40.0, "lon": -105.0}, {"lat": 40.0, "lon": -104.0}, {"lat": 40.5, "lon": -104.0}, {"lat": 40.5, "lon": -105.0}]}, "expect": {"result.centroid_lat.value": 40.250777243047665, "result.centroid_lon.value": -104.50000000000001, "result.area.value": 4723.662372036518, "ok": true}, "source": "PROJ's ellipsoidal Lambert azimuthal equal-area (pyproj) with GEOS's planar centroid (shapely), over edges walked by Karney's geographiclib: a square in Colorado", "sourceVersion": "PROJ 9.3.0 / GEOS 3.11.4 / geographiclib 2.1", "tolerance": {"result.centroid_lat.value": {"abs": 1e-06}, "result.centroid_lon.value": {"abs": 1e-06}, "result.area.value": {"rel": 5e-08}}}
{"id": "v014", "input": {"polygon": [{"lat": 40.0, "lon": -105.0}, {"lat": 40.0, "lon": -104.6}, {"lat": 40.2, "lon": -104.6}, {"lat": 40.2, "lon": -104.8}, {"lat": 40.4, "lon": -104.8}, {"lat": 40.4, "lon": -105.0}]}, "expect": {"result.centroid_lat.value": 40.16661970358079, "result.centroid_lon.value": -104.83321328306934, "result.area.value": 1134.7330017399786, "ok": true}, "source": "PROJ's ellipsoidal Lambert azimuthal equal-area (pyproj) with GEOS's planar centroid (shapely), over edges walked by Karney's geographiclib: an L in Colorado", "sourceVersion": "PROJ 9.3.0 / GEOS 3.11.4 / geographiclib 2.1", "tolerance": {"result.centroid_lat.value": {"abs": 1e-06}, "result.centroid_lon.value": {"abs": 1e-06}, "result.area.value": {"rel": 5e-08}}}
{"id": "v015", "input": {"polygon": [{"lat": 10.0, "lon": 20.0}, {"lat": 10.0, "lon": 21.5}, {"lat": 10.02, "lon": 21.5}, {"lat": 10.02, "lon": 20.0}]}, "expect": {"result.centroid_lat.value": 10.01084383817742, "result.centroid_lon.value": 20.750000000000018, "result.area.value": 363.8170495522461, "ok": true}, "source": "PROJ's ellipsoidal Lambert azimuthal equal-area (pyproj) with GEOS's planar centroid (shapely), over edges walked by Karney's geographiclib: a long thin strip", "sourceVersion": "PROJ 9.3.0 / GEOS 3.11.4 / geographiclib 2.1", "tolerance": {"result.centroid_lat.value": {"abs": 1e-06}, "result.centroid_lon.value": {"abs": 1e-06}, "result.area.value": {"rel": 5e-08}}}
{"id": "v016", "input": {"polygon": [{"lat": -15.0, "lon": 30.0}, {"lat": -15.5, "lon": 31.2}, {"lat": -16.1, "lon": 30.3}]}, "expect": {"result.centroid_lat.value": -15.533927519063573, "result.centroid_lon.value": 30.499797742460952, "result.area.value": 6944.049391294916, "ok": true}, "source": "PROJ's ellipsoidal Lambert azimuthal equal-area (pyproj) with GEOS's planar centroid (shapely), over edges walked by Karney's geographiclib: a triangle", "sourceVersion": "PROJ 9.3.0 / GEOS 3.11.4 / geographiclib 2.1", "tolerance": {"result.centroid_lat.value": {"abs": 1e-06}, "result.centroid_lon.value": {"abs": 1e-06}, "result.area.value": {"rel": 5e-08}}}
{"id": "v017", "input": {"polygon": [{"lat": -0.25, "lon": -0.25}, {"lat": -0.25, "lon": 0.25}, {"lat": 0.25, "lon": 0.25}, {"lat": 0.25, "lon": -0.25}]}, "expect": {"result.centroid_lat.value": 0.0, "result.centroid_lon.value": 0.0, "result.area.value": 3077.2779736719144, "ok": true}, "source": "PROJ's ellipsoidal Lambert azimuthal equal-area (pyproj) with GEOS's planar centroid (shapely), over edges walked by Karney's geographiclib: a square on the equator", "sourceVersion": "PROJ 9.3.0 / GEOS 3.11.4 / geographiclib 2.1", "tolerance": {"result.centroid_lat.value": {"abs": 1e-06}, "result.centroid_lon.value": {"abs": 1e-06}, "result.area.value": {"rel": 5e-08}}}
{"id": "v018", "input": {"polygon": [{"lat": 70.0, "lon": 25.0}, {"lat": 70.0, "lon": 26.0}, {"lat": 70.4, "lon": 26.0}, {"lat": 70.4, "lon": 25.0}]}, "expect": {"result.centroid_lat.value": 70.20005196011658, "result.centroid_lon.value": 25.5, "result.area.value": 1687.6900121135186, "ok": true}, "source": "PROJ's ellipsoidal Lambert azimuthal equal-area (pyproj) with GEOS's planar centroid (shapely), over edges walked by Karney's geographiclib: a square at 70 north", "sourceVersion": "PROJ 9.3.0 / GEOS 3.11.4 / geographiclib 2.1", "tolerance": {"result.centroid_lat.value": {"abs": 1e-06}, "result.centroid_lon.value": {"abs": 1e-06}, "result.area.value": {"rel": 5e-08}}}
{"id": "v019", "input": {"polygon": [{"lat": -33.9, "lon": 151.1}, {"lat": -33.7, "lon": 151.4}, {"lat": -33.5, "lon": 151.2}, {"lat": -33.8, "lon": 150.9}]}, "expect": {"result.centroid_lat.value": -33.71587561369447, "result.centroid_lon.value": 151.15454367931144, "result.area.value": 976.2824892185292, "ok": true}, "source": "PROJ's ellipsoidal Lambert azimuthal equal-area (pyproj) with GEOS's planar centroid (shapely), over edges walked by Karney's geographiclib: a southern-hemisphere quadrilateral", "sourceVersion": "PROJ 9.3.0 / GEOS 3.11.4 / geographiclib 2.1", "tolerance": {"result.centroid_lat.value": {"abs": 1e-06}, "result.centroid_lon.value": {"abs": 1e-06}, "result.area.value": {"rel": 5e-08}}}
{"id": "v020", "input": {"polygon": [{"lat": -17.6, "lon": 179.6}, {"lat": -17.6, "lon": -179.7}, {"lat": -17.2, "lon": -179.7}, {"lat": -17.2, "lon": 179.6}]}, "expect": {"result.centroid_lat.value": -17.400235719638793, "result.centroid_lon.value": 179.95000000000002, "result.area.value": 3292.7922508047022, "ok": true}, "source": "PROJ's ellipsoidal Lambert azimuthal equal-area (pyproj) with GEOS's planar centroid (shapely), over edges walked by Karney's geographiclib: a shape across the antimeridian", "sourceVersion": "PROJ 9.3.0 / GEOS 3.11.4 / geographiclib 2.1", "tolerance": {"result.centroid_lat.value": {"abs": 1e-06}, "result.centroid_lon.value": {"abs": 1e-06}, "result.area.value": {"rel": 5e-08}}}
{"id": "v021", "input": {"polygon": [{"lat": 35.3, "lon": -120.0}, {"lat": 35.25980762113533, "lon": -119.8}, {"lat": 35.15, "lon": -119.65358983848623}, {"lat": 35.0, "lon": -119.6}, {"lat": 34.85, "lon": -119.65358983848623}, {"lat": 34.74019237886467, "lon": -119.8}, {"lat": 34.7, "lon": -120.0}, {"lat": 34.74019237886467, "lon": -120.2}, {"lat": 34.85, "lon": -120.34641016151377}, {"lat": 35.0, "lon": -120.4}, {"lat": 35.15, "lon": -120.34641016151377}, {"lat": 35.25980762113533, "lon": -120.2}]}, "expect": {"result.centroid_lat.value": 34.99993465987583, "result.centroid_lon.value": -119.99999999999999, "result.area.value": 3645.91122501169, "ok": true}, "source": "PROJ's ellipsoidal Lambert azimuthal equal-area (pyproj) with GEOS's planar centroid (shapely), over edges walked by Karney's geographiclib: a twelve-sided ring", "sourceVersion": "PROJ 9.3.0 / GEOS 3.11.4 / geographiclib 2.1", "tolerance": {"result.centroid_lat.value": {"abs": 1e-06}, "result.centroid_lon.value": {"abs": 1e-06}, "result.area.value": {"rel": 5e-08}}}
{"id": "v022", "input": {"polygon": [{"lat": 5.0, "lon": 100.0}, {"lat": 5.9, "lon": 100.05}, {"lat": 5.9, "lon": 99.95}]}, "expect": {"result.centroid_lat.value": 5.600002004771173, "result.centroid_lon.value": 100.0, "result.area.value": 551.056232812408, "ok": true}, "source": "PROJ's ellipsoidal Lambert azimuthal equal-area (pyproj) with GEOS's planar centroid (shapely), over edges walked by Karney's geographiclib: a narrow wedge", "sourceVersion": "PROJ 9.3.0 / GEOS 3.11.4 / geographiclib 2.1", "tolerance": {"result.centroid_lat.value": {"abs": 1e-06}, "result.centroid_lon.value": {"abs": 1e-06}, "result.area.value": {"rel": 5e-08}}}
{"id": "v023", "input": {"polygon": [{"lat": -0.6, "lon": 15.0}, {"lat": -0.6, "lon": 15.8}, {"lat": 0.4, "lon": 15.8}, {"lat": 0.4, "lon": 15.0}]}, "expect": {"result.centroid_lat.value": -0.1, "result.centroid_lon.value": 15.399999999999999, "result.area.value": 9847.281750529814, "ok": true}, "source": "PROJ's ellipsoidal Lambert azimuthal equal-area (pyproj) with GEOS's planar centroid (shapely), over edges walked by Karney's geographiclib: a rectangle straddling the equator", "sourceVersion": "PROJ 9.3.0 / GEOS 3.11.4 / geographiclib 2.1", "tolerance": {"result.centroid_lat.value": {"abs": 1e-06}, "result.centroid_lon.value": {"abs": 1e-06}, "result.area.value": {"rel": 5e-08}}}
{"id": "v024", "input": {"polygon": [{"lat": 48.0, "lon": 2.0}, {"lat": 48.0, "lon": 2.6}, {"lat": 48.1, "lon": 2.6}, {"lat": 48.1, "lon": 2.2}, {"lat": 48.4, "lon": 2.2}, {"lat": 48.4, "lon": 2.6}, {"lat": 48.5, "lon": 2.6}, {"lat": 48.5, "lon": 2.0}]}, "expect": {"result.centroid_lat.value": 48.2499155711201, "result.centroid_lon.value": 2.233333156256026, "result.area.value": 1486.3862492309654, "ok": true}, "source": "PROJ's ellipsoidal Lambert azimuthal equal-area (pyproj) with GEOS's planar centroid (shapely), over edges walked by Karney's geographiclib: a C shape, centroid outside", "sourceVersion": "PROJ 9.3.0 / GEOS 3.11.4 / geographiclib 2.1", "tolerance": {"result.centroid_lat.value": {"abs": 1e-06}, "result.centroid_lon.value": {"abs": 1e-06}, "result.area.value": {"rel": 5e-08}}}
