Местные системы координат в WKT 2

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/msk-wkt2.html


Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.

Введение

Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.

В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.

На момент написания статьи действуют спецификации OGC Well-known text representation of coordinate reference systems.[1] Они зафиксированы в стандарте ISO 19162:2019.[2]

Типы местных систем координат

Классические проекции

Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 False easting и EPSG:8807 False northing. Определение таких систем в WKT 2 не отличается от WKT 1.

В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic[3] или получить аддитивно от второй зоны EPSG:3352 Pulkovo 1942 / CS63 zone C2[4] с учётом параметров сдвига.

PROJCRS["Pulkovo 1942 / MSK47 zone 2",
    BASEGEOGCRS["Pulkovo 1942",
        DATUM["Pulkovo 1942",
            ELLIPSOID["Krassowsky 1940",6378245,298.3,
                LENGTHUNIT["metre",1]]],
        PRIMEM["Greenwich",0,
            ANGLEUNIT["degree",0.0174532925199433]],
        ID["EPSG",4284]],
    CONVERSION["MSK47 zone 2",
        METHOD["Transverse Mercator",
            ID["EPSG",9807]],
        PARAMETER["Latitude of natural origin",0.1,
            ANGLEUNIT["degree",0.0174532925199433],
            ID["EPSG",8801]],
        PARAMETER["Longitude of natural origin",30.95,
            ANGLEUNIT["degree",0.0174532925199433],
            ID["EPSG",8802]],
        PARAMETER["Scale factor at natural origin",1,
            SCALEUNIT["unity",1],
            ID["EPSG",8805]],
        PARAMETER["False easting",2250000,
            LENGTHUNIT["metre",1],
            ID["EPSG",8806]],
        PARAMETER["False northing",-6200000,
            LENGTHUNIT["metre",1],
            ID["EPSG",8807]]],
    CS[Cartesian,2],
        AXIS["northing (X)",north,
            ORDER[1],
            LENGTHUNIT["metre",1]],
        AXIS["easting (Y)",east,
            ORDER[2],
            LENGTHUNIT["metre",1]],
    USAGE[
        SCOPE["unknown"],
        AREA["Europe - Russia - MSK47 zone 2"],
        BBOX[58.41,28.67,61.19,33.74]]]

Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины Широта минимальная, Долгота минимальная, Широта максимальная, Долгота максимальная в системе координат WGS 84.

Системы координат с особым датумом

Сюда отнесём разные ситуации:

  • датум отсутствует в EPSG;
  • трансформация из датума в WGS 84 отсутствует в EPSG;
  • трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.

Известен пример МСК-33[5], построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.

Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.[6]

Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:

BOUNDCRS[
    SOURCECRS[
        PROJCRS["Moscow",
            BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",
                DATUM["Not specified (based on Bessel 1841 ellipsoid)",
                    ELLIPSOID["Bessel 1841",6377397.155,299.1528128,
                        LENGTHUNIT["metre",1,
                            ID["EPSG",9001]]]],
                PRIMEM["Greenwich",0,
                    ANGLEUNIT["degree",0.0174532925199433],
                    ID["EPSG",8901]]],
            CONVERSION["Moscow",
                METHOD["Transverse Mercator",
                    ID["EPSG",9807]],
                PARAMETER["Latitude of natural origin",55.6666666666667,
                    ANGLEUNIT["degree",0.0174532925199433],
                    ID["EPSG",8801]],
                PARAMETER["Longitude of natural origin",37.5,
                    ANGLEUNIT["degree",0.0174532925199433],
                    ID["EPSG",8802]],
                PARAMETER["Scale factor at natural origin",1,
                    SCALEUNIT["unity",1],
                    ID["EPSG",8805]],
                PARAMETER["False easting",0,
                    LENGTHUNIT["metre",1],
                    ID["EPSG",8806]],
                PARAMETER["False northing",0,
                    LENGTHUNIT["metre",1],
                    ID["EPSG",8807]]],
            CS[Cartesian,2],
                AXIS["(E)",east,
                    ORDER[1],
                    LENGTHUNIT["metre",1,
                        ID["EPSG",9001]]],
                AXIS["(N)",north,
                    ORDER[2],
                    LENGTHUNIT["metre",1,
                        ID["EPSG",9001]]]]],
    TARGETCRS[
        GEOGCRS["WGS 84",
            DATUM["World Geodetic System 1984",
                ELLIPSOID["WGS 84",6378137,298.257223563,
                    LENGTHUNIT["metre",1]]],
            PRIMEM["Greenwich",0,
                ANGLEUNIT["degree",0.0174532925199433]],
            CS[ellipsoidal,2],
                AXIS["geodetic latitude (Lat)",north,
                    ORDER[1],
                    ANGLEUNIT["degree",0.0174532925199433]],
                AXIS["geodetic longitude (Lon)",east,
                    ORDER[2],
                    ANGLEUNIT["degree",0.0174532925199433]],
            ID["EPSG",4326]]],
    ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",
        METHOD["Coordinate Frame rotation (geog2D domain)",
            ID["EPSG",9607]],
        PARAMETER["X-axis translation",316.151,
            ID["EPSG",8605]],
        PARAMETER["Y-axis translation",78.924,
            ID["EPSG",8606]],
        PARAMETER["Z-axis translation",589.650,
            ID["EPSG",8607]],
        PARAMETER["X-axis rotation",1.57273,
            ID["EPSG",8608]],
        PARAMETER["Y-axis rotation",-2.69209,
            ID["EPSG",8609]],
        PARAMETER["Z-axis rotation",-2.34693,
            ID["EPSG",8610]],
        PARAMETER["Scale difference",1.0000084507,
            ID["EPSG",8611]]]]

В данном случае применена трансформация EPSG:9607 Coordinate Frame rotation (geog2D domain), но могут быть использованы и другие.[7]

N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 его воспринял.

Системы координат с дополнительным преобразованием

Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.

В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (местной) системе следующим образом:

X2 = A0 + A1 * X1 + A2 * Y1
Y2 = B0 + B1 * X1 + B2 * Y1

Для примера возьмём случайное определение с просторов Интернета:[8]

"--- Местная система координат г. Екатеринбург ---"
"уточненная",3008,1001,7,60.05,0,1,1500000,-11057.63,7,0.9999960304,0.0077980643,-1541421.56859,-0.0077980643,0.9999960304,-6238537.78326,-150000,-150000,150000,150000

В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.

Также дан охват Bounds, только он слишком широк, чтобы быть правдой.

Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию СК-63 зона W1 аффинным преобразованием:

DERIVEDPROJCRS["Yekaterinburg",
    BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",
        BASEGEOGCRS["Pulkovo 1942",
            DATUM["Pulkovo 1942",
                ELLIPSOID["Krassowsky 1940",6378245,298.3,
                    LENGTHUNIT["metre",1]]],
            PRIMEM["Greenwich",0,
                ANGLEUNIT["Degree",0.0174532925199433]]],
        CONVERSION["CS63 zone W1",
            METHOD["Transverse Mercator",
                ID["EPSG",9807]],
            PARAMETER["Latitude of natural origin",0.1,
                ANGLEUNIT["degree",0.0174532925199433],
                ID["EPSG",8801]],
            PARAMETER["Longitude of natural origin",60.05,
                ANGLEUNIT["degree",0.0174532925199433],
                ID["EPSG",8802]],
            PARAMETER["Scale factor at natural origin",1,
                SCALEUNIT["unity",1],
                ID["EPSG",8805]],
            PARAMETER["False easting",1500000,
                LENGTHUNIT["metre",1],
                ID["EPSG",8806]],
            PARAMETER["False northing",0,
                LENGTHUNIT["metre",1],
                ID["EPSG",8807]]]],
    DERIVINGCONVERSION["Affine",
        METHOD["Affine parametric transformation",
            ID["EPSG",9624]],
        PARAMETER["A0",-1541421.56859,
            LENGTHUNIT["metre",1],
            ID["EPSG",8623]],
        PARAMETER["A1",0.9999960304,
            SCALEUNIT["coefficient",1],
            ID["EPSG",8624]],
        PARAMETER["A2",0.0077980643,
            SCALEUNIT["coefficient",1],
            ID["EPSG",8625]],
        PARAMETER["B0",-6238537.78326,
            LENGTHUNIT["metre",1],
            ID["EPSG",8639]],
        PARAMETER["B1",-0.0077980643,
            SCALEUNIT["coefficient",1],
            ID["EPSG",8640]],
        PARAMETER["B2",0.9999960304,
            SCALEUNIT["coefficient",1],
            ID["EPSG",8641]]],
    CS[Cartesian,2],
        AXIS["easting (X)",east,
            ORDER[1],
            LENGTHUNIT["metre",1]],
        AXIS["northing (Y)",north,
            ORDER[2],
            LENGTHUNIT["metre",1]],
    USAGE[
        SCOPE["unknown"],
        AREA["Asia - Russia - Yekaterinburg"],
        BBOX[56.6,60.3,57,60.9]]]

Выводы

Даны примеры описания WKT 2 для трёх типов МСК, а именно:

  • классическая проекция;
  • проекция на особом датуме;
  • проекция с дополнительным аффинным преобразованием.

Как может выглядеть проекция на особом датуме с дополнительным преобразованием, пока не представляю.

Ссылки