https://wiki.gis-lab.info/api.php?action=feedcontributions&user=%D0%98%D0%B3%D0%BE%D1%80%D1%8C+%D0%91%D0%B5%D0%BB%D0%BE%D0%B2&feedformat=atomGIS-Lab - Вклад [ru]2024-03-29T11:48:22ZВкладMediaWiki 1.39.6https://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26813Местные системы координат в WKT 22023-04-16T06:12:19Z<p>Игорь Белов: /* Классические проекции */</p>
<hr />
<div>{{Статья|Опубликована|msk-wkt2}}<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важное его отличие от предшественника – использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
Также BBOX определяет выбор подходящих трансформаций.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docs.cntd.ru/document/965012231 Постановление Губернатора Владимирской обл. от 26.10.2009 N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["PMSK Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
USAGE[<br />
SCOPE["Engineering surveying and land cadastre."],<br />
AREA["Moscow and adjacent districts of the Moscow Region."],<br />
BBOX[55.13,36.78,56.23,38.49]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов, основанные на охватывающей зоне государственной системы координат с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (местной) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/#post-450897 г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Yekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]]],<br />
CONVERSION["CS63 zone W1",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["easting (X)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["northing (Y)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Asia - Russia - Yekaterinburg"],<br />
BBOX[56.6,60.3,57,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Как может выглядеть проекция на особом датуме с дополнительным преобразованием, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0&diff=26804Местная система координат линейного объекта2022-08-12T04:44:07Z<p>Игорь Белов: /* Решение обратной геодезической задачи */</p>
<hr />
<div>{{Статья|Опубликована|local-cs-linear-object}}<br />
<br />
{{Аннотация|Конструирование проекции для представления системы координат линейного объекта в ГИС}}<br />
<br />
== Введение ==<br />
<br />
Система координат линейного объекта строится для обеспечения строительства или эксплуатации протяжённого инженерного сооружения.<br />
Целью при этом является минимизация искажений, присущих проекции, в полосе объекта.<br />
<br />
== Постановка задачи ==<br />
<br />
Пусть ось сооружения задана положением двух крайних точек в глобальной системе координат (ГСК).<br />
<br />
В местной системе (МСК) совместим начало координат с точкой в середине отрезка геодезической линии, соединяющей крайние точки.<br />
Ось ''OX'' направим вдоль оси сооружения.<br />
Потребуем, чтобы расстояние между крайними точками равнялось априори заданной величине ''L''.<br />
<br />
Требуется подобрать проекцию, подходящую для представления такой МСК в ГИС и в программах, используемых геодезистами.<br />
<br />
== О проекции ==<br />
<br />
Выбор проекции однозначен. Это косая проекция Меркатора с такими значениями параметров, чтобы так называемая начальная линия (линия наименьшего масштаба) проходила через конечные точки, а расстояние между этими точками равнялось ''L''.<br />
<br />
Для косой проекции Меркатора задаются следующие параметры:<br />
* широта и долгота центра проекции ''φ''₀, ''λ''₀<br />
* азимут начальной линии ''α''<br />
* масштаб на начальной линии ''k''₀<br />
* прямоугольные координаты в центре проекции ''x''₀, ''y''₀<br />
* разворот координатных осей ''γ''<br />
<br />
Азимут начальной линии должен находиться в диапазоне −90° < ''α'' < +90°. Таким образом, если разворот ''γ'' равен нулю, ось ''OY'' будет направлена вдоль начальной линии в северную полуплоскость, ''OX'' в восточную.<br />
<br />
Разворот ''γ'' обычно приравнивается значению ''α'', чтобы компенсировать начальный разворот осей и вернуть оси ''OY'' направление строго на север. Возможность его явного задания позволяет произвольно управлять ориентацией осей МСК. Если задать нулевой разворот ''γ'', ось ''OY'' будет направлена вдоль начальной линии в северную полуплоскость, ''OX'' перпендикулярно к начальной линии в восточную.<br />
<br />
== Определение параметров ==<br />
<br />
Приведём данные тестового примера. Осевая линия задана координатами конечных точек на эллипсоиде WGS 84:<br />
<br />
{| class="wikitable"<br />
|-<br />
! NN<br />
! ''φ''<br />
! ''λ''<br />
|-<br />
| 1<br />
| 52°00′03.358″N<br />
| 23°07′37.837″E<br />
|-<br />
| 2<br />
| 52°00′46.722″N<br />
| 23°10′15.918″E<br />
|}<br />
<br />
Расстояние вдоль оси задано значением ''L'' = 3300.000 м.<br />
<br />
Рассмотрим последовательность решения задачи с использованием '''PROJ'''. Вид строки параметров таков:<br />
<br />
<pre><br />
+proj=omerc +lat_0=φ₀ +lonc=λ₀ +alpha=α +k_0=k₀ +x_0=x₀ +y_0=y₀ +gamma=γ<br />
</pre><br />
<br />
Задачу помещения центра проекции в середину линии, соединяющей конечные точки, решим в два этапа. Сначала решим обратную геодезическую задачу, что даст азимут с первой точки на вторую ''α''₁₂, азимут со второй точки на первую ''α''₂₁ и длину отрезка геодезической линии между ними ''S''. Затем решим прямую геодезическую задачу (ПГЗ), чтобы получить координаты средней точки и азимуты направлений с неё на конечные точки.<br />
<br />
=== Решение обратной геодезической задачи ===<br />
<br />
Цель — вычисление азимутов прямого и обратного направлений, а также длины отрезка геодезической линии на поверхности эллипсоида.<br />
<br />
Решим ОГЗ с помощью утилиты '''geod''' из пакета '''PROJ.4''':<br />
<syntaxhighlight lang="bash"><br />
$ geod -I -f "%.17g" -F "%.17g" +ellps=WGS84 +units=m <<EOF<br />
> 52d00'03.358"N 023d07'37.837"E 52d00'46.722"N 023d10'15.918"E<br />
> EOF<br />
</syntaxhighlight><br />
Программа выдаёт решение на эллипсоиде в виде строки значений ''α''₁₂, ''α''₂₁, ''S''₁₂:<br />
<pre><br />
66.017759443956336 -113.94763462689073 3299.7360258541303<br />
</pre><br />
<br />
=== Решение прямой геодезической задачи ===<br />
<br />
Цель — получить координаты и азимут середины отрезка геодезической линии. Прежде всего вычислим половину длины отрезка:<br />
<pre><br />
3299.7360258541303 / 2 = 1649.86801292706515<br />
</pre><br />
Для контроля решим ПГЗ дважды, от обоих концов линии. Используем ту же утилиту '''geod''':<br />
<syntaxhighlight lang="bash"><br />
$ geod -f "%.17g" +ellps=WGS84 +units=m <<EOF<br />
> 52d00'03.358"N 023d07'37.837"E 66.017759443956336 1649.86801292706515<br />
> 52d00'46.722"N 023d10'15.918"E -113.94763462689073 1649.86801292706515<br />
> EOF<br />
</syntaxhighlight><br />
Результатом будут две строки значений: ''φ''₀, ''λ''₀, ''α'':<br />
<pre><br />
52.006957604612808 23.14912969166868 -113.96494062446807<br />
52.006957604612793 23.149129691668666 66.035059375531944<br />
</pre><br />
Координаты центра проекции практически совпадают, азимуты обратных направлений отличаются на 180°.<br />
<br />
=== Построение проекции ===<br />
<br />
По результатам решения ПГЗ построим проекцию в первом приближении. Параметры ''lat_0'' и ''lonc'' примем равными ''φ''₀ и ''λ''₀. Параметр ''alpha'' должен быть в диапазоне ±90°, примем для него значение ''α''₀₂ = ''α''₀₁ ± 180°. Чтобы направить ось ''OX'' вдоль направления 0–1, параметр разворота ''gamma'' примем равным 90°. Вот предварительный набор:<br />
<pre><br />
+lat_0=50.504316101 +lonc=20.989441172 +alpha=51.89831026 +k_0=1 +x_0=0 +y_0=0 +gamma=90<br />
</pre><br />
Вычислим координаты конечных точек в проекции:<br />
<syntaxhighlight lang="bash"><br />
$ proj -r -f "%.17g" +proj=omerc +lat_0=52.0069576046128 +lonc=23.1491296916687 +alpha=66.0350593755319 +k_0=1 +x_0=0 +y_0=0 +gamma=90 +ellps=WGS84 +units=m <<EOF<br />
> 52d00'03.358"N 023d07'37.837"E<br />
> 52d00'46.722"N 023d10'15.918"E<br />
> EOF<br />
</syntaxhighlight><br />
Программа выдаёт координаты первой и второй точек ''x''₁, ''y''₁ и ''x''₂, ''y''₂:<br />
<pre><br />
-1649.8680129311654 -1.0102527905258779e-13<br />
1649.8680129226682 1.0631327490867519e-09<br />
</pre><br />
Вычислим масштаб ''k_0'' как отношение заданной длины ''L'' к разности координат ''x''₂ − ''x''₁: ''k_0'' = 3300 / (1649.8680129226682 + 1649.8680129311654) = 1.0000799985647634. Подставим это значение вместо единицы:<br />
<syntaxhighlight lang="bash"><br />
$ proj -r -f "%.17g" +proj=omerc +lat_0=52.0069576046128 +lonc=23.1491296916687 +alpha=66.0350593755319 +k_0=1.00007999856476 +x_0=0 +y_0=0 +gamma=90 +ellps=WGS84 +units=m <<EOF<br />
> 52d00'03.358"N 023d07'37.837"E<br />
> 52d00'46.722"N 023d10'15.918"E<br />
> EOF<br />
</syntaxhighlight><br />
Вывод программы:<br />
<pre><br />
-1650.0000000040786 -1.0103336092990638e-13<br />
1649.9999999969975 1.0632177981808281e-09<br />
</pre><br />
Точки практически лежат на оси ''OX'', расстояние между ними 3300.000 м. Поставленная задача решена, проекция построена.<br />
<br />
== Пользовательская проекция в QGIS ==<br />
<br />
Создадим пользовательскую систему координат в формате WKT.<br />
<br />
=== Вариант B ===<br />
<br />
Косая проекция Меркатора может быть задана в вариантах A и B. Начнём со второго, поскольку в нём плоские координаты отсчитываются от центра проекции, и для него всё готово.<br />
<br />
В начале введём название системы координат латиницей "Biala Podlaska airdrome".<br />
<br />
При вводе параметров проекции поможет следующая таблица соответствия:<br />
<br />
{| class="wikitable"<br />
|-<br />
! WKT !! PROJ<br />
|-<br />
| Latitude of projection centre || lat_0<br />
|-<br />
| Longitude of projection centre || lonc<br />
|-<br />
| Azimuth of initial line || alpha<br />
|-<br />
| Angle from Rectified to Skew Grid || gamma<br />
|-<br />
| Scale factor on initial line || k, k_0<br />
|-<br />
| Easting at projection centre || x_0<br />
|-<br />
| Northing at projection centre || y_0<br />
|}<br />
<br />
В конце вставим название покрываемой территории "Europe - Poland - Biala Podlaska" и охват в формате ''φ''<sub>min</sub>, ''λ''<sub>min</sub>, ''φ''<sub>max</sub>, ''λ''<sub>max</sub>.<br />
<br />
Готовая система координат в формате WKT:<br />
<br />
<syntaxhighlight lang="xml"><br />
PROJCRS["Biala Podlaska airdrome",<br />
BASEGEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4326]],<br />
CONVERSION["Biala Podlaska airdrome",<br />
METHOD["Hotine Oblique Mercator (variant B)",<br />
ID["EPSG",9815]],<br />
PARAMETER["Latitude of projection centre",52.0069576046128,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8811]],<br />
PARAMETER["Longitude of projection centre",23.1491296916687,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8812]],<br />
PARAMETER["Azimuth of initial line",66.0350593755319,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8813]],<br />
PARAMETER["Angle from Rectified to Skew Grid",90,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8814]],<br />
PARAMETER["Scale factor on initial line",1.00007999856476,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8815]],<br />
PARAMETER["Easting at projection centre",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8816]],<br />
PARAMETER["Northing at projection centre",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8817]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Poland - Biala Podlaska"],<br />
BBOX[51.9,23.0,52.1,23.3]]]<br />
</syntaxhighlight><br />
<br />
=== Вариант A ===<br />
<br />
В варианте A прямоугольные координаты отсчитываются от точки пересечения начальной линии с экватором апосферы.<br />
Практически он отличается от B числовыми значениями параметров ''x_0'' и ''y_0''.<br />
<br />
Вычислим координаты центра проекции с параметром ''no_off'':<br />
<syntaxhighlight lang="bash"><br />
$ proj -r -f "%.17g" +proj=omerc +lat_0=52.0069576046128 +lonc=23.1491296916687 +alpha=66.0350593755319 +k_0=1.00007999856476 +x_0=0 +y_0=0 +gamma=90 +ellps=WGS84 +no_off +units=m <<EOF<br />
> 52.0069576046128 23.1491296916687<br />
> EOF<br />
</syntaxhighlight><br />
Вывод программы:<br />
<pre><br />
8064096.0024511777 -2.1496104200899204e-10<br />
</pre><br />
Поменяв знаки на противоположные, получим параметры ''x_0'' = -8064096.00245118, ''y_0'' = 0.<br />
<br />
Описание проекции в формате WKT по варианту A:<br />
<br />
<pre><br />
PROJCRS["Biala Podlaska airdrome",<br />
BASEGEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4326]],<br />
CONVERSION["Biala Podlaska airdrome",<br />
METHOD["Hotine Oblique Mercator (variant A)",<br />
ID["EPSG",9812]],<br />
PARAMETER["Latitude of projection centre",52.0069576046128,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8811]],<br />
PARAMETER["Longitude of projection centre",23.1491296916687,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8812]],<br />
PARAMETER["Azimuth of initial line",66.0350593755319,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8813]],<br />
PARAMETER["Angle from Rectified to Skew Grid",90,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8814]],<br />
PARAMETER["Scale factor on initial line",1.00007999856476,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8815]],<br />
PARAMETER["Easting at projection centre",-8064096.00245118,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8816]],<br />
PARAMETER["Northing at projection centre",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8817]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Poland - Biala Podlaska"],<br />
BBOX[51.9,23.0,52.1,23.3]]]<br />
</pre><br />
<br />
== Заключение ==<br />
<br />
Рассмотренный способ построения проекции прост, поскольку позволяет заменить знание математической картографии обращением к утилите '''geod''' из библиотеки '''PROJ''', которая используется как чёрный ящик. Этот подход не совсем корректен, поскольку геодезическая линия, соединяющая две точки на эллипсоиде, в косой проекции Меркатора отображается в кривую на апосфере, близкую к дуге большого круга, но не совпадающую с ней. К счастью, это несущественно даже для объектов длиной в сотни и тысячи километров.<br />
<br />
== Ссылки ==<br />
<br />
* [http://pubs.usgs.gov/pp/1395/report.pdf Map Projections — A Working Manual, Snyder J. P., USGS Professional Paper 1395, 1987]<br />
* [http://remotesensing.org/geotiff/proj_list/guid7.html Coordinate Conversions and Transformations including Formulas, EPSG Guidance Note 7, 2002]<br />
* [http://remotesensing.org/geotiff/proj_list/hotine_oblique_mercator.html Hotine Oblique Mercator]<br />
* [http://trac.osgeo.org/proj/wiki/man_proj man_proj – PROJ.4]<br />
* [http://trac.osgeo.org/proj/wiki/man_geod man_geod – PROJ.4]<br />
* [http://geographiclib.sourceforge.net/ GeographicLib]<br />
* [http://gis-lab.info/qa/local-cs.html Добавление местной координатной системы в GIS]</div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0&diff=26803Местная система координат линейного объекта2022-08-12T04:41:58Z<p>Игорь Белов: /* Решение обратной геодезической задачи */</p>
<hr />
<div>{{Статья|Опубликована|local-cs-linear-object}}<br />
<br />
{{Аннотация|Конструирование проекции для представления системы координат линейного объекта в ГИС}}<br />
<br />
== Введение ==<br />
<br />
Система координат линейного объекта строится для обеспечения строительства или эксплуатации протяжённого инженерного сооружения.<br />
Целью при этом является минимизация искажений, присущих проекции, в полосе объекта.<br />
<br />
== Постановка задачи ==<br />
<br />
Пусть ось сооружения задана положением двух крайних точек в глобальной системе координат (ГСК).<br />
<br />
В местной системе (МСК) совместим начало координат с точкой в середине отрезка геодезической линии, соединяющей крайние точки.<br />
Ось ''OX'' направим вдоль оси сооружения.<br />
Потребуем, чтобы расстояние между крайними точками равнялось априори заданной величине ''L''.<br />
<br />
Требуется подобрать проекцию, подходящую для представления такой МСК в ГИС и в программах, используемых геодезистами.<br />
<br />
== О проекции ==<br />
<br />
Выбор проекции однозначен. Это косая проекция Меркатора с такими значениями параметров, чтобы так называемая начальная линия (линия наименьшего масштаба) проходила через конечные точки, а расстояние между этими точками равнялось ''L''.<br />
<br />
Для косой проекции Меркатора задаются следующие параметры:<br />
* широта и долгота центра проекции ''φ''₀, ''λ''₀<br />
* азимут начальной линии ''α''<br />
* масштаб на начальной линии ''k''₀<br />
* прямоугольные координаты в центре проекции ''x''₀, ''y''₀<br />
* разворот координатных осей ''γ''<br />
<br />
Азимут начальной линии должен находиться в диапазоне −90° < ''α'' < +90°. Таким образом, если разворот ''γ'' равен нулю, ось ''OY'' будет направлена вдоль начальной линии в северную полуплоскость, ''OX'' в восточную.<br />
<br />
Разворот ''γ'' обычно приравнивается значению ''α'', чтобы компенсировать начальный разворот осей и вернуть оси ''OY'' направление строго на север. Возможность его явного задания позволяет произвольно управлять ориентацией осей МСК. Если задать нулевой разворот ''γ'', ось ''OY'' будет направлена вдоль начальной линии в северную полуплоскость, ''OX'' перпендикулярно к начальной линии в восточную.<br />
<br />
== Определение параметров ==<br />
<br />
Приведём данные тестового примера. Осевая линия задана координатами конечных точек на эллипсоиде WGS 84:<br />
<br />
{| class="wikitable"<br />
|-<br />
! NN<br />
! ''φ''<br />
! ''λ''<br />
|-<br />
| 1<br />
| 52°00′03.358″N<br />
| 23°07′37.837″E<br />
|-<br />
| 2<br />
| 52°00′46.722″N<br />
| 23°10′15.918″E<br />
|}<br />
<br />
Расстояние вдоль оси задано значением ''L'' = 3300.000 м.<br />
<br />
Рассмотрим последовательность решения задачи с использованием '''PROJ'''. Вид строки параметров таков:<br />
<br />
<pre><br />
+proj=omerc +lat_0=φ₀ +lonc=λ₀ +alpha=α +k_0=k₀ +x_0=x₀ +y_0=y₀ +gamma=γ<br />
</pre><br />
<br />
Задачу помещения центра проекции в середину линии, соединяющей конечные точки, решим в два этапа. Сначала решим обратную геодезическую задачу, что даст азимут с первой точки на вторую ''α''₁₂, азимут со второй точки на первую ''α''₂₁ и длину отрезка геодезической линии между ними ''S''. Затем решим прямую геодезическую задачу (ПГЗ), чтобы получить координаты средней точки и азимуты направлений с неё на конечные точки.<br />
<br />
=== Решение обратной геодезической задачи ===<br />
<br />
Цель — вычисление длины отрезка геодезической линии на поверхности эллипсоида.<br />
<br />
Решим ОГЗ с помощью утилиты '''geod''' из пакета '''PROJ.4''':<br />
<syntaxhighlight lang="bash"><br />
$ geod -I -f "%.17g" -F "%.17g" +ellps=WGS84 +units=m <<EOF<br />
> 52d00'03.358"N 023d07'37.837"E 52d00'46.722"N 023d10'15.918"E<br />
> EOF<br />
</syntaxhighlight><br />
Программа выдаёт решение на эллипсоиде в виде строки значений ''α''₁₂, ''α''₂₁, ''S''₁₂:<br />
<pre><br />
66.017759443956336 -113.94763462689073 3299.7360258541303<br />
</pre><br />
<br />
=== Решение прямой геодезической задачи ===<br />
<br />
Цель — получить координаты и азимут середины отрезка геодезической линии. Прежде всего вычислим половину длины отрезка:<br />
<pre><br />
3299.7360258541303 / 2 = 1649.86801292706515<br />
</pre><br />
Для контроля решим ПГЗ дважды, от обоих концов линии. Используем ту же утилиту '''geod''':<br />
<syntaxhighlight lang="bash"><br />
$ geod -f "%.17g" +ellps=WGS84 +units=m <<EOF<br />
> 52d00'03.358"N 023d07'37.837"E 66.017759443956336 1649.86801292706515<br />
> 52d00'46.722"N 023d10'15.918"E -113.94763462689073 1649.86801292706515<br />
> EOF<br />
</syntaxhighlight><br />
Результатом будут две строки значений: ''φ''₀, ''λ''₀, ''α'':<br />
<pre><br />
52.006957604612808 23.14912969166868 -113.96494062446807<br />
52.006957604612793 23.149129691668666 66.035059375531944<br />
</pre><br />
Координаты центра проекции практически совпадают, азимуты обратных направлений отличаются на 180°.<br />
<br />
=== Построение проекции ===<br />
<br />
По результатам решения ПГЗ построим проекцию в первом приближении. Параметры ''lat_0'' и ''lonc'' примем равными ''φ''₀ и ''λ''₀. Параметр ''alpha'' должен быть в диапазоне ±90°, примем для него значение ''α''₀₂ = ''α''₀₁ ± 180°. Чтобы направить ось ''OX'' вдоль направления 0–1, параметр разворота ''gamma'' примем равным 90°. Вот предварительный набор:<br />
<pre><br />
+lat_0=50.504316101 +lonc=20.989441172 +alpha=51.89831026 +k_0=1 +x_0=0 +y_0=0 +gamma=90<br />
</pre><br />
Вычислим координаты конечных точек в проекции:<br />
<syntaxhighlight lang="bash"><br />
$ proj -r -f "%.17g" +proj=omerc +lat_0=52.0069576046128 +lonc=23.1491296916687 +alpha=66.0350593755319 +k_0=1 +x_0=0 +y_0=0 +gamma=90 +ellps=WGS84 +units=m <<EOF<br />
> 52d00'03.358"N 023d07'37.837"E<br />
> 52d00'46.722"N 023d10'15.918"E<br />
> EOF<br />
</syntaxhighlight><br />
Программа выдаёт координаты первой и второй точек ''x''₁, ''y''₁ и ''x''₂, ''y''₂:<br />
<pre><br />
-1649.8680129311654 -1.0102527905258779e-13<br />
1649.8680129226682 1.0631327490867519e-09<br />
</pre><br />
Вычислим масштаб ''k_0'' как отношение заданной длины ''L'' к разности координат ''x''₂ − ''x''₁: ''k_0'' = 3300 / (1649.8680129226682 + 1649.8680129311654) = 1.0000799985647634. Подставим это значение вместо единицы:<br />
<syntaxhighlight lang="bash"><br />
$ proj -r -f "%.17g" +proj=omerc +lat_0=52.0069576046128 +lonc=23.1491296916687 +alpha=66.0350593755319 +k_0=1.00007999856476 +x_0=0 +y_0=0 +gamma=90 +ellps=WGS84 +units=m <<EOF<br />
> 52d00'03.358"N 023d07'37.837"E<br />
> 52d00'46.722"N 023d10'15.918"E<br />
> EOF<br />
</syntaxhighlight><br />
Вывод программы:<br />
<pre><br />
-1650.0000000040786 -1.0103336092990638e-13<br />
1649.9999999969975 1.0632177981808281e-09<br />
</pre><br />
Точки практически лежат на оси ''OX'', расстояние между ними 3300.000 м. Поставленная задача решена, проекция построена.<br />
<br />
== Пользовательская проекция в QGIS ==<br />
<br />
Создадим пользовательскую систему координат в формате WKT.<br />
<br />
=== Вариант B ===<br />
<br />
Косая проекция Меркатора может быть задана в вариантах A и B. Начнём со второго, поскольку в нём плоские координаты отсчитываются от центра проекции, и для него всё готово.<br />
<br />
В начале введём название системы координат латиницей "Biala Podlaska airdrome".<br />
<br />
При вводе параметров проекции поможет следующая таблица соответствия:<br />
<br />
{| class="wikitable"<br />
|-<br />
! WKT !! PROJ<br />
|-<br />
| Latitude of projection centre || lat_0<br />
|-<br />
| Longitude of projection centre || lonc<br />
|-<br />
| Azimuth of initial line || alpha<br />
|-<br />
| Angle from Rectified to Skew Grid || gamma<br />
|-<br />
| Scale factor on initial line || k, k_0<br />
|-<br />
| Easting at projection centre || x_0<br />
|-<br />
| Northing at projection centre || y_0<br />
|}<br />
<br />
В конце вставим название покрываемой территории "Europe - Poland - Biala Podlaska" и охват в формате ''φ''<sub>min</sub>, ''λ''<sub>min</sub>, ''φ''<sub>max</sub>, ''λ''<sub>max</sub>.<br />
<br />
Готовая система координат в формате WKT:<br />
<br />
<syntaxhighlight lang="xml"><br />
PROJCRS["Biala Podlaska airdrome",<br />
BASEGEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4326]],<br />
CONVERSION["Biala Podlaska airdrome",<br />
METHOD["Hotine Oblique Mercator (variant B)",<br />
ID["EPSG",9815]],<br />
PARAMETER["Latitude of projection centre",52.0069576046128,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8811]],<br />
PARAMETER["Longitude of projection centre",23.1491296916687,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8812]],<br />
PARAMETER["Azimuth of initial line",66.0350593755319,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8813]],<br />
PARAMETER["Angle from Rectified to Skew Grid",90,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8814]],<br />
PARAMETER["Scale factor on initial line",1.00007999856476,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8815]],<br />
PARAMETER["Easting at projection centre",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8816]],<br />
PARAMETER["Northing at projection centre",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8817]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Poland - Biala Podlaska"],<br />
BBOX[51.9,23.0,52.1,23.3]]]<br />
</syntaxhighlight><br />
<br />
=== Вариант A ===<br />
<br />
В варианте A прямоугольные координаты отсчитываются от точки пересечения начальной линии с экватором апосферы.<br />
Практически он отличается от B числовыми значениями параметров ''x_0'' и ''y_0''.<br />
<br />
Вычислим координаты центра проекции с параметром ''no_off'':<br />
<syntaxhighlight lang="bash"><br />
$ proj -r -f "%.17g" +proj=omerc +lat_0=52.0069576046128 +lonc=23.1491296916687 +alpha=66.0350593755319 +k_0=1.00007999856476 +x_0=0 +y_0=0 +gamma=90 +ellps=WGS84 +no_off +units=m <<EOF<br />
> 52.0069576046128 23.1491296916687<br />
> EOF<br />
</syntaxhighlight><br />
Вывод программы:<br />
<pre><br />
8064096.0024511777 -2.1496104200899204e-10<br />
</pre><br />
Поменяв знаки на противоположные, получим параметры ''x_0'' = -8064096.00245118, ''y_0'' = 0.<br />
<br />
Описание проекции в формате WKT по варианту A:<br />
<br />
<pre><br />
PROJCRS["Biala Podlaska airdrome",<br />
BASEGEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4326]],<br />
CONVERSION["Biala Podlaska airdrome",<br />
METHOD["Hotine Oblique Mercator (variant A)",<br />
ID["EPSG",9812]],<br />
PARAMETER["Latitude of projection centre",52.0069576046128,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8811]],<br />
PARAMETER["Longitude of projection centre",23.1491296916687,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8812]],<br />
PARAMETER["Azimuth of initial line",66.0350593755319,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8813]],<br />
PARAMETER["Angle from Rectified to Skew Grid",90,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8814]],<br />
PARAMETER["Scale factor on initial line",1.00007999856476,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8815]],<br />
PARAMETER["Easting at projection centre",-8064096.00245118,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8816]],<br />
PARAMETER["Northing at projection centre",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8817]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Poland - Biala Podlaska"],<br />
BBOX[51.9,23.0,52.1,23.3]]]<br />
</pre><br />
<br />
== Заключение ==<br />
<br />
Рассмотренный способ построения проекции прост, поскольку позволяет заменить знание математической картографии обращением к утилите '''geod''' из библиотеки '''PROJ''', которая используется как чёрный ящик. Этот подход не совсем корректен, поскольку геодезическая линия, соединяющая две точки на эллипсоиде, в косой проекции Меркатора отображается в кривую на апосфере, близкую к дуге большого круга, но не совпадающую с ней. К счастью, это несущественно даже для объектов длиной в сотни и тысячи километров.<br />
<br />
== Ссылки ==<br />
<br />
* [http://pubs.usgs.gov/pp/1395/report.pdf Map Projections — A Working Manual, Snyder J. P., USGS Professional Paper 1395, 1987]<br />
* [http://remotesensing.org/geotiff/proj_list/guid7.html Coordinate Conversions and Transformations including Formulas, EPSG Guidance Note 7, 2002]<br />
* [http://remotesensing.org/geotiff/proj_list/hotine_oblique_mercator.html Hotine Oblique Mercator]<br />
* [http://trac.osgeo.org/proj/wiki/man_proj man_proj – PROJ.4]<br />
* [http://trac.osgeo.org/proj/wiki/man_geod man_geod – PROJ.4]<br />
* [http://geographiclib.sourceforge.net/ GeographicLib]<br />
* [http://gis-lab.info/qa/local-cs.html Добавление местной координатной системы в GIS]</div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26802Местные системы координат в WKT 22022-06-03T08:16:47Z<p>Игорь Белов: /* Системы координат с дополнительным преобразованием */</p>
<hr />
<div>{{Статья|Опубликована|msk-wkt2}}<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важное его отличие от предшественника – использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docs.cntd.ru/document/965012231 Постановление Губернатора Владимирской обл. от 26.10.2009 N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["PMSK Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
USAGE[<br />
SCOPE["Engineering surveying and land cadastre."],<br />
AREA["Moscow and adjacent districts of the Moscow Region."],<br />
BBOX[55.13,36.78,56.23,38.49]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов, основанные на охватывающей зоне государственной системы координат с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (местной) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/#post-450897 г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Yekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]]],<br />
CONVERSION["CS63 zone W1",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["easting (X)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["northing (Y)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Asia - Russia - Yekaterinburg"],<br />
BBOX[56.6,60.3,57,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Как может выглядеть проекция на особом датуме с дополнительным преобразованием, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26801Местные системы координат в WKT 22022-06-03T08:00:32Z<p>Игорь Белов: /* Системы координат с дополнительным преобразованием */</p>
<hr />
<div>{{Статья|Опубликована|msk-wkt2}}<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важное его отличие от предшественника – использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docs.cntd.ru/document/965012231 Постановление Губернатора Владимирской обл. от 26.10.2009 N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["PMSK Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
USAGE[<br />
SCOPE["Engineering surveying and land cadastre."],<br />
AREA["Moscow and adjacent districts of the Moscow Region."],<br />
BBOX[55.13,36.78,56.23,38.49]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов, основанные на охватывающей зоне государственной системы координат с дополнительным преобразованием. В соответствии с пунктом 5 Порядка установления местных систем координат<ref>[https://minjust.consultant.ru/documents/24565 Приказ Росреестра от 20.10.2020 № П/0387 «Об утверждении порядка установления местных систем координат»]</ref> это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (местной) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/#post-450897 г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Yekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]]],<br />
CONVERSION["CS63 zone W1",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["easting (X)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["northing (Y)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Asia - Russia - Yekaterinburg"],<br />
BBOX[56.6,60.3,57,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Как может выглядеть проекция на особом датуме с дополнительным преобразованием, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26800Местные системы координат в WKT 22022-06-03T06:04:40Z<p>Игорь Белов: </p>
<hr />
<div>{{Статья|Опубликована|msk-wkt2}}<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важное его отличие от предшественника – использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docs.cntd.ru/document/965012231 Постановление Губернатора Владимирской обл. от 26.10.2009 N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["PMSK Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
USAGE[<br />
SCOPE["Engineering surveying and land cadastre."],<br />
AREA["Moscow and adjacent districts of the Moscow Region."],<br />
BBOX[55.13,36.78,56.23,38.49]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне государственной системы координат с дополнительным преобразованием. В соответствии с пунктом 5 Порядка установления местных систем координат<ref>[https://minjust.consultant.ru/documents/24565 Приказ Росреестра от 20.10.2020 № П/0387 «Об утверждении порядка установления местных систем координат»]</ref> это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (местной) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/#post-450897 г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Yekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]]],<br />
CONVERSION["CS63 zone W1",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["easting (X)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["northing (Y)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Asia - Russia - Yekaterinburg"],<br />
BBOX[56.6,60.3,57,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Как может выглядеть проекция на особом датуме с дополнительным преобразованием, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26799Местные системы координат в WKT 22022-06-03T05:41:00Z<p>Игорь Белов: </p>
<hr />
<div>{{Статья|Опубликована|msk-wkt2}}<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важное его отличие от предшественника – использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docs.cntd.ru/document/965012231 Постановление Губернатора Владимирской обл. от 26.10.2009 N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["PMSK Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
USAGE[<br />
SCOPE["Engineering surveying and land cadastre."],<br />
AREA["Moscow and adjacent districts of the Moscow Region."],<br />
BBOX[55.13,36.78,56.23,38.49]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне государственной системы координат с дополнительным преобразованием. В соответствии с пунктом 5 приказа Росреестра<ref>[https://minjust.consultant.ru/documents/24565 Приказ Росреестра от 20.10.2020 № П/0387 «Об утверждении порядка установления местных систем координат»]</ref> это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (местной) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/#post-450897 г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Yekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]]],<br />
CONVERSION["CS63 zone W1",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["easting (X)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["northing (Y)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Asia - Russia - Yekaterinburg"],<br />
BBOX[56.6,60.3,57,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Как может выглядеть проекция на особом датуме с дополнительным преобразованием, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26798Местные системы координат в WKT 22022-06-03T05:34:54Z<p>Игорь Белов: /* Системы координат с дополнительным преобразованием */</p>
<hr />
<div>{{Статья|Опубликована|msk-wkt2}}<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docs.cntd.ru/document/965012231 Постановление Губернатора Владимирской обл. от 26.10.2009 N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["PMSK Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
USAGE[<br />
SCOPE["Engineering surveying and land cadastre."],<br />
AREA["Moscow and adjacent districts of the Moscow Region."],<br />
BBOX[55.13,36.78,56.23,38.49]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне государственной системы координат с дополнительным преобразованием. В соответствии с пунктом 5 приказа Росреестра<ref>[https://minjust.consultant.ru/documents/24565 Приказ Росреестра от 20.10.2020 № П/0387 «Об утверждении порядка установления местных систем координат»]</ref> это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (местной) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/#post-450897 г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Yekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]]],<br />
CONVERSION["CS63 zone W1",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["easting (X)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["northing (Y)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Asia - Russia - Yekaterinburg"],<br />
BBOX[56.6,60.3,57,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Как может выглядеть проекция на особом датуме с дополнительным преобразованием, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26735Местные системы координат в WKT 22021-08-31T04:57:20Z<p>Игорь Белов: </p>
<hr />
<div>{{Статья|Опубликована|msk-wkt2}}<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docs.cntd.ru/document/965012231 Постановление Губернатора Владимирской обл. от 26.10.2009 N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["PMSK Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
USAGE[<br />
SCOPE["Engineering surveying and land cadastre."],<br />
AREA["Moscow and adjacent districts of the Moscow Region."],<br />
BBOX[55.13,36.78,56.23,38.49]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (местной) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/#post-450897 г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Yekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]]],<br />
CONVERSION["CS63 zone W1",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["easting (X)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["northing (Y)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Asia - Russia - Yekaterinburg"],<br />
BBOX[56.6,60.3,57,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Как может выглядеть проекция на особом датуме с дополнительным преобразованием, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26713Местные системы координат в WKT 22021-05-01T06:54:57Z<p>Игорь Белов: /* Системы координат с дополнительным преобразованием */</p>
<hr />
<div>{{Статья|Опубликована|msk-wkt2}}<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["PMSK Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
USAGE[<br />
SCOPE["Engineering surveying and land cadastre."],<br />
AREA["Moscow and adjacent districts of the Moscow Region."],<br />
BBOX[55.13,36.78,56.23,38.49]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (местной) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/#post-450897 г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Yekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]]],<br />
CONVERSION["CS63 zone W1",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["easting (X)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["northing (Y)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Asia - Russia - Yekaterinburg"],<br />
BBOX[56.6,60.3,57,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Как может выглядеть проекция на особом датуме с дополнительным преобразованием, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26678Местные системы координат в WKT 22021-04-07T19:03:39Z<p>Игорь Белов: В пример системы координат с особым датумом добавлен блок USAGE.</p>
<hr />
<div>{{Статья|Опубликована|msk-wkt2}}<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["PMSK Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
USAGE[<br />
SCOPE["Engineering surveying and land cadastre."],<br />
AREA["Moscow and adjacent districts of the Moscow Region."],<br />
BBOX[55.13,36.78,56.23,38.49]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (местной) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Yekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]]],<br />
CONVERSION["CS63 zone W1",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["easting (X)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["northing (Y)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Asia - Russia - Yekaterinburg"],<br />
BBOX[56.6,60.3,57,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Как может выглядеть проекция на особом датуме с дополнительным преобразованием, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%A2%D0%B5%D1%85%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D0%B0%D1%86%D0%B8%D0%B8_%D0%BA_%D1%81%D1%82%D0%B0%D1%82%D1%8C%D1%8F%D0%BC,_%D0%BF%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D1%83%D0%B5%D0%BC%D1%8B%D0%BC_%D0%BD%D0%B0_GIS-Lab&diff=26658Технические рекомендации к статьям, публикуемым на GIS-Lab2020-10-15T12:51:54Z<p>Игорь Белов: /* Публикация в основном списке */</p>
<hr />
<div>{{Организационное|authors}}<br />
Если вы решили написать и/или опубликовать свою статью, заметку, описание и разместить ее на GIS-Lab, рекомендуем предварительно ознакомиться с этими рекомендациями. Цель этих рекомендаций сделать материалы более качественными, а их появление на GIS-Lab более оперативным. <br />
<br />
Насколько это возможно, мы пытаемся уйти от формализации, но область наших интересов требует некоего общего языка для лучшего взаимопонимания между авторами и читателями. Также, мы считаем нужным, чтобы все материалы на сайте соответствовали некому набору параметров. Эти параметры изложены ниже, надеюсь они сделают наш ресурс более интерактивным и удобным для восприятия информации.<br />
<br />
Если вы по какой-то причине не можете или не хотите создавать страницы в вики, вы можете прислать статью и дополнительный файлы в удобном для вас формате на наш адрес и мы разместим их в нужном порядке. <br />
<br />
Если вы не согласны с какими-либо из перечисленных критериев или имеете что добавить, пожалуйста, пишите на электронную почту, а также [http://gis-lab.info/forum/viewtopic.php?t=937 в обсуждение этих рекомендаций на форуме].<br />
<br />
==Тема статьи==<br />
<br />
Тема статьи должна соответствовать тематике сайта, то есть так или иначе касаться пространственных технологий. Используемое программное обеспечение значения не имеет. Результаты полученные в статье должны быть как можно более четкими и воспроизводимыми. Возможны следующие типы статей:<br />
<br />
* '''Инструкция''' - как решить ту или иную задачу в том или ином программном обеспечении ГИС (например: [http://gis-lab.info/qa/hdfimport.html Импорт данных в формате HDF])<br />
* '''Идея''', четко изложенное описание идеи, возможно без технической реализации<br />
* '''Описание проекта''' - описание проекта с техническими подробностями, которые могут помочь сэкономить время специалистам сталкивающимся с подобными задачами (например: [http://gis-lab.info/projects/garshnep.html Выделение местообитаний гаршнепа с помощью ДЗЗ])<br />
* '''FAQ''' - набор вопросов и ответов по определенной теме (например: [http://gis-lab.info/qa/proj-sk-faq.html FAQ по проекциям])<br />
* '''Описание программы''' - описание программного продукта краткое и более полное. Продукт может быть как свободный, так и коммерческий. Статья не должна носить явный рекламный характер, но давать четкую информацию о программном продукте без необоснованных эмоциональных комментариев (например: [http://gis-lab.info/qa/google-earth.html Описание программного продукта Google-Earth]).<br />
* '''Данные''' - описание набора данных: бумажной карты, электронной карты, набора слоев, геобазыданных и т.д. (например: [http://gis-lab.info/qa/vmap0.html Описание данных VMap0])<br />
* '''Перевод''' - перевод другой статьи, при наличие соответствующего разрешения авторов изначального материала (например: [http://gis-lab.info/qa/landsat-bandcomb.html Интерпретация данных Landsat TM / ETM+])<br />
<br />
Также возможны комбинации любых вышеперечисленных типов статей.<br />
<br />
==Создание и редактирование статьи==<br />
Статьи на GIS-Lab создаются и редактируются в специальном инструменте - [http://wiki.gis-lab.info вики]. Цель этого инструмента - обеспечить возможность совместной работы.<br />
<br />
Перед созданием документа, необходимо зайти в вики под своей учетной записью, используя имя пользователя и пароль с форума. Если у вас их еще нет - сначала [http://gis-lab.info/forum/ucp.php?mode=register зарегистрируйтесь]. Иначе, при попытке редактирования или создания страницы будет выдаваться сообщение что редактировать/создавать страницы могут только участники из группы «Участники».<br />
<br />
После входа в вики, для создания новой страницы наберите ее название в строке поиска в правом верхнем углу и нажмите кнопку "Перейти". На странице результатов поиска первой будет ссылка, нажатие которой приведет к созданию новой страницы. <br />
<br />
Найти созданную страницу в дальнейшем можно например через [[Служебная:AllPages|список всех страниц]] или группу Черновики, если вы задали при создании соответствующую категорию.<br />
<br />
Заголовок статьи должен быть на русском и отражать содержание статьи.<br />
<br />
===Черновик===<br />
По правилам сайта созданная статья должна некоторое время оставаться черновиком. Чтобы она попала в нужный список, сразу после создания добавьте: <code><nowiki>{{Статья|Черновик}}</nowiki></code> в первой строке.<br />
<br />
==Шаблон==<br />
Специального шаблона для создания статьи пока нет.<br />
<br />
В качестве примеров рекомендуем использовать другие статьи из списка [[Категория:Опубликованные статьи|опубликованных]].<br />
<br />
==Название==<br />
Название статьи должно быть на языке, на котором она написана, т.е. русским или английским.<br />
<br />
Если необходимо использовать кавычки, то должны быть использованы т.н. «ёлочки» (Alt+0171 и Alt+0187), другие кавычки использоваться не должны.<br />
<br />
==Текст==<br />
<br />
Основные используемые стили:<br />
<br />
<code><nowiki>==Название главы==</nowiki></code><br />
<br />
<code><nowiki>===Название подглавы===</nowiki></code><br />
<br />
Не используйте заголовки других уровней.<br />
<br />
Для списков:<br />
<br />
<code><nowiki>*</nowiki></code> - первый уровень элемента ненумерованного списка<br/><br />
<code><nowiki>**</nowiki></code> - второй уровень элемента ненумерованного списка<br />
<br />
==Код==<br />
<br />
Если в статье приводится программный код, то его можно добавлять двумя способами. Если кода мало (1-2) строки, то можно использовать теги <code><nowiki><pre></pre></nowiki></code><br />
, например:<br />
<br />
<code><nowiki><pre>http://wfsserver?key1=value1&ke2=value2</pre></nowiki></code><br />
<br />
Что будет выглядеть так: <br />
<br />
<pre>http://wfsserver?key1=value1&ke2=value2</pre><br />
<br />
Если кода значительное количество, то можно использовать специальные теги, которые позволяют внести цветовую разметку. Например:<br />
<br />
<pre><syntaxhighlight lang="python"><br />
table = { <br />
'library' : 1000,<br />
'other' : 2000,<br />
'school' : 3000<br />
}</syntaxhighlight></pre><br />
<br />
Что будет выглядеть так: <br />
<br />
<syntaxhighlight lang="python"><br />
table = { <br />
'library' : 1000,<br />
'other' : 2000,<br />
'school' : 3000<br />
}</syntaxhighlight><br />
<br />
==Аннотации==<br />
Каждая статья должна иметь аннотацию, она идет сразу после служебной категории (черновик или опубликована) и отражает краткое содержание статьи, но не дублирует ее название.<br />
<br />
Пример кода:<br />
<code><nowiki>{{Аннотация|Использование выражений на языке Python для операций с полями в QGIS}}</nowiki></code><br />
<br />
==Иллюстрации==<br />
Статьи должны иллюстрироваться. Для загрузки изображений служит [http://wiki.gis-lab.info/w/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:Upload специальная страница].<br />
<br />
Имя файла иллюстрации не должно быть слишком общим, <code>about</code>, <code>settings</code> и т.д. Иначе существует риск, что следующий загруженный файл с таким названием перепишет ваш. Задавайте более уникальные имена, включающие название статьи, например: <code>map-classification-grass-01.jpg</code>.<br />
<br />
Для полноцветных изображений рекомендуется использовать формат PNG или JPEG, со степенью сжатия не менее 50, для индексированных изображений - GIF.<br />
<br />
Размер загружаемых иллюстраций не ограничен. Иллюстрации в статье должны быть ограничены 750 пикселями по ширине. Если ваша иллюстрация меньше чем 750 пикселей по ширине - не уменьшайте ее для вставки в статью, это позволит сэкономить на лишнем щелчке и открытии иллюстрации отдельно. Если ваша иллюстрация больше чем 750 пикселей по ширине, можно уменьшить ее, указав меньшую размерность, например так: <code><nowiki>[[Файл:Рис.JPG|мини|центр|300|Рис. 1. Структура папки]]</nowiki></code><br />
<br />
Если вы делаете снимок экрана (скриншот), старайтесь не уменьшать его в графическом редакторе, если это все-таки необходимо, не уменьшайте ее более чем на 25% (т.е. уменьшенный результат не должен быть меньше 75% оригинала).<br />
<br />
Для того, чтобы подчеркнуть некоторую область на изображений можно выделить ее тонкой красной линией или стрелкой.<br />
<br />
Чтобы сделать иллюстрацию со ссылкой, сделайте так (пример):<br />
<br />
<code><nowiki>[[Файл:Nextgis.png|link=http://nextgis.ru]]</nowiki></code><br />
<br />
==Ссылки на дополнительные материалы и прилагаемые файлы==<br />
<br />
Ссылки на дополнительные материалы, в том числе другие разделы GIS-Lab, могут даваться как в тексте статьи, так и в блоке "См. также", располагающегося внизу страницы. Блок "См. также" должен содержать только основные ссылки.<br />
<br />
Дополнительные файлы, ссылки на которые вы хотите дать в статье, необходимо загрузить отдельно и дать на них соответствующую ссылку. Если файлы небольшие, их можно загружать в вики в виде архивов также, как и изображения. Если файлы значительного размера, свяжитесь с [http://wiki.gis-lab.info/w/%D0%9E%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B4%D0%BB%D1%8F_%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BD%D0%B0_GIS-Lab координаторами GIS-Lab], чтобы вам было выделено место на сервере.<br />
<br />
==Обсуждение в форуме==<br />
<br />
Каждой статье, описанию проекта и другим материалам, имеющим свою страницу на сайте должно соответствовать обсуждение на форуме GIS-Lab в разделе "Материалы сайта". <br />
<br />
'''Публикация, шаг 1:''' После того, как вы сочли, что статья завершена, нужно создать тему на форуме, где дать ссылку на статью в вики и пригласить участников к её обсуждению. Следует быть готовым к критике и редактированию статьи в соответствие с замечаниями.<br />
<br />
==Публикация в основном списке==<br />
'''Публикация, шаг 2:''' После первичного обсуждения на форуме, после учета критики, нужно известить редакторов сайта. Они примут решение о публикации статьи, дадут вам окончательную ссылку на нее и сделают учетную запись автора в блоге GIS-Lab. <br />
<br />
Ваша статья попадет в основной список статей после того, как она будет ими утверждена. Посмотреть, кто принимает решение публиковать или нет статью, обратиться и задать связанные с этим вопросы можно [[Организационные задачи для реализации на GIS-Lab|здесь]].<br />
<br />
'''Публикация, шаг 3:''' Зайдите в блог GIS-Lab по адресу: https://gis-lab.info/blog/wp-admin/ с созданной для вас учетной записью и создайте тему объявление о том, что появилась новая статья. Дайте ссылку на статью (не на вики!) и обсуждение ее в форуме.<br />
<br />
'''Публикация, шаг 4:''' Зайдите в вики-страницу статьи и измените в начале статьи текст <nowiki>{{Статья|Черновик}}</nowiki> на <nowiki>{{Статья|Опубликована|article}}</nowiki>, где article - название файла статьи на сайте (не вики), без ".html"<br />
<br />
[[Категория:Служебные]]</div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26654Местные системы координат в WKT 22020-09-03T15:59:22Z<p>Игорь Белов: /* Системы координат с дополнительным преобразованием */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 его воспринял.<br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (местной) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Yekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]]],<br />
CONVERSION["CS63 zone W1",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["easting (X)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["northing (Y)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Asia - Russia - Yekaterinburg"],<br />
BBOX[56.6,60.3,57,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Как может выглядеть проекция на особом датуме с дополнительным преобразованием, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B5%D1%81%D1%82%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82%D0%BD%D0%BE%D0%B9_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%B2_GIS&diff=26653Добавление местной координатной системы в GIS2020-09-03T15:56:37Z<p>Игорь Белов: /* Создание МСК в QGIS */</p>
<hr />
<div>{{Статья|Опубликована|local-cs}}<br />
<br />
{{Аннотация|Конструирование проекций, имитирующих местные координатные системы, в QGIS}}<br />
<br />
== Введение ==<br />
<br />
Под местной системой координат (МСК) будет подразумеваться так называемая «городская» система, построенная независимо от государственной системы (ГСК) и включенная в неё [http://gis-lab.info/qa/helmert2d.html#.D0.92.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5 заданием ключей перехода к СК-42 или СК-63]. МСК крупных территорий, сравнимых с размерами субъектов Федерации, не являются предметом данной статьи, поскольку относятся к классическим картографическим проекциям.<br />
<br />
Многие программы ГИС по примеру геодезических программ позволяют реализовать работу в МСК непосредственно. Так, в QGIS и в MapInfo Pro любая проекция может быть дополнена аффинным преобразованием, а в Global Mapper конформные проекции дополняются разворотом. В данной статье рассматривается создание МСК в программах QGIS и MapInfo.<br />
<br />
== Постановка задачи ==<br />
<br />
Имеется множество пунктов, для которых известны координаты ''X'', ''Y'' в ГСК и ''x'', ''y'' в МСК. Требуется подобрать проекцию, удовлетворительно представляющую МСК в ГИС. При подборе параметров предполагается использовать один из пунктов в качестве центральной точки преобразования.<br />
<br />
== Подготовка данных ==<br />
<br />
=== Исходные данные ===<br />
<br />
Имеются два каталога. Текстовый файл '''cat_s42z4.tsv''' содержит координаты пунктов в государственной системе (ГСК), а именно в четвёртой зоне СК-42:<br />
<br />
<pre><br />
4645997.49 5768521.60<br />
4661392.15 5770068.91<br />
4650059.09 5783332.41<br />
4634241.37 5778952.22<br />
4631481.69 5764570.61<br />
4642125.18 5754643.12<br />
4655952.19 5757337.28<br />
</pre><br />
<br />
В файле '''cat_local.tsv''' — координаты в местной системе (МСК):<br />
<br />
<pre><br />
67266.64 30088.40<br />
82697.29 31184.27<br />
71759.40 44771.50<br />
55822.67 40857.06<br />
52643.65 26564.42<br />
62990.64 16331.35<br />
76888.20 18619.57<br />
</pre><br />
<br />
Каждая строка в обоих файлах соответствует одному и тому же пункту. В первой строке центральный пункт системы.<br />
<br />
=== Дополнительные данные ===<br />
<br />
Очень важно помнить, что с точки зрения математической картографии МСК остаётся проекцией Гаусса-Крюгера и наследует её искажения. Поэтому важно знать, на какой именно ГСК основана МСК. Зачастую это заранее неизвестно, и приходится проводить предварительное исследование для выяснения этого вопроса.<br />
<br />
В нашем примере мы предполагаем, что базовая ГСК либо СК-42 зона 4, либо СК-63 зона C0.<br />
Каталог в первой системе имеется, нужно подготовить каталог в альтернативной системе.<br />
<br />
Параметры СК-63 зона C0 известны, это EPSG:3350 "Pulkovo 1942 / CS63 zone C0". <br />
Создадим каталог в СК-63 с помощью утилиты '''proj''':<br />
<br />
<syntaxhighlight lang="bash"><br />
$ proj -I -f "%.17g" +init=epsg:28404 cat_s42z4.tsv > lonlat.tsv<br />
$ proj -f "%.17g" +proj=tmerc +lat_0=0.1 +lon_0=21.95 +k=1 +x_0=250000 +y_0=0 +ellps=krass lonlat.tsv > cat_s63c0.tsv<br />
</syntaxhighlight><br />
<br />
В файл '''lonlat.tsv''' запишутся географические координаты (долготы и широты) в СК-42, а в '''cat_s63c0.tsv''' координаты в СК-63 зона C0:<br />
<br />
<pre><br />
330797.45370592922 5755981.4751984337<br />
346208.04426388565 5757327.0953416284<br />
335051.73824425979 5770735.1441946141<br />
319180.795365442 5766563.182877643<br />
316233.72446517192 5752221.1970210578<br />
326744.90098082455 5742157.2318198672<br />
340603.31654394628 5744670.1910534762<br />
</pre><br />
<br />
== Создание МСК ==<br />
<br />
Для вычислений используем консольную утилиту '''findkey''', о которой сказано ниже в приложении.<br />
<br />
=== Определение базовой ГСК ===<br />
<br />
Вычислим параметры конформного преобразования координат из СК-42 в МСК. Для этого в командной строке запустим программу '''findkey''' с аргументами '''cat_s42z4.tsv''' и '''cat_local.tsv''':<br />
<br />
<syntaxhighlight lang="bash"><br />
$ findkey cat_s42z4.tsv cat_local.tsv<br />
</syntaxhighlight><br />
<br />
Программа создаст два файла: '''key.txt''' с параметрами конформного преобразования и '''var.csv''' с координатными невязками.<br />
Посмотрим на содержимое '''var.csv''':<br />
<br />
{| class="wikitable"<br />
|-<br />
|- align="right"<br />
| -0.006 || 0.007<br />
|- align="right"<br />
| 0.182 || 0.046<br />
|- align="right"<br />
| -0.166 || 0.110<br />
|- align="right"<br />
| 0.019 || -0.185<br />
|- align="right"<br />
| 0.148 || 0.100<br />
|- align="right"<br />
| -0.146 || 0.094<br />
|- align="right"<br />
| -0.031 || -0.171<br />
|}<br />
<br />
Вычислим параметры конформного преобразования координат из СК-63 в МСК:<br />
<br />
<syntaxhighlight lang="bash"><br />
$ findkey cat_s63c0.tsv cat_local.tsv<br />
</syntaxhighlight><br />
<br />
Теперь содержимое '''var.csv''' будет таким:<br />
<br />
{| class="wikitable"<br />
|-<br />
|- align="right"<br />
| 0.000 || -0.002<br />
|- align="right"<br />
| -0.001 || 0.002<br />
|- align="right"<br />
| -0.001 || 0.002<br />
|- align="right"<br />
| 0.004 || 0.000<br />
|- align="right"<br />
| -0.002 || 0.001<br />
|- align="right"<br />
| 0.002 || -0.002<br />
|- align="right"<br />
| -0.002 || -0.001<br />
|}<br />
<br />
Сравнение невязок позволяет сделать вывод, что базовая ГСК — СК-63 зона C0.<br />
<br />
=== Полученные параметры ===<br />
<br />
Изучим содержимое файла '''key.txt''', соответствующего СК-63:<br />
<br />
<pre><br />
WKT:<br />
A0 = -356718.938772419<br />
A1 = 0.999887380509183<br />
A2 = 0.0161962611321084<br />
B0 = -5719887.1597502<br />
B1 = -0.0161962611321084<br />
B2 = 0.999887380509183<br />
<br />
MapInfo:<br />
0.999887380509, 0.016196261132, -356718.93877241889, -0.016196261132, 0.999887380509, -5719887.159750198<br />
<br />
Alternate set:<br />
scale = 1.000018546116108<br />
angle = 0.92800077023443683<br />
</pre><br />
<br />
Мы видим три группы чисел: WKT, MapInfo и Alternate set.<br />
<br />
Обратим внимание на параметр разворота angle из третьей группы. Если он мал, в пределах первых десятых долей градуса, имеет смысл отказаться от использования конформного преобразования и вместо этого смещать осевой меридиан для устранения угла разворота.<br />
<br />
=== Создание МСК в MapInfo ===<br />
<br />
Запись базовой СК-63 зона C0 в файле '''MAPINFOW.PRJ''' должна выглядеть так:<br />
<br />
<pre><br />
"CS63 zone C0", 8, 1001, 7, 21.95, 0.1, 1, 250000, 0<br />
</pre><br />
<br />
Используем вторую группу из файла '''key.txt'''. Впишем МСК в '''MAPINFOW.PRJ''' как базовую, дополненную аффинным преобразованием:<br />
<br />
<pre><br />
"Biala Podlaska", 1008, 1001, 7, 21.95, 0.1, 1, 250000, 0, 7, 0.999887380509, 0.016196261132, -356718.93877241889, -0.016196261132, 0.999887380509, -5719887.159750198<br />
</pre><br />
<br />
Полноценное определение нуждается в параметрах Bounds:<br />
<br />
<pre><br />
"Biala Podlaska", 3008, 1001, 7, 21.95, 0.1, 1, 250000, 0, 7, 0.999887380509, 0.016196261132, -356718.93877241889, -0.016196261132, 0.999887380509, -5719887.159750198, 52000, 15000, 82000, 45000<br />
</pre><br />
<br />
=== Создание МСК в QGIS ===<br />
<br />
Возьмём коэффициенты из первой группы в файле '''key.txt''' и создадим МСК в формате WKT как аффинное преобразование на основе проекции "Pulkovo 1942 / CS63 zone C0":<br />
<br />
<pre><br />
DERIVEDPROJCRS["Biala Podlaska",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone C0",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",21.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-356718.938772649,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.999887380509304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0161962611321413,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-5719887.15975089,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0161962611321413,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.999887380509304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["easting (X)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["northing (Y)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Poland - Biala Podlaska"],<br />
BBOX[51.9,22.9,52.1,23.3]]]<br />
</pre><br />
<br />
В первой строке записали название системы координат латиницей "Biala Podlaska".<br />
В конце вставили название покрываемой территории "Europe - Poland - Biala Podlaska" и охват в формате ''φ''<sub>min</sub>, ''λ''<sub>min</sub>, ''φ''<sub>max</sub>, ''λ''<sub>max</sub>.<br />
<br />
=== Создание МСК в Global Mapper ===<br />
<br />
Третья группа параметров в файле '''key.txt''' содержит масштабный коэффициент scale и угол поворота angle. Угол вставляем как есть, а масштабный коэффициент умножим на соответствующий параметр базовой СК.<br />
<br />
== Заключение ==<br />
<br />
Задачи построения МСК для QGIS и MapInfo выполнены, цель достигнута.<br />
<br />
== Приложение. Утилита findkey ==<br />
<br />
Программа '''findkey''' вычисляет параметры конформного преобразования. Написана на языке C. Вот листинг:<br />
<br />
<syntaxhighlight lang="c"><br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <math.h><br />
<br />
#define SEP ';' /* var-file column separator */<br />
<br />
/* --------------------------------------------------------------------------<br />
* findkey<br />
*<br />
* Program to compute Helmert 2D transformation parameters<br />
*<br />
* Usage: findkey <coord1> <coord2><br />
*<br />
* Input files: coord1 coord2<br />
* coord1 - source coordinate 'x1 y1'<br />
* coord2 - destination coordinate 'x2 y2'<br />
* a row per a point; 3+ points<br />
*<br />
* Output files:<br />
* key.txt - transformation parameters<br />
* var.csv - SEP separated residuals 'dx dy'<br />
* -------------------------------------------------------------------------- */<br />
int main(int argc, char *argv[])<br />
{<br />
char buf0[1024], buf1[1024];<br />
double x[2], y[2];<br />
double xc[2], yc[2];<br />
double dx[2], dy[2];<br />
double s[7] = {0., 0., 0., 0., 0.};<br />
double det, h[6];<br />
double mu, theta;<br />
double yh[2];<br />
int i;<br />
FILE *fp0, *fp1, *fp2;<br />
<br />
if (argc < 3) {<br />
printf("Usage: findkey <coord1> <coord2>\n");<br />
exit(EXIT_FAILURE);<br />
}<br />
<br />
if ((fp0 = fopen(argv[1], "r")) == NULL) {<br />
printf("can't open %s\n", argv[1]);<br />
exit(EXIT_FAILURE);<br />
}<br />
<br />
if ((fp1 = fopen(argv[2], "r")) == NULL) {<br />
printf("can't open %s\n", argv[2]);<br />
exit(EXIT_FAILURE);<br />
}<br />
<br />
/* coordinate sums */<br />
while (fgets(buf0, 1024, fp0) != NULL && fgets(buf1, 1024, fp1) != NULL) {<br />
sscanf(buf0, "%lf %lf", &x[0], &x[1]);<br />
sscanf(buf1, "%lf %lf", &y[0], &y[1]);<br />
s[0] += x[0];<br />
s[1] += x[1];<br />
s[2] += y[0];<br />
s[3] += y[1];<br />
s[4] += 1.;<br />
}<br />
rewind(fp0);<br />
rewind(fp1);<br />
<br />
/* centrum gravitatis */<br />
for (i = 0; i < 2; i++) {<br />
xc[i] = s[i] / s[4];<br />
yc[i] = s[2 + i] / s[4];<br />
}<br />
<br />
/* sums of products */<br />
for (i = 0; i < 7; i++)<br />
s[i] = 0.;<br />
while (fgets(buf0, 1024, fp0) != NULL && fgets(buf1, 1024, fp1) != NULL) {<br />
sscanf(buf0, "%lf %lf", &x[0], &x[1]);<br />
sscanf(buf1, "%lf %lf", &y[0], &y[1]);<br />
/* coordinate differences */<br />
dx[0] = x[0] - xc[0];<br />
dx[1] = x[1] - xc[1];<br />
dy[0] = y[0] - yc[0];<br />
dy[1] = y[1] - yc[1];<br />
/* summation */<br />
s[0] += dx[0] * dx[0];<br />
/*s[1] += dx[0] * dx[1];*/<br />
s[2] += dx[1] * dx[1];<br />
s[3] += dx[0] * dy[0];<br />
s[4] += dx[1] * dy[0];<br />
s[5] += dx[0] * dy[1];<br />
s[6] += dx[1] * dy[1];<br />
}<br />
rewind(fp0);<br />
rewind(fp1);<br />
<br />
/* Helmert parameters */<br />
det = s[0] + s[2];<br />
h[0] = (s[3] + s[6]) / det;<br />
h[1] = (s[4] - s[5]) / det;<br />
h[2] = yc[0] - h[0] * xc[0] - h[1] * xc[1];<br />
h[3] = -h[1];<br />
h[4] = h[0];<br />
h[5] = yc[1] - h[3] * xc[0] - h[4] * xc[1];<br />
<br />
/* alternative Helmert parameter set */<br />
mu = hypot(h[0], h[1]);<br />
theta = atan2(h[1], h[0]) / M_PI * 180.;<br />
<br />
/* output parameters */<br />
if ((fp2 = fopen("key.txt", "w")) == NULL) {<br />
printf("can't create %s\n", "key.txt");<br />
exit(EXIT_FAILURE);<br />
}<br />
fprintf(fp2, "WKT:\nA0 = %.15g\nA1 = %.15g\nA2 = %.15g\nB0 = %.15g\nB1 = %.15g\nB2 = %.15g\n",<br />
h[2], h[0], h[1], h[5], h[3], h[4]);<br />
fprintf(fp2, "\nMapInfo:\n%.12f, %.12f, %.17g, %.12f, %.12f, %.17g\n",<br />
h[0], h[1], h[2], h[3], h[4], h[5]);<br />
fprintf(fp2, "\nAlternate set:\nscale = %.17g\nangle = %.17g\n", mu, theta);<br />
fclose(fp2);<br />
<br />
/* output residuals */<br />
if ((fp2 = fopen("var.csv", "w")) == NULL) {<br />
printf("can't create %s\n", "var.csv");<br />
exit(EXIT_FAILURE);<br />
}<br />
while (fgets(buf0, 1024, fp0) != NULL && fgets(buf1, 1024, fp1) != NULL) {<br />
sscanf(buf0, "%lf %lf", &x[0], &x[1]);<br />
sscanf(buf1, "%lf %lf", &y[0], &y[1]);<br />
/* model y */<br />
yh[0] = h[0] * x[0] + h[1] * x[1] + h[2];<br />
yh[1] = h[3] * x[0] + h[4] * x[1] + h[5];<br />
fprintf(fp2, "%.15g%c%.15g\n", yh[0] - y[0], SEP, yh[1] - y[1]);<br />
}<br />
fclose(fp2);<br />
fclose(fp1);<br />
fclose(fp0);<br />
<br />
exit(EXIT_SUCCESS);<br />
}<br />
</syntaxhighlight><br />
<br />
Сохраним код в файл '''findkey.c'''. Создадим исполняемый модуль компилятором '''gcc''':<br />
<br />
<syntaxhighlight lang="bash"><br />
$ gcc -o findkey findkey.c -lm<br />
</syntaxhighlight><br />
<br />
Пользователи MS Windows могут загрузить уже скомпилированную [https://wiki.gis-lab.info/images/4/43/Findkey.zip программу].<br />
<br />
== Ссылки ==<br />
<br />
* [http://pubs.usgs.gov/pp/1395/report.pdf Map Projections — A Working Manual, Snyder J. P., USGS Professional Paper 1395, 1987]<br />
* [http://www.epsg.org/Portals/0/373-07-2.pdf Coordinate Conversions and Transformations including Formulas, EPSG Guidance Note 7-2]<br />
* [https://desktop.arcgis.com/ru/arcmap/latest/map/projections/local-cartesian-projection.htm Справка ArcGIS — Локальная проекция Декартовой системы координат]<br />
* [https://proj4.org/usage/index.html Using PROJ]<br />
* [http://gis-lab.info/qa/helmert2d.html Конформное преобразование]<br />
* [https://gis.stackexchange.com/questions/353022/defining-a-coordinate-system-in-wkt-or-proj-format-that-has-an-affine-transforma Defining a coordinate system in WKT or PROJ format that has an Affine transformaiton and bounds]</div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B5%D1%81%D1%82%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82%D0%BD%D0%BE%D0%B9_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%B2_GIS&diff=26652Добавление местной координатной системы в GIS2020-09-03T15:53:46Z<p>Игорь Белов: /* Создание МСК в QGIS */</p>
<hr />
<div>{{Статья|Опубликована|local-cs}}<br />
<br />
{{Аннотация|Конструирование проекций, имитирующих местные координатные системы, в QGIS}}<br />
<br />
== Введение ==<br />
<br />
Под местной системой координат (МСК) будет подразумеваться так называемая «городская» система, построенная независимо от государственной системы (ГСК) и включенная в неё [http://gis-lab.info/qa/helmert2d.html#.D0.92.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5 заданием ключей перехода к СК-42 или СК-63]. МСК крупных территорий, сравнимых с размерами субъектов Федерации, не являются предметом данной статьи, поскольку относятся к классическим картографическим проекциям.<br />
<br />
Многие программы ГИС по примеру геодезических программ позволяют реализовать работу в МСК непосредственно. Так, в QGIS и в MapInfo Pro любая проекция может быть дополнена аффинным преобразованием, а в Global Mapper конформные проекции дополняются разворотом. В данной статье рассматривается создание МСК в программах QGIS и MapInfo.<br />
<br />
== Постановка задачи ==<br />
<br />
Имеется множество пунктов, для которых известны координаты ''X'', ''Y'' в ГСК и ''x'', ''y'' в МСК. Требуется подобрать проекцию, удовлетворительно представляющую МСК в ГИС. При подборе параметров предполагается использовать один из пунктов в качестве центральной точки преобразования.<br />
<br />
== Подготовка данных ==<br />
<br />
=== Исходные данные ===<br />
<br />
Имеются два каталога. Текстовый файл '''cat_s42z4.tsv''' содержит координаты пунктов в государственной системе (ГСК), а именно в четвёртой зоне СК-42:<br />
<br />
<pre><br />
4645997.49 5768521.60<br />
4661392.15 5770068.91<br />
4650059.09 5783332.41<br />
4634241.37 5778952.22<br />
4631481.69 5764570.61<br />
4642125.18 5754643.12<br />
4655952.19 5757337.28<br />
</pre><br />
<br />
В файле '''cat_local.tsv''' — координаты в местной системе (МСК):<br />
<br />
<pre><br />
67266.64 30088.40<br />
82697.29 31184.27<br />
71759.40 44771.50<br />
55822.67 40857.06<br />
52643.65 26564.42<br />
62990.64 16331.35<br />
76888.20 18619.57<br />
</pre><br />
<br />
Каждая строка в обоих файлах соответствует одному и тому же пункту. В первой строке центральный пункт системы.<br />
<br />
=== Дополнительные данные ===<br />
<br />
Очень важно помнить, что с точки зрения математической картографии МСК остаётся проекцией Гаусса-Крюгера и наследует её искажения. Поэтому важно знать, на какой именно ГСК основана МСК. Зачастую это заранее неизвестно, и приходится проводить предварительное исследование для выяснения этого вопроса.<br />
<br />
В нашем примере мы предполагаем, что базовая ГСК либо СК-42 зона 4, либо СК-63 зона C0.<br />
Каталог в первой системе имеется, нужно подготовить каталог в альтернативной системе.<br />
<br />
Параметры СК-63 зона C0 известны, это EPSG:3350 "Pulkovo 1942 / CS63 zone C0". <br />
Создадим каталог в СК-63 с помощью утилиты '''proj''':<br />
<br />
<syntaxhighlight lang="bash"><br />
$ proj -I -f "%.17g" +init=epsg:28404 cat_s42z4.tsv > lonlat.tsv<br />
$ proj -f "%.17g" +proj=tmerc +lat_0=0.1 +lon_0=21.95 +k=1 +x_0=250000 +y_0=0 +ellps=krass lonlat.tsv > cat_s63c0.tsv<br />
</syntaxhighlight><br />
<br />
В файл '''lonlat.tsv''' запишутся географические координаты (долготы и широты) в СК-42, а в '''cat_s63c0.tsv''' координаты в СК-63 зона C0:<br />
<br />
<pre><br />
330797.45370592922 5755981.4751984337<br />
346208.04426388565 5757327.0953416284<br />
335051.73824425979 5770735.1441946141<br />
319180.795365442 5766563.182877643<br />
316233.72446517192 5752221.1970210578<br />
326744.90098082455 5742157.2318198672<br />
340603.31654394628 5744670.1910534762<br />
</pre><br />
<br />
== Создание МСК ==<br />
<br />
Для вычислений используем консольную утилиту '''findkey''', о которой сказано ниже в приложении.<br />
<br />
=== Определение базовой ГСК ===<br />
<br />
Вычислим параметры конформного преобразования координат из СК-42 в МСК. Для этого в командной строке запустим программу '''findkey''' с аргументами '''cat_s42z4.tsv''' и '''cat_local.tsv''':<br />
<br />
<syntaxhighlight lang="bash"><br />
$ findkey cat_s42z4.tsv cat_local.tsv<br />
</syntaxhighlight><br />
<br />
Программа создаст два файла: '''key.txt''' с параметрами конформного преобразования и '''var.csv''' с координатными невязками.<br />
Посмотрим на содержимое '''var.csv''':<br />
<br />
{| class="wikitable"<br />
|-<br />
|- align="right"<br />
| -0.006 || 0.007<br />
|- align="right"<br />
| 0.182 || 0.046<br />
|- align="right"<br />
| -0.166 || 0.110<br />
|- align="right"<br />
| 0.019 || -0.185<br />
|- align="right"<br />
| 0.148 || 0.100<br />
|- align="right"<br />
| -0.146 || 0.094<br />
|- align="right"<br />
| -0.031 || -0.171<br />
|}<br />
<br />
Вычислим параметры конформного преобразования координат из СК-63 в МСК:<br />
<br />
<syntaxhighlight lang="bash"><br />
$ findkey cat_s63c0.tsv cat_local.tsv<br />
</syntaxhighlight><br />
<br />
Теперь содержимое '''var.csv''' будет таким:<br />
<br />
{| class="wikitable"<br />
|-<br />
|- align="right"<br />
| 0.000 || -0.002<br />
|- align="right"<br />
| -0.001 || 0.002<br />
|- align="right"<br />
| -0.001 || 0.002<br />
|- align="right"<br />
| 0.004 || 0.000<br />
|- align="right"<br />
| -0.002 || 0.001<br />
|- align="right"<br />
| 0.002 || -0.002<br />
|- align="right"<br />
| -0.002 || -0.001<br />
|}<br />
<br />
Сравнение невязок позволяет сделать вывод, что базовая ГСК — СК-63 зона C0.<br />
<br />
=== Полученные параметры ===<br />
<br />
Изучим содержимое файла '''key.txt''', соответствующего СК-63:<br />
<br />
<pre><br />
WKT:<br />
A0 = -356718.938772419<br />
A1 = 0.999887380509183<br />
A2 = 0.0161962611321084<br />
B0 = -5719887.1597502<br />
B1 = -0.0161962611321084<br />
B2 = 0.999887380509183<br />
<br />
MapInfo:<br />
0.999887380509, 0.016196261132, -356718.93877241889, -0.016196261132, 0.999887380509, -5719887.159750198<br />
<br />
Alternate set:<br />
scale = 1.000018546116108<br />
angle = 0.92800077023443683<br />
</pre><br />
<br />
Мы видим три группы чисел: WKT, MapInfo и Alternate set.<br />
<br />
Обратим внимание на параметр разворота angle из третьей группы. Если он мал, в пределах первых десятых долей градуса, имеет смысл отказаться от использования конформного преобразования и вместо этого смещать осевой меридиан для устранения угла разворота.<br />
<br />
=== Создание МСК в MapInfo ===<br />
<br />
Запись базовой СК-63 зона C0 в файле '''MAPINFOW.PRJ''' должна выглядеть так:<br />
<br />
<pre><br />
"CS63 zone C0", 8, 1001, 7, 21.95, 0.1, 1, 250000, 0<br />
</pre><br />
<br />
Используем вторую группу из файла '''key.txt'''. Впишем МСК в '''MAPINFOW.PRJ''' как базовую, дополненную аффинным преобразованием:<br />
<br />
<pre><br />
"Biala Podlaska", 1008, 1001, 7, 21.95, 0.1, 1, 250000, 0, 7, 0.999887380509, 0.016196261132, -356718.93877241889, -0.016196261132, 0.999887380509, -5719887.159750198<br />
</pre><br />
<br />
Полноценное определение нуждается в параметрах Bounds:<br />
<br />
<pre><br />
"Biala Podlaska", 3008, 1001, 7, 21.95, 0.1, 1, 250000, 0, 7, 0.999887380509, 0.016196261132, -356718.93877241889, -0.016196261132, 0.999887380509, -5719887.159750198, 52000, 15000, 82000, 45000<br />
</pre><br />
<br />
=== Создание МСК в QGIS ===<br />
<br />
Возьмём коэффициенты из первой группы в файле '''key.txt''' и создадим МСК в формате WKT как аффинное преобразование на основе проекции "Pulkovo 1942 / CS63 zone C0":<br />
<br />
<pre><br />
DERIVEDPROJCRS["Biala Podlaska",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone C0",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",21.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-356718.938772649,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.999887380509304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0161962611321413,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-5719887.15975089,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0161962611321413,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.999887380509304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["easting (X)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["northing (Y)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Poland - Biala Podlaska"],<br />
BBOX[51.90,22.90,52.1,23.3]]]<br />
</pre><br />
<br />
В первой строке записали название системы координат латиницей "Biala Podlaska".<br />
В конце вставили название покрываемой территории "Europe - Poland - Biala Podlaska" и охват в формате ''φ''<sub>min</sub>, ''λ''<sub>min</sub>, ''φ''<sub>max</sub>, ''λ''<sub>max</sub>.<br />
<br />
=== Создание МСК в Global Mapper ===<br />
<br />
Третья группа параметров в файле '''key.txt''' содержит масштабный коэффициент scale и угол поворота angle. Угол вставляем как есть, а масштабный коэффициент умножим на соответствующий параметр базовой СК.<br />
<br />
== Заключение ==<br />
<br />
Задачи построения МСК для QGIS и MapInfo выполнены, цель достигнута.<br />
<br />
== Приложение. Утилита findkey ==<br />
<br />
Программа '''findkey''' вычисляет параметры конформного преобразования. Написана на языке C. Вот листинг:<br />
<br />
<syntaxhighlight lang="c"><br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <math.h><br />
<br />
#define SEP ';' /* var-file column separator */<br />
<br />
/* --------------------------------------------------------------------------<br />
* findkey<br />
*<br />
* Program to compute Helmert 2D transformation parameters<br />
*<br />
* Usage: findkey <coord1> <coord2><br />
*<br />
* Input files: coord1 coord2<br />
* coord1 - source coordinate 'x1 y1'<br />
* coord2 - destination coordinate 'x2 y2'<br />
* a row per a point; 3+ points<br />
*<br />
* Output files:<br />
* key.txt - transformation parameters<br />
* var.csv - SEP separated residuals 'dx dy'<br />
* -------------------------------------------------------------------------- */<br />
int main(int argc, char *argv[])<br />
{<br />
char buf0[1024], buf1[1024];<br />
double x[2], y[2];<br />
double xc[2], yc[2];<br />
double dx[2], dy[2];<br />
double s[7] = {0., 0., 0., 0., 0.};<br />
double det, h[6];<br />
double mu, theta;<br />
double yh[2];<br />
int i;<br />
FILE *fp0, *fp1, *fp2;<br />
<br />
if (argc < 3) {<br />
printf("Usage: findkey <coord1> <coord2>\n");<br />
exit(EXIT_FAILURE);<br />
}<br />
<br />
if ((fp0 = fopen(argv[1], "r")) == NULL) {<br />
printf("can't open %s\n", argv[1]);<br />
exit(EXIT_FAILURE);<br />
}<br />
<br />
if ((fp1 = fopen(argv[2], "r")) == NULL) {<br />
printf("can't open %s\n", argv[2]);<br />
exit(EXIT_FAILURE);<br />
}<br />
<br />
/* coordinate sums */<br />
while (fgets(buf0, 1024, fp0) != NULL && fgets(buf1, 1024, fp1) != NULL) {<br />
sscanf(buf0, "%lf %lf", &x[0], &x[1]);<br />
sscanf(buf1, "%lf %lf", &y[0], &y[1]);<br />
s[0] += x[0];<br />
s[1] += x[1];<br />
s[2] += y[0];<br />
s[3] += y[1];<br />
s[4] += 1.;<br />
}<br />
rewind(fp0);<br />
rewind(fp1);<br />
<br />
/* centrum gravitatis */<br />
for (i = 0; i < 2; i++) {<br />
xc[i] = s[i] / s[4];<br />
yc[i] = s[2 + i] / s[4];<br />
}<br />
<br />
/* sums of products */<br />
for (i = 0; i < 7; i++)<br />
s[i] = 0.;<br />
while (fgets(buf0, 1024, fp0) != NULL && fgets(buf1, 1024, fp1) != NULL) {<br />
sscanf(buf0, "%lf %lf", &x[0], &x[1]);<br />
sscanf(buf1, "%lf %lf", &y[0], &y[1]);<br />
/* coordinate differences */<br />
dx[0] = x[0] - xc[0];<br />
dx[1] = x[1] - xc[1];<br />
dy[0] = y[0] - yc[0];<br />
dy[1] = y[1] - yc[1];<br />
/* summation */<br />
s[0] += dx[0] * dx[0];<br />
/*s[1] += dx[0] * dx[1];*/<br />
s[2] += dx[1] * dx[1];<br />
s[3] += dx[0] * dy[0];<br />
s[4] += dx[1] * dy[0];<br />
s[5] += dx[0] * dy[1];<br />
s[6] += dx[1] * dy[1];<br />
}<br />
rewind(fp0);<br />
rewind(fp1);<br />
<br />
/* Helmert parameters */<br />
det = s[0] + s[2];<br />
h[0] = (s[3] + s[6]) / det;<br />
h[1] = (s[4] - s[5]) / det;<br />
h[2] = yc[0] - h[0] * xc[0] - h[1] * xc[1];<br />
h[3] = -h[1];<br />
h[4] = h[0];<br />
h[5] = yc[1] - h[3] * xc[0] - h[4] * xc[1];<br />
<br />
/* alternative Helmert parameter set */<br />
mu = hypot(h[0], h[1]);<br />
theta = atan2(h[1], h[0]) / M_PI * 180.;<br />
<br />
/* output parameters */<br />
if ((fp2 = fopen("key.txt", "w")) == NULL) {<br />
printf("can't create %s\n", "key.txt");<br />
exit(EXIT_FAILURE);<br />
}<br />
fprintf(fp2, "WKT:\nA0 = %.15g\nA1 = %.15g\nA2 = %.15g\nB0 = %.15g\nB1 = %.15g\nB2 = %.15g\n",<br />
h[2], h[0], h[1], h[5], h[3], h[4]);<br />
fprintf(fp2, "\nMapInfo:\n%.12f, %.12f, %.17g, %.12f, %.12f, %.17g\n",<br />
h[0], h[1], h[2], h[3], h[4], h[5]);<br />
fprintf(fp2, "\nAlternate set:\nscale = %.17g\nangle = %.17g\n", mu, theta);<br />
fclose(fp2);<br />
<br />
/* output residuals */<br />
if ((fp2 = fopen("var.csv", "w")) == NULL) {<br />
printf("can't create %s\n", "var.csv");<br />
exit(EXIT_FAILURE);<br />
}<br />
while (fgets(buf0, 1024, fp0) != NULL && fgets(buf1, 1024, fp1) != NULL) {<br />
sscanf(buf0, "%lf %lf", &x[0], &x[1]);<br />
sscanf(buf1, "%lf %lf", &y[0], &y[1]);<br />
/* model y */<br />
yh[0] = h[0] * x[0] + h[1] * x[1] + h[2];<br />
yh[1] = h[3] * x[0] + h[4] * x[1] + h[5];<br />
fprintf(fp2, "%.15g%c%.15g\n", yh[0] - y[0], SEP, yh[1] - y[1]);<br />
}<br />
fclose(fp2);<br />
fclose(fp1);<br />
fclose(fp0);<br />
<br />
exit(EXIT_SUCCESS);<br />
}<br />
</syntaxhighlight><br />
<br />
Сохраним код в файл '''findkey.c'''. Создадим исполняемый модуль компилятором '''gcc''':<br />
<br />
<syntaxhighlight lang="bash"><br />
$ gcc -o findkey findkey.c -lm<br />
</syntaxhighlight><br />
<br />
Пользователи MS Windows могут загрузить уже скомпилированную [https://wiki.gis-lab.info/images/4/43/Findkey.zip программу].<br />
<br />
== Ссылки ==<br />
<br />
* [http://pubs.usgs.gov/pp/1395/report.pdf Map Projections — A Working Manual, Snyder J. P., USGS Professional Paper 1395, 1987]<br />
* [http://www.epsg.org/Portals/0/373-07-2.pdf Coordinate Conversions and Transformations including Formulas, EPSG Guidance Note 7-2]<br />
* [https://desktop.arcgis.com/ru/arcmap/latest/map/projections/local-cartesian-projection.htm Справка ArcGIS — Локальная проекция Декартовой системы координат]<br />
* [https://proj4.org/usage/index.html Using PROJ]<br />
* [http://gis-lab.info/qa/helmert2d.html Конформное преобразование]<br />
* [https://gis.stackexchange.com/questions/353022/defining-a-coordinate-system-in-wkt-or-proj-format-that-has-an-affine-transforma Defining a coordinate system in WKT or PROJ format that has an Affine transformaiton and bounds]</div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26651Местные системы координат в WKT 22020-09-03T15:46:01Z<p>Игорь Белов: /* Системы координат с дополнительным преобразованием */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 его воспринял.<br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (местной) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Yekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone W1",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["easting (X)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["northing (Y)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Asia - Russia - Yekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Как может выглядеть проекция на особом датуме с дополнительным преобразованием, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26650Местные системы координат в WKT 22020-09-02T09:50:42Z<p>Игорь Белов: /* Системы координат с дополнительным преобразованием */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 его воспринял.<br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (местной) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Yekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone W1",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Asia - Russia - Yekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Как может выглядеть проекция на особом датуме с дополнительным преобразованием, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26649Местные системы координат в WKT 22020-09-02T09:50:03Z<p>Игорь Белов: /* Системы координат с дополнительным преобразованием */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 его воспринял.<br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (местной) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Yekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone W1",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Asia - Yekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Как может выглядеть проекция на особом датуме с дополнительным преобразованием, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26648Местные системы координат в WKT 22020-09-02T09:00:14Z<p>Игорь Белов: /* Выводы */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 его воспринял.<br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (местной) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone W1",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Как может выглядеть проекция на особом датуме с дополнительным преобразованием, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26647Местные системы координат в WKT 22020-08-31T16:10:24Z<p>Игорь Белов: /* Системы координат с дополнительным преобразованием */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 его воспринял.<br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (местной) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone W1",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Можно расширить классификацию, добавив комбинацию первого типа с третьим, что несложно. А вот как может выглядеть комбинация второго и третьего типов, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26646Местные системы координат в WKT 22020-08-31T15:49:08Z<p>Игорь Белов: /* Системы координат с дополнительным преобразованием */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 его воспринял.<br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (городской) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone W1",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Можно расширить классификацию, добавив комбинацию первого типа с третьим, что несложно. А вот как может выглядеть комбинация второго и третьего типов, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26645Местные системы координат в WKT 22020-08-31T15:18:32Z<p>Игорь Белов: /* Введение */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 системы координат представляли в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских и строительных систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 его воспринял.<br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (городской) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Можно расширить классификацию, добавив комбинацию первого типа с третьим, что несложно. А вот как может выглядеть комбинация второго и третьего типов, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26644Местные системы координат в WKT 22020-08-31T15:16:38Z<p>Игорь Белов: /* Системы координат с особым датумом */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 его воспринял.<br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (городской) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Можно расширить классификацию, добавив комбинацию первого типа с третьим, что несложно. А вот как может выглядеть комбинация второго и третьего типов, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26643Местные системы координат в WKT 22020-08-31T15:05:14Z<p>Игорь Белов: /* Выводы */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (городской) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Можно расширить классификацию, добавив комбинацию первого типа с третьим, что несложно. А вот как может выглядеть комбинация второго и третьего типов, пока не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26642Местные системы координат в WKT 22020-08-31T15:04:27Z<p>Игорь Белов: </p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
=== Системы координат с дополнительным преобразованием ===<br />
<br />
Это системы координат городов и прочих населённых пунктов. Они основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного.<br />
<br />
В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (городской) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
Можно расширить классификацию, добавив комбинацию первого типа с третьим, что несложно. А вот как может выглядеть комбинация второго и третьего типов, не представляю.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26641Местные системы координат в WKT 22020-08-31T14:50:50Z<p>Игорь Белов: /* Городские системы координат */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
=== Городские системы координат ===<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (городской) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём случайное определение с просторов Интернета:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26640Местные системы координат в WKT 22020-08-31T14:49:46Z<p>Игорь Белов: /* Городские системы координат */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
=== Городские системы координат ===<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования участвуют в формулах перехода от исходной проекции к целевой (городской) системе следующим образом:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26639Местные системы координат в WKT 22020-08-31T14:48:35Z<p>Игорь Белов: /* Системы координат с особым датумом */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе — МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
=== Городские системы координат ===<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26638Местные системы координат в WKT 22020-08-31T14:47:44Z<p>Игорь Белов: /* Системы координат с особым датумом */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём разные ситуации:<br />
* датум отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 отсутствует в EPSG;<br />
* трансформация из датума в WGS 84 имеется в EPSG, но относится к другому датуму.<br />
<br />
Известен пример МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенной на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый интересный пример в этом классе МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
=== Городские системы координат ===<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26637Местные системы координат в WKT 22020-08-31T14:30:48Z<p>Игорь Белов: /* Системы координат с особым датумом */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG, или таковая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref>, построенная на датуме СК-95 с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример в этом классе, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
=== Городские системы координат ===<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26636Местные системы координат в WKT 22020-08-31T14:28:45Z<p>Игорь Белов: /* Системы координат с особым датумом */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG, или таковая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример в этом классе, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
=== Городские системы координат ===<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26635Местные системы координат в WKT 22020-08-31T14:27:40Z<p>Игорь Белов: /* Выводы */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример в этом классе, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
=== Городские системы координат ===<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Даны примеры описания WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26634Местные системы координат в WKT 22020-08-31T14:24:21Z<p>Игорь Белов: </p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== Типы местных систем координат ==<br />
<br />
=== Классические проекции ===<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
=== Системы координат с особым датумом ===<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример в этом классе, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
=== Городские системы координат ===<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26633Местные системы координат в WKT 22020-08-31T14:21:49Z<p>Игорь Белов: </p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример в этом классе, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== 3. Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26632Местные системы координат в WKT 22020-08-31T14:21:22Z<p>Игорь Белов: </p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья на примерах даёт представление о том, как следует конструировать описание местных систем координат в формате WKT 2.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример в этом классе, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Ссылки ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26631Местные системы координат в WKT 22020-08-31T14:17:16Z<p>Игорь Белов: /* Городские системы координат */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья даёт представление о том, как следует конструировать описание местных систем координат, на примерах.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример в этом классе, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, только он слишком широк, чтобы быть правдой.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Примечания ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26630Местные системы координат в WKT 22020-08-31T14:16:17Z<p>Игорь Белов: /* Городские системы координат */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья даёт представление о том, как следует конструировать описание местных систем координат, на примерах.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример в этом классе, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Местная система координат г. Екатеринбург]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, но он не похож на правду, слишком широк.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Примечания ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26629Местные системы координат в WKT 22020-08-31T14:15:02Z<p>Игорь Белов: /* Городские системы координат */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья даёт представление о том, как следует конструировать описание местных систем координат, на примерах.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример в этом классе, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>[https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390 Родичкин: Для файла проекций МИ встречалось…]</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
В этой строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, но он не похож на правду, слишком широк.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Примечания ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26628Местные системы координат в WKT 22020-08-31T14:08:48Z<p>Игорь Белов: /* 2. Системы координат с особым датумом */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья даёт представление о том, как следует конструировать описание местных систем координат, на примерах.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>[https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»]</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример в этом классе, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>[http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf Положение о ПМСК Москвы]</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>[https://gis-lab.info/qa/datum-transform-methods.html Переход от одной системы координат к другой - методы трансформации]</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>{{Cite web|title = Для файла проекций МИ встречалось…|url = https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390|website = geodesist.ru|date = 2019-03-28|accessdate = 2020-08-31}}</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
Здесь в строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, но он не похож на правду, слишком широк.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Примечания ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26627Местные системы координат в WKT 22020-08-31T14:04:54Z<p>Игорь Белов: /* 1. Классические проекции */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья даёт представление о том, как следует конструировать описание местных систем координат, на примерах.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>[https://mapbasic.ru/msk47 МСК-47 Ленинградская область параметры для mapinfow.prj]</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>[http://epsg.io/3352 EPSG:3352 Pulkovo 1942 / CS63 zone C2]</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>{{Cite web|title = Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»|url = https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html|website = docplayer.ru|date = 2009-10-26|accessdate = 2020-08-31}}</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример здесь, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>{{Cite web|title = Положение о ПМСК Москвы|url = http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf|website = sngo.mggt.ru|date = 2011-08-12|accessdate = 2020-08-31}}</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>{{Cite web|title = Переход от одной системы координат к другой - методы трансформации|url = https://gis-lab.info/qa/datum-transform-methods.html|website = gis-lab.info|date = 2016-07-09|accessdate = 2020-08-31}}</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>{{Cite web|title = Для файла проекций МИ встречалось…|url = https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390|website = geodesist.ru|date = 2019-03-28|accessdate = 2020-08-31}}</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
Здесь в строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, но он не похож на правду, слишком широк.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Примечания ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26626Местные системы координат в WKT 22020-08-31T14:01:51Z<p>Игорь Белов: /* Введение */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья даёт представление о том, как следует конструировать описание местных систем координат, на примерах.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] — Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] — International Organization for Standardization</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>{{citation |editor-first=dab |editor-last=dab |title = МСК-47 Ленинградская область параметры для mapinfow.prj|url = https://mapbasic.ru/msk47|website = mapbasic.ru|date = 2012-10-01|accessdate = 2020-08-31}}</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>{{Cite web|title = EPSG:3352 Pulkovo 1942 / CS63 zone C2|url = http://epsg.io/3352|website = epsg.io|date = 2005-12-21|accessdate = 2020-08-31}}</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>{{Cite web|title = Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»|url = https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html|website = docplayer.ru|date = 2009-10-26|accessdate = 2020-08-31}}</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример здесь, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>{{Cite web|title = Положение о ПМСК Москвы|url = http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf|website = sngo.mggt.ru|date = 2011-08-12|accessdate = 2020-08-31}}</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>{{Cite web|title = Переход от одной системы координат к другой - методы трансформации|url = https://gis-lab.info/qa/datum-transform-methods.html|website = gis-lab.info|date = 2016-07-09|accessdate = 2020-08-31}}</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>{{Cite web|title = Для файла проекций МИ встречалось…|url = https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390|website = geodesist.ru|date = 2019-03-28|accessdate = 2020-08-31}}</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
Здесь в строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, но он не похож на правду, слишком широк.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Примечания ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26625Местные системы координат в WKT 22020-08-31T13:56:51Z<p>Игорь Белов: /* Введение */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья даёт представление о том, как следует конструировать описание местных систем координат, на примерах.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации OGC ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] International Organization for Standardization</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>{{citation |editor-first=dab |editor-last=dab |title = МСК-47 Ленинградская область параметры для mapinfow.prj|url = https://mapbasic.ru/msk47|website = mapbasic.ru|date = 2012-10-01|accessdate = 2020-08-31}}</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>{{Cite web|title = EPSG:3352 Pulkovo 1942 / CS63 zone C2|url = http://epsg.io/3352|website = epsg.io|date = 2005-12-21|accessdate = 2020-08-31}}</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>{{Cite web|title = Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»|url = https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html|website = docplayer.ru|date = 2009-10-26|accessdate = 2020-08-31}}</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример здесь, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>{{Cite web|title = Положение о ПМСК Москвы|url = http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf|website = sngo.mggt.ru|date = 2011-08-12|accessdate = 2020-08-31}}</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>{{Cite web|title = Переход от одной системы координат к другой - методы трансформации|url = https://gis-lab.info/qa/datum-transform-methods.html|website = gis-lab.info|date = 2016-07-09|accessdate = 2020-08-31}}</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>{{Cite web|title = Для файла проекций МИ встречалось…|url = https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390|website = geodesist.ru|date = 2019-03-28|accessdate = 2020-08-31}}</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
Здесь в строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, но он не похож на правду, слишком широк.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Примечания ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26624Местные системы координат в WKT 22020-08-31T13:54:10Z<p>Игорь Белов: /* Введение */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья даёт представление о том, как следует конструировать описание местных систем координат, на примерах.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems] Open Geospatial Consortium</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html ISO 19162:2019 Geographic information – Well-known text representation of coordinate reference systems] International Organization for Standardization</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>{{citation |editor-first=dab |editor-last=dab |title = МСК-47 Ленинградская область параметры для mapinfow.prj|url = https://mapbasic.ru/msk47|website = mapbasic.ru|date = 2012-10-01|accessdate = 2020-08-31}}</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>{{Cite web|title = EPSG:3352 Pulkovo 1942 / CS63 zone C2|url = http://epsg.io/3352|website = epsg.io|date = 2005-12-21|accessdate = 2020-08-31}}</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>{{Cite web|title = Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»|url = https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html|website = docplayer.ru|date = 2009-10-26|accessdate = 2020-08-31}}</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример здесь, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>{{Cite web|title = Положение о ПМСК Москвы|url = http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf|website = sngo.mggt.ru|date = 2011-08-12|accessdate = 2020-08-31}}</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>{{Cite web|title = Переход от одной системы координат к другой - методы трансформации|url = https://gis-lab.info/qa/datum-transform-methods.html|website = gis-lab.info|date = 2016-07-09|accessdate = 2020-08-31}}</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>{{Cite web|title = Для файла проекций МИ встречалось…|url = https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390|website = geodesist.ru|date = 2019-03-28|accessdate = 2020-08-31}}</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
Здесь в строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, но он не похож на правду, слишком широк.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Примечания ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26623Местные системы координат в WKT 22020-08-31T13:49:26Z<p>Игорь Белов: /* Введение */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья даёт представление о том, как следует конструировать описание местных систем координат, на примерах.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems]</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>[https://www.iso.org/standard/76496.html Geographic information – Well-known text representation of coordinate reference systems]</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>{{citation |editor-first=dab |editor-last=dab |title = МСК-47 Ленинградская область параметры для mapinfow.prj|url = https://mapbasic.ru/msk47|website = mapbasic.ru|date = 2012-10-01|accessdate = 2020-08-31}}</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>{{Cite web|title = EPSG:3352 Pulkovo 1942 / CS63 zone C2|url = http://epsg.io/3352|website = epsg.io|date = 2005-12-21|accessdate = 2020-08-31}}</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>{{Cite web|title = Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»|url = https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html|website = docplayer.ru|date = 2009-10-26|accessdate = 2020-08-31}}</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример здесь, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>{{Cite web|title = Положение о ПМСК Москвы|url = http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf|website = sngo.mggt.ru|date = 2011-08-12|accessdate = 2020-08-31}}</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>{{Cite web|title = Переход от одной системы координат к другой - методы трансформации|url = https://gis-lab.info/qa/datum-transform-methods.html|website = gis-lab.info|date = 2016-07-09|accessdate = 2020-08-31}}</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>{{Cite web|title = Для файла проекций МИ встречалось…|url = https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390|website = geodesist.ru|date = 2019-03-28|accessdate = 2020-08-31}}</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
Здесь в строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, но он не похож на правду, слишком широк.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Примечания ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26622Местные системы координат в WKT 22020-08-31T13:47:45Z<p>Игорь Белов: /* Введение */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья даёт представление о том, как следует конструировать описание местных систем координат, на примерах.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации ''Well-known text representation of coordinate reference systems''.<ref>[https://www.opengeospatial.org/standards/wkt-crs Geographic information – Well-known text representation of coordinate reference systems]</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>{{citation |number=ISO 19162:2019 |edition=2nd |date=July 2019 |title=Geographic information – Well-known text representation of coordinate reference systems |publisher=[[International Organization for Standardization|ISO]] |url=https://www.iso.org/standard/76496.html |accessdate=2020-08-31}}</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>{{citation |editor-first=dab |editor-last=dab |title = МСК-47 Ленинградская область параметры для mapinfow.prj|url = https://mapbasic.ru/msk47|website = mapbasic.ru|date = 2012-10-01|accessdate = 2020-08-31}}</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>{{Cite web|title = EPSG:3352 Pulkovo 1942 / CS63 zone C2|url = http://epsg.io/3352|website = epsg.io|date = 2005-12-21|accessdate = 2020-08-31}}</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>{{Cite web|title = Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»|url = https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html|website = docplayer.ru|date = 2009-10-26|accessdate = 2020-08-31}}</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример здесь, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>{{Cite web|title = Положение о ПМСК Москвы|url = http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf|website = sngo.mggt.ru|date = 2011-08-12|accessdate = 2020-08-31}}</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>{{Cite web|title = Переход от одной системы координат к другой - методы трансформации|url = https://gis-lab.info/qa/datum-transform-methods.html|website = gis-lab.info|date = 2016-07-09|accessdate = 2020-08-31}}</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>{{Cite web|title = Для файла проекций МИ встречалось…|url = https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390|website = geodesist.ru|date = 2019-03-28|accessdate = 2020-08-31}}</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
Здесь в строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, но он не похож на правду, слишком широк.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Примечания ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26621Местные системы координат в WKT 22020-08-31T13:41:44Z<p>Игорь Белов: /* 1. Классические проекции */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья даёт представление о том, как следует конструировать описание местных систем координат, на примерах.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации ''Well-known text representation of coordinate reference systems''.<ref name=WKTCRS>{{citation |editor-first=Lott |editor-last=Roger |title=Geographic information – Well-known text representation of coordinate reference systems |number=12{{hyphen}}063r5 |institution=[[Open Geospatial Consortium]] |date=2015-05-01 |url=https://www.opengeospatial.org/standards/wkt-crs |accessdate=2020-08-31}}</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>{{citation |number=ISO 19162:2019 |edition=2nd |date=July 2019 |title=Geographic information – Well-known text representation of coordinate reference systems |publisher=[[International Organization for Standardization|ISO]] |url=https://www.iso.org/standard/76496.html |accessdate=2020-08-31}}</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение таких систем в WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>{{citation |editor-first=dab |editor-last=dab |title = МСК-47 Ленинградская область параметры для mapinfow.prj|url = https://mapbasic.ru/msk47|website = mapbasic.ru|date = 2012-10-01|accessdate = 2020-08-31}}</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>{{Cite web|title = EPSG:3352 Pulkovo 1942 / CS63 zone C2|url = http://epsg.io/3352|website = epsg.io|date = 2005-12-21|accessdate = 2020-08-31}}</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>{{Cite web|title = Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»|url = https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html|website = docplayer.ru|date = 2009-10-26|accessdate = 2020-08-31}}</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример здесь, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>{{Cite web|title = Положение о ПМСК Москвы|url = http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf|website = sngo.mggt.ru|date = 2011-08-12|accessdate = 2020-08-31}}</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>{{Cite web|title = Переход от одной системы координат к другой - методы трансформации|url = https://gis-lab.info/qa/datum-transform-methods.html|website = gis-lab.info|date = 2016-07-09|accessdate = 2020-08-31}}</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>{{Cite web|title = Для файла проекций МИ встречалось…|url = https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390|website = geodesist.ru|date = 2019-03-28|accessdate = 2020-08-31}}</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
Здесь в строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, но он не похож на правду, слишком широк.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Примечания ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26620Местные системы координат в WKT 22020-08-31T13:25:21Z<p>Игорь Белов: /* Городские системы координат */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья даёт представление о том, как следует конструировать описание местных систем координат, на примерах.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации ''Well-known text representation of coordinate reference systems''.<ref name=WKTCRS>{{citation |editor-first=Lott |editor-last=Roger |title=Geographic information – Well-known text representation of coordinate reference systems |number=12{{hyphen}}063r5 |institution=[[Open Geospatial Consortium]] |date=2015-05-01 |url=https://www.opengeospatial.org/standards/wkt-crs |accessdate=2020-08-31}}</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>{{citation |number=ISO 19162:2019 |edition=2nd |date=July 2019 |title=Geographic information – Well-known text representation of coordinate reference systems |publisher=[[International Organization for Standardization|ISO]] |url=https://www.iso.org/standard/76496.html |accessdate=2020-08-31}}</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>{{citation |editor-first=dab |editor-last=dab |title = МСК-47 Ленинградская область параметры для mapinfow.prj|url = https://mapbasic.ru/msk47|website = mapbasic.ru|date = 2012-10-01|accessdate = 2020-08-31}}</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>{{Cite web|title = EPSG:3352 Pulkovo 1942 / CS63 zone C2|url = http://epsg.io/3352|website = epsg.io|date = 2005-12-21|accessdate = 2020-08-31}}</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>{{Cite web|title = Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»|url = https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html|website = docplayer.ru|date = 2009-10-26|accessdate = 2020-08-31}}</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример здесь, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>{{Cite web|title = Положение о ПМСК Москвы|url = http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf|website = sngo.mggt.ru|date = 2011-08-12|accessdate = 2020-08-31}}</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>{{Cite web|title = Переход от одной системы координат к другой - методы трансформации|url = https://gis-lab.info/qa/datum-transform-methods.html|website = gis-lab.info|date = 2016-07-09|accessdate = 2020-08-31}}</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
<syntaxhighlight lang="text"><br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
</syntaxhighlight><br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>{{Cite web|title = Для файла проекций МИ встречалось…|url = https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390|website = geodesist.ru|date = 2019-03-28|accessdate = 2020-08-31}}</ref><br />
<br />
<syntaxhighlight lang="text"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
Здесь в строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, но он не похож на правду, слишком широк.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="text"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Примечания ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26619Местные системы координат в WKT 22020-08-31T13:24:33Z<p>Игорь Белов: /* 2. Системы координат с особым датумом */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья даёт представление о том, как следует конструировать описание местных систем координат, на примерах.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации ''Well-known text representation of coordinate reference systems''.<ref name=WKTCRS>{{citation |editor-first=Lott |editor-last=Roger |title=Geographic information – Well-known text representation of coordinate reference systems |number=12{{hyphen}}063r5 |institution=[[Open Geospatial Consortium]] |date=2015-05-01 |url=https://www.opengeospatial.org/standards/wkt-crs |accessdate=2020-08-31}}</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>{{citation |number=ISO 19162:2019 |edition=2nd |date=July 2019 |title=Geographic information – Well-known text representation of coordinate reference systems |publisher=[[International Organization for Standardization|ISO]] |url=https://www.iso.org/standard/76496.html |accessdate=2020-08-31}}</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>{{citation |editor-first=dab |editor-last=dab |title = МСК-47 Ленинградская область параметры для mapinfow.prj|url = https://mapbasic.ru/msk47|website = mapbasic.ru|date = 2012-10-01|accessdate = 2020-08-31}}</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>{{Cite web|title = EPSG:3352 Pulkovo 1942 / CS63 zone C2|url = http://epsg.io/3352|website = epsg.io|date = 2005-12-21|accessdate = 2020-08-31}}</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>{{Cite web|title = Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»|url = https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html|website = docplayer.ru|date = 2009-10-26|accessdate = 2020-08-31}}</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример здесь, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>{{Cite web|title = Положение о ПМСК Москвы|url = http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf|website = sngo.mggt.ru|date = 2011-08-12|accessdate = 2020-08-31}}</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="text"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>{{Cite web|title = Переход от одной системы координат к другой - методы трансформации|url = https://gis-lab.info/qa/datum-transform-methods.html|website = gis-lab.info|date = 2016-07-09|accessdate = 2020-08-31}}</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>{{Cite web|title = Для файла проекций МИ встречалось…|url = https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390|website = geodesist.ru|date = 2019-03-28|accessdate = 2020-08-31}}</ref><br />
<br />
<syntaxhighlight lang="csv"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
Здесь в строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, но он не похож на правду, слишком широк.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="wkt"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Примечания ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26618Местные системы координат в WKT 22020-08-31T13:24:14Z<p>Игорь Белов: /* 1. Классические проекции */</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья даёт представление о том, как следует конструировать описание местных систем координат, на примерах.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации ''Well-known text representation of coordinate reference systems''.<ref name=WKTCRS>{{citation |editor-first=Lott |editor-last=Roger |title=Geographic information – Well-known text representation of coordinate reference systems |number=12{{hyphen}}063r5 |institution=[[Open Geospatial Consortium]] |date=2015-05-01 |url=https://www.opengeospatial.org/standards/wkt-crs |accessdate=2020-08-31}}</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>{{citation |number=ISO 19162:2019 |edition=2nd |date=July 2019 |title=Geographic information – Well-known text representation of coordinate reference systems |publisher=[[International Organization for Standardization|ISO]] |url=https://www.iso.org/standard/76496.html |accessdate=2020-08-31}}</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>{{citation |editor-first=dab |editor-last=dab |title = МСК-47 Ленинградская область параметры для mapinfow.prj|url = https://mapbasic.ru/msk47|website = mapbasic.ru|date = 2012-10-01|accessdate = 2020-08-31}}</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>{{Cite web|title = EPSG:3352 Pulkovo 1942 / CS63 zone C2|url = http://epsg.io/3352|website = epsg.io|date = 2005-12-21|accessdate = 2020-08-31}}</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="text"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>{{Cite web|title = Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»|url = https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html|website = docplayer.ru|date = 2009-10-26|accessdate = 2020-08-31}}</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример здесь, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>{{Cite web|title = Положение о ПМСК Москвы|url = http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf|website = sngo.mggt.ru|date = 2011-08-12|accessdate = 2020-08-31}}</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="wkt"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>{{Cite web|title = Переход от одной системы координат к другой - методы трансформации|url = https://gis-lab.info/qa/datum-transform-methods.html|website = gis-lab.info|date = 2016-07-09|accessdate = 2020-08-31}}</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>{{Cite web|title = Для файла проекций МИ встречалось…|url = https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390|website = geodesist.ru|date = 2019-03-28|accessdate = 2020-08-31}}</ref><br />
<br />
<syntaxhighlight lang="csv"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
Здесь в строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, но он не похож на правду, слишком широк.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="wkt"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Примечания ==<br />
<br />
<references /></div>Игорь Беловhttps://wiki.gis-lab.info/index.php?title=%D0%9C%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_WKT_2&diff=26617Местные системы координат в WKT 22020-08-31T13:23:01Z<p>Игорь Белов: Новая страница: «{{Статья|Черновик}} {{Аннотация|Статья даёт представление о том, как следует конструирова…»</p>
<hr />
<div>{{Статья|Черновик}}<br />
<br />
{{Аннотация|Статья даёт представление о том, как следует конструировать описание местных систем координат, на примерах.}}<br />
<br />
== Введение ==<br />
<br />
Во времена QGIS 2 описание систем координат производилось в формате PROJ4. По возможностям он практически эквивалентен формату OGC WKT 1. Следует отметить общее в обоих форматах задание трансформации датума через элемент TOWGS84. Также общим является отсутствие дополнительных преобразований, что ставило под вопрос возможность определения городских систем координат, такие преобразования использующих.<br />
<br />
В QGIS 3 стандартом описания систем координат стал формат WKT 2. Важным его отличием от предшественника стало использование преобразований. Помимо прочего, это сделало ненужным элемент TOWGS84 и сняло затруднения с определением городских систем координат.<br />
<br />
На момент написания статьи действуют спецификации ''Well-known text representation of coordinate reference systems''.<ref name=WKTCRS>{{citation |editor-first=Lott |editor-last=Roger |title=Geographic information – Well-known text representation of coordinate reference systems |number=12{{hyphen}}063r5 |institution=[[Open Geospatial Consortium]] |date=2015-05-01 |url=https://www.opengeospatial.org/standards/wkt-crs |accessdate=2020-08-31}}</ref> Они зафиксированы в стандарте ISO 19162:2019.<ref>{{citation |number=ISO 19162:2019 |edition=2nd |date=July 2019 |title=Geographic information – Well-known text representation of coordinate reference systems |publisher=[[International Organization for Standardization|ISO]] |url=https://www.iso.org/standard/76496.html |accessdate=2020-08-31}}</ref><br />
<br />
== 1. Классические проекции ==<br />
<br />
Бо́льшая часть местных систем координат в Российской Федерации построена на географически подходящей зоне СК-42 или СК-63 и отличается от неё лишь параметрами сдвига EPSG:8806 ''False easting'' и EPSG:8807 ''False northing''. Определение WKT 2 не отличается от WKT 1.<br />
<br />
В качестве примера приведём МСК-47 зона 2, основанную на СК-63 зона C3. Параметры можно найти на сайте MapBasic<ref>{{citation |editor-first=dab |editor-last=dab |title = МСК-47 Ленинградская область параметры для mapinfow.prj|url = https://mapbasic.ru/msk47|website = mapbasic.ru|date = 2012-10-01|accessdate = 2020-08-31}}</ref> или получить аддитивно от второй зоны EPSG:3352 ''Pulkovo 1942 / CS63 zone C2''<ref>{{Cite web|title = EPSG:3352 Pulkovo 1942 / CS63 zone C2|url = http://epsg.io/3352|website = epsg.io|date = 2005-12-21|accessdate = 2020-08-31}}</ref> с учётом параметров сдвига.<br />
<br />
<syntaxhighlight lang="wkt"><br />
PROJCRS["Pulkovo 1942 / MSK47 zone 2",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["MSK47 zone 2",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",30.95,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",2250000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",-6200000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - MSK47 zone 2"],<br />
BBOX[58.41,28.67,61.19,33.74]]]<br />
</syntaxhighlight><br />
<br />
Обратите внимание на элемент BBOX. Благодаря ему программы могут при выборе системы координат показать пользователю на карте прямоугольник, охватывающий область действия системы координат. Он содержит величины ''Широта минимальная'', ''Долгота минимальная'', ''Широта максимальная'', ''Долгота максимальная'' в системе координат WGS 84.<br />
<br />
== 2. Системы координат с особым датумом ==<br />
<br />
Сюда отнесём также системы со стандартным датумом, но с трансформацией датума, которой нет в базе данных EPSG или которая имеется, но в EPSG односится к другому датуму. Примером может служить МСК-33<ref>{{Cite web|title = Постановление Губернатора Владимирской обл. от N 876 «Об утверждении Положения о местной системе координат Владимирской области (МСК-33)»|url = https://docplayer.ru/37031042-Postanovlenie-gubernatora-vladimirskoy-obl-ot-n-876-ob-utverzhdenii-polozheniya-o-mestnoy-sisteme-koordinat-vladimirskoy-oblasti-msk-33.html|website = docplayer.ru|date = 2009-10-26|accessdate = 2020-08-31}}</ref> с выведенными для территории Владимирской области значениями семи параметров.<br />
<br />
Самый известный пример здесь, конечно, МСК Москвы на эллипсоиде Бесселя.<ref>{{Cite web|title = Положение о ПМСК Москвы|url = http://sngo.mggt.ru/documents/sngo/PMSK_Moscow.pdf|website = sngo.mggt.ru|date = 2011-08-12|accessdate = 2020-08-31}}</ref><br />
<br />
Используем конструкцию BOUNDCRS, которая связывает исходную систему координат SOURCECRS, в роли которой выступает проекция, с конечной TARGETCRS, в роли которой выступает WGS 84, через трансформацию ABRIDGEDTRANSFORMATION:<br />
<br />
<syntaxhighlight lang="wkt"><br />
BOUNDCRS[<br />
SOURCECRS[<br />
PROJCRS["Moscow",<br />
BASEGEOGCRS["Unknown datum based upon the Bessel 1841 ellipsoid",<br />
DATUM["Not specified (based on Bessel 1841 ellipsoid)",<br />
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8901]]],<br />
CONVERSION["Moscow",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",55.6666666666667,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",37.5,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]],<br />
CS[Cartesian,2],<br />
AXIS["(E)",east,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]],<br />
AXIS["(N)",north,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1,<br />
ID["EPSG",9001]]]]],<br />
TARGETCRS[<br />
GEOGCRS["WGS 84",<br />
DATUM["World Geodetic System 1984",<br />
ELLIPSOID["WGS 84",6378137,298.257223563,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
CS[ellipsoidal,2],<br />
AXIS["geodetic latitude (Lat)",north,<br />
ORDER[1],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
AXIS["geodetic longitude (Lon)",east,<br />
ORDER[2],<br />
ANGLEUNIT["degree",0.0174532925199433]],<br />
ID["EPSG",4326]]],<br />
ABRIDGEDTRANSFORMATION["Transformation from Moscow to WGS84",<br />
METHOD["Coordinate Frame rotation (geog2D domain)",<br />
ID["EPSG",9607]],<br />
PARAMETER["X-axis translation",316.151,<br />
ID["EPSG",8605]],<br />
PARAMETER["Y-axis translation",78.924,<br />
ID["EPSG",8606]],<br />
PARAMETER["Z-axis translation",589.650,<br />
ID["EPSG",8607]],<br />
PARAMETER["X-axis rotation",1.57273,<br />
ID["EPSG",8608]],<br />
PARAMETER["Y-axis rotation",-2.69209,<br />
ID["EPSG",8609]],<br />
PARAMETER["Z-axis rotation",-2.34693,<br />
ID["EPSG",8610]],<br />
PARAMETER["Scale difference",1.0000084507,<br />
ID["EPSG",8611]]]]<br />
</syntaxhighlight><br />
<br />
В данном случае применена трансформация EPSG:9607 ''Coordinate Frame rotation (geog2D domain)'', но могут быть использованы и другие.<ref>{{Cite web|title = Переход от одной системы координат к другой - методы трансформации|url = https://gis-lab.info/qa/datum-transform-methods.html|website = gis-lab.info|date = 2016-07-09|accessdate = 2020-08-31}}</ref><br />
<br />
N. B.: Мне не удалось подставить элемент BBOX так, чтобы мой QGIS 3.10 воспринял его.<br />
<br />
== Городские системы координат ==<br />
<br />
Это системы основаны на охватывающей зоне СК-42 или СК-63 с дополнительным преобразованием. Обычно это конформное преобразование на плоскости, которое является частным случаем аффинного. В WKT 2 коэффициенты аффинного преобразования таким образом участвуют в формулах перехода от исходной проекции к целевой (городской) системе:<br />
<br />
X2 = A0 + A1 * X1 + A2 * Y1<br />
Y2 = B0 + B1 * X1 + B2 * Y1<br />
<br />
Для примера возьмём определение, обнаруженное в Интернете:<ref>{{Cite web|title = Для файла проекций МИ встречалось…|url = https://geodesist.ru/threads/pomogite-pereschitat-koordinaty-iz-msk-66-v-sk-g-ekaterinburga.38181/page-2#post-874390|website = geodesist.ru|date = 2019-03-28|accessdate = 2020-08-31}}</ref><br />
<br />
<syntaxhighlight lang="csv"><br />
"--- Местная система координат г. Екатеринбург ---"<br />
"уточненная",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<br />
</syntaxhighlight><br />
<br />
Здесь в строке MAPINFOW.PRJ мы видим систему координат на основе базовой проекции СК-63 зона W1 с дополнительным аффинным преобразованием, порядок параметров которого A1, A2, A0, B1, B2, B0.<br />
<br />
Также дан охват Bounds, но он не похож на правду, слишком широк.<br />
<br />
Применим конструкцию DERIVEDPROJCRS, которая дополняет базовую проекцию ''СК-63 зона W1'' аффинным преобразованием:<br />
<br />
<syntaxhighlight lang="wkt"><br />
DERIVEDPROJCRS["Ekaterinburg",<br />
BASEPROJCRS["Pulkovo 1942 / CS63 zone W1",<br />
BASEGEOGCRS["Pulkovo 1942",<br />
DATUM["Pulkovo 1942",<br />
ELLIPSOID["Krassowsky 1940",6378245,298.3,<br />
LENGTHUNIT["metre",1]]],<br />
PRIMEM["Greenwich",0,<br />
ANGLEUNIT["Degree",0.0174532925199433]],<br />
ID["EPSG",4284]],<br />
CONVERSION["CS63 zone C0",<br />
METHOD["Transverse Mercator",<br />
ID["EPSG",9807]],<br />
PARAMETER["Latitude of natural origin",0.1,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8801]],<br />
PARAMETER["Longitude of natural origin",60.05,<br />
ANGLEUNIT["degree",0.0174532925199433],<br />
ID["EPSG",8802]],<br />
PARAMETER["Scale factor at natural origin",1,<br />
SCALEUNIT["unity",1],<br />
ID["EPSG",8805]],<br />
PARAMETER["False easting",1500000,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8806]],<br />
PARAMETER["False northing",0,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8807]]]<br />
],<br />
DERIVINGCONVERSION["Affine",<br />
METHOD["Affine parametric transformation",<br />
ID["EPSG",9624]],<br />
PARAMETER["A0",-1541421.56859,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8623]],<br />
PARAMETER["A1",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8624]],<br />
PARAMETER["A2",0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8625]],<br />
PARAMETER["B0",-6238537.78326,<br />
LENGTHUNIT["metre",1],<br />
ID["EPSG",8639]],<br />
PARAMETER["B1",-0.0077980643,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8640]],<br />
PARAMETER["B2",0.9999960304,<br />
SCALEUNIT["coefficient",1],<br />
ID["EPSG",8641]]],<br />
CS[Cartesian,2],<br />
AXIS["northing (X)",north,<br />
ORDER[1],<br />
LENGTHUNIT["metre",1]],<br />
AXIS["easting (Y)",east,<br />
ORDER[2],<br />
LENGTHUNIT["metre",1]],<br />
USAGE[<br />
SCOPE["unknown"],<br />
AREA["Europe - Russia - Ekaterinburg"],<br />
BBOX[56.6,60.3,57.0,60.9]]]<br />
</syntaxhighlight><br />
<br />
== Выводы ==<br />
<br />
Сконструированы определения WKT 2 для трёх типов МСК, а именно:<br />
* классическая проекция;<br />
* проекция на особом датуме;<br />
* проекция с дополнительным аффинным преобразованием.<br />
<br />
== Примечания ==<br />
<br />
<references /></div>Игорь Белов