geodesic_calculator.pypython geodesic_calculator.py --help
python geodesic_calculator.py <подкоманда> [аргументы...]
Длина геодезической линии и начальный/конечный азимут между двумя точками (φ₁,λ₁) и (φ₂,λ₂).
python geodesic_calculator.py distance <lat1> <lon1> <lat2> <lon2>
# пример: Афины → Москва
python geodesic_calculator.py distance 37.9838 23.7275 55.7558 37.6173
Из известной точки (φ,λ), азимута и длины дуги получаем конечную точку.
python geodesic_calculator.py direct <lat> <lon> <azimuth_deg> <distance_m>
# пример: от Москвы на азимут 120° на 10 км
python geodesic_calculator.py direct 55.7558 37.6173 120 10000
DMS → DD
python geodesic_calculator.py dms2dd "55 45 30N" --kind lat
python geodesic_calculator.py dms2dd "37:37:39E" --kind lon
DD → DMS
python geodesic_calculator.py dd2dms 55.758 --kind lat --decimals 2
python geodesic_calculator.py dd2dms 37.6173 --kind lon --decimals 2
LLA → ECEF
python geodesic_calculator.py lla2ecef <lat> <lon> <h_m>
python geodesic_calculator.py lla2ecef 37.9838 23.7275 150
ECEF → LLA
python geodesic_calculator.py ecef2lla <X> <Y> <Z>
python geodesic_calculator.py ecef2lla 4510731.1 2000000.0 4000000.0
python geodesic_calculator.py enu <X> <Y> <Z> <ref_lat> <ref_lon> <ref_h>
python geodesic_calculator.py enu 4510731 2000000 4000000 37.9838 23.7275 150
Аргументы — точки полигона «lat,lon». Для быстрых инженерных оценок (не эллипсоид!).
python geodesic_calculator.py area 55.0,37.0 55.2,37.0 55.2,37.2 55.0,37.2
Вперёд (LLA → UTM)
python geodesic_calculator.py utm fwd <lat> <lon>
python geodesic_calculator.py utm fwd 55.7558 37.6173
Обратно (UTM → LLA)
python geodesic_calculator.py utm inv <zone> <hemi> <easting> <northing>
python geodesic_calculator.py utm inv 37 N 413677 6177830
Вперёд (LLA → GK)
python geodesic_calculator.py gk fwd <lat> <lon> [--zone_width 3|6]
python geodesic_calculator.py gk fwd 55.7558 37.6173
Обратно (GK → LLA)
python geodesic_calculator.py gk inv <zone> <easting> <northing> [--zone_width 3|6]
python geodesic_calculator.py gk inv 13 4583450 6177830 --zone_width 3
По умолчанию включён «немецкий» режим: восточное смещение содержит префикс зоны (e = zone×10⁶ + x).
Подкоманда: csv <input_csv> <output_csv> <op> [--zone_width 3|6]
Поддерживаемые op и минимальные колонки входа:
lla2utm → вход: lat, lon → добавятся utm_zone, utm_hemi, utm_e, utm_nutm2lla → вход: zone, hemi, easting, northing → добавятся lat, lonlla2gk → вход: lat, lon → добавятся gk_zone, gk_e, gk_ngk2lla → вход: zone, easting, northing → добавятся lat, lonpython geodesic_calculator.py csv input.csv output.csv lla2utm
python geodesic_calculator.py csv input.csv output.csv utm2lla
python geodesic_calculator.py csv input.csv output.csv lla2gk --zone_width 3
python geodesic_calculator.py csv input.csv output.csv gk2lla --zone_width 6
name,lat,lon
PointA,55.7558,37.6173
PointB,37.9838,23.7275
name,lat,lon,utm_zone,utm_hemi,utm_e,utm_n
PointA,55.7558,37.6173,37,N,413677.000,6177830.000
PointB,37.9838,23.7275,34,N,376395.123,4202505.456
Подкоманда: geojson <input_geojson> <output_geojson> <op> [--zone_width 3|6]
Поддерживаются: Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon.
lla2utm: [lon, lat] → [e, n, zone, hemiFlag] (1 = N, 0 = S)utm2lla: ожидает тот же формат координат для восстановленияlla2gk: [lon, lat] → [e, n, zone]gk2lla: обратная операцияpython geodesic_calculator.py geojson in.geojson out.geojson lla2utm
python geodesic_calculator.py geojson in.geojson out.geojson utm2lla
python geodesic_calculator.py geojson in.geojson out.geojson lla2gk --zone_width 3
python geodesic_calculator.py geojson in.geojson out.geojson gk2lla --zone_width 6
CSV → GPX (колонки lat,lon[,name]):
python geodesic_calculator.py gpx fromcsv points.csv points.gpx --name_field name
GPX → CSV:
python geodesic_calculator.py gpx tocsv points.gpx points.csv
h — над WGS84.python или py (если настроен).