Файл параметров мск формата proj 4
Введение : данная статья является второй из серии статей про реализацию систем координат в инфраструктуре продуктов Autodesk. В отличие от первой-фундаментальной, здесь будет рассмотрена частная тема о внесении информации в библиотеку о новой системе координат, отталкиваясь от некоего представления этой СК в строчном/ином виде как готовая формулировка.
Статья рекомендуется к прочтению при необходимости вносить вручную новые определения в библиотеку систем координат
Предыдущую часть см. тут .
Где можно формировать библиотеку?
Сперва акцентируем внимание читателя на том, что в инфраструктуре продуктов Autodesk пользоваться инструментами по созданию и редактированию элементов библиотеки систем кооррдинат можно лишь базово в двух продуктах - AutoCAD Civil 3D и AutoCAD Map 3D. Там за это дело отвечают команды mapcslibrary и _mapcscreate .
Программно также можно создавать и редактировать элементы библиотеки - через набор библиотек OsGeo.MapGuide. dll. Я так не делал, только лишь обращался к библиотеке для извлечения из нее информации по отдельным элементам (подробнее см. следующую Часть 3)
К примеру для установленных AutoCAD версий ХХ путь к библиотекам будет иметь вид:
Примечание : при установке продуктов на диск C
Поэтому далее мы будем показывать процесс создания систем координат сугубо в продукте AutoCAD Civil 3D.
Что такое классическое определение системы координат?
На самом деле, "классическим" назвал его я, формально такие определения могут называться "явными", то есть в виде, из которого мы сможем понять все числовые параметры и занести их в нашу библиотеку.
К числу наиболее популярных форматов относят форматы от MapInfo, WKT/WKT2, PROJ.4. Ниже представлены 3 варианта записи СК для города Санкт-Петербурга
"МСК-1964 СПб ГОСТ 51794-2008", 8, 9999, 3, 23.57, -140.95, -79.8, 0, -0.35, -0.79, -0.22, 0, 7, 30, 0, 1, 95942.17, -6552810.0
Это (выше) формат MapInfo (взято отсюда ).
BOUNDCRS[SOURCECRS[PROJCRS["Russia-MSK1964",BASEGEOGCRS["Unknown datum based upon the Krasovsky-SK42/95 ellipsoid",DATUM["RUSSIA-REF-SK63",ELLIPSOID["Ellipsoid Krasovsky SK-42/95 GOST 32453-2017_4.2.2",6378245,298.30000000,LENGTHUNIT["metre",1,ID["EPSG",9001]]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8901]]],CONVERSION["Russia-MSK1964",METHOD["Transverse Mercator",ID["EPSG",9807]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",30,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["Scale factor at natural origin",1,SCALEUNIT["unity",1],ID["EPSG",8805]],PARAMETER["False easting",95942.17,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",-6552810,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["(E)",east,ORDER[1],LENGTHUNIT["metre",1,ID["EPSG",9001]]],AXIS["(N)",north,ORDER[2],LENGTHUNIT["metre",1,ID["EPSG",9001]]],USAGE[BBOX[59,28,61,32]]]],TARGETCRS[GEOGCRS["WGS 84",DATUM["World Geodetic System 1984",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude(Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude(Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]]],ABRIDGEDTRANSFORMATION["Reference ellipsoid SK-1963 (Krasovsky)",METHOD["Coordinate Frame rotation",ID["EPSG",9607]],PARAMETER["X-axis translation",23.92,ID["EPSG",8605]],PARAMETER["Y-axis translation",-141.27,ID["EPSG",8606]],PARAMETER["Z-axis translation",-80.9,ID["EPSG",8607]],PARAMETER["X-axis rotation",0.00000000,ID["EPSG",8608]],PARAMETER["Y-axis rotation",0.35000000,ID["EPSG",8609]],PARAMETER["Z-axis rotation",0.82000000,ID["EPSG",8610]],PARAMETER["Scale difference",1.00000012,ID["EPSG",8611]]]]
Это (выше) формат WKT2 (сгенерирован вручную средствами пакета MapConnection, читай об этом в Части 3).
+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=95942.17 +y_0=-6552810.0 +ellps=krass +towgs84=23.57,-140.95,-79.8,0,-0.35,-0.79,-0.22 +units=m +no_defs
Это формат PROJ.4
Для чтения форматов рекомендую обратиться к данной статье . Для чистоты эксперимента я удалю все определения из своей библиотеки - чтобы создать все элементы "набело":
- Геопортал Публичной кадастровой карты Росреестра.
- Растровая подложка (растр) из Sas.Планет.
- XML файлы выписок Росреестр по объекту недвижимости или кадастровому плану территории.
Подключение геопортала ПКК
На данный момент подключение геопортала ПКК Росреестра отключено на стороне её разработчиков, то есть данную операцию выполнить пока не возможно. Надеемся на исправление ситуации со стороны Росреестра.
Подключение через сторонний сервис
Для подключения Публичной кадастровой карты возможно использование стороннего прокси сервера. Для этого необходимо просто добавьте два новых слоя в разделе XYZ Tiles:
Или смотрите видео по подключению ПКК через сторонний прокси-сервис.
Обновленное видео по версии QGIS 3.16
Загрузка растра ПКК
Растры с параметрами привязки в QIS удобно подключить в формате ECW, с другими форматами и файлами привязки как то туго, необходимо предварительно конвертировать в удобоваримое для QGIS. Формировать растровую подложку в виде Публичной кадастровой карты можно через программу SAS.Планет.
Если растры имеют иную проекцию, отличную от текущей в проекте, то система координат преобразуется к проекции растра.
Формирование карты через обменные форматы
В качестве формирования векторной кадастровой карты могут выступать xml файлы кадастровых планов территорий Росреестра. Но рабочих вариантов подключения КПТ в QGIS на момент написания статьи нет. Для возможности использования данных кадастровых планов территории приходится использовать обменные форматы данных:
Подключение OGR-совместимых векторных слоев в QGIS
Следует учесть, что при подключении векторных слоев в QGIS необходимо верно указать (выбрать из списка) исходную проекцию данных для каждого из подключаемых файлов.
КПТ в форматах shp, mif/mid и dxf
Кроме этого имеются сторонние онлайн агрегаторы по преобразованию из XML файла в вышеуказанные форматы, но тем самым вы дарите им свои xml-ки. Так что пока приводит данные ресурсы в этой статье не буду.
Подключение местных систем координат
В зависимости от версии QGIS подключение параметров местной системы координат (МСК) производится через следующие форматы:
Формирование пользовательской системы координат в QGIS версии 3.14
В версии QGIS 3.14 прописывание в формате PROJ4 приведет его к преобразованию в WKT формат проекции.
Для общего примера возьмем универсальные параметры местных систем координат для MapInfo. Ниже приведен пример строки проекции МСК-12 зоны 1 в формате для прописывания в файле проекций MapInfo:
«МСК-12 зона 1», 8, 9999, 3, 23.57, -140.95, -79.8, 0, -0.35, -0.79, -0.22, 0, 7, 47.55, 0, 1, 1250000, -5914743.504
МСК в формате PROJ4
+proj=tmerc +lat_0=0 +lon_0=47.55 +k=1 +x_0=1250000 +y_0=-5914743.504 +ellps=krass +towgs84=23.57, -140.95, -79.8, 0, 0.35, 0.79, -0.22 +units=m +no_defsМСК в формате WKT
Вот честно не могу сказать с какой версии произошел переход от proj4 к wkt по прописыванию параметров пользовательских проекций. Но тенденция к переходу к описанию проекций или систем координат через wkt-формат прослеживалась давно и рекомендовалась разработчиками данной программы. Покажем пример формирования такого файла в версии QGIS 3.14.
BOUNDCRS[SOURCECRS[
PROJCRS["MSK-12 zone 1",
BASEGEOGCRS["MSK",
DATUM["Unknown based on Krassovsky, 1942 ellipsoid",
ELLIPSOID["Krassovsky, 1942",6378245,298.3,
LENGTHUNIT["metre",1,
ID["EPSG",9001]]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8901]]],
CONVERSION["unknown",
METHOD["Transverse Mercator",
ID["EPSG",9807]],
PARAMETER["Latitude of natural origin",0,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8801]],
PARAMETER["Longitude of natural origin",47.55,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8802]],
PARAMETER["Scale factor at natural origin",1,
SCALEUNIT["unity",1],
ID["EPSG",8805]],
PARAMETER["False easting",1250000,
LENGTHUNIT["metre",1],
ID["EPSG",8806]],
PARAMETER["False northing",-5914743.504,
LENGTHUNIT["metre",1],
ID["EPSG",8807]]],
CS[Cartesian,2],
AXIS["(E)",east,
ORDER[1],
LENGTHUNIT["metre",1,
ID["EPSG",9001]]],
AXIS["(N)",north,
ORDER[2],
LENGTHUNIT["metre",1,
ID["EPSG",9001]]]]],
TARGETCRS[
GEOGCRS["WGS 84",
DATUM["World Geodetic System 1984",
ELLIPSOID["WGS 84",6378137,298.257223563,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
CS[ellipsoidal,2],
AXIS["geodetic latitude (Lat)",north,
ORDER[1],
ANGLEUNIT["degree",0.0174532925199433]],
AXIS["geodetic longitude (Lon)",east,
ORDER[2],
ANGLEUNIT["degree",0.0174532925199433]],
ID["EPSG",4326]]],
ABRIDGEDTRANSFORMATION["Transformation from unknown to WGS84",
METHOD["Position Vector transformation (geog2D domain)",
ID["EPSG",9606]],
PARAMETER["X-axis translation",23.57,
ID["EPSG",8605]],
PARAMETER["Y-axis translation",-140.95,
ID["EPSG",8606]],
PARAMETER["Z-axis translation",-79.8,
ID["EPSG",8607]],
PARAMETER["X-axis rotation",0,
ID["EPSG",8608]],
PARAMETER["Y-axis rotation",0.35,
ID["EPSG",8609]],
PARAMETER["Z-axis rotation",0.79,
ID["EPSG",8610]],
PARAMETER["Scale difference",0.99999978,
ID["EPSG",8611]]]]
Кадастровое деление территории
В новой версии публичной кадастровой карты была преобразована отдача границ кадастрового деления в виде векторных тайлов, что позволило получать эти границы в векторном формате. Как это делается представлено в следующем видео, где показывается 2-а варианта получения границ кадастрового деления по необходимой территории:
Для кого этот пост — картографы, геодезисты, генпланисты, строители и т.д.
Решаемая проблема — получение 100% достоверных параметров для пересчета координат, например в привычные картографические градусы (WGS84). Коллеги уже поняли про что я, а любопытным поясню — дело в том, что гуляющие по интернету приложения и алгоритмы с параметрами пересчета координат например из выписки ЕГРН на вашу дачу в координаты для GPS приемника, в подавляющем большинстве будут «лаптем по карте». Для поиска объекта размером с дом, это не будет проблемой, а вот для инженерной затеи, уже слабовата точность. К примеру мы хотим обозначить границы на местности с сантиметровой точностью, найти трубу под землей или кабель, запустить беспилотник по картам с плоскими координатами, чертить чертеж в плоских координатах с картографической онлайн основой из интернета и многое другое, что требует субметровой точности.
Почему точные координаты становятся не точными
Плоские метровые координаты, знакомые нам из сведений о нашей недвижимости или из проектов и чертежей очень точны локально, но для привязки их к земному шару одной математики мало. Дело в том, что математическая модель «плоской, метровой» системы координат из документов, сначала была реализована на местности в виде геодезических пунктов, с точностью тех технологий, какие были на тот момент (в РФ большая часть систем координат развита в советское время и действуют по сей день). И уже потом от этих геодезических пунктах первого класса, создавались другие, от тех еще другие, от них всех производные секретные системы координат такие как СК63 с разворотами и искажениями координатной сетки, дабы врага запутать. При каждом таком преобразовании допускались искажения, незначительные, но нарастают они не линейно относительно количества преобразований, а намного прогрессивнее. В итоге большая часть координатных сеток сейчас похожа на чуть помятую и стянутую с одного края простыню. Именно поэтому 99% геокалькуляторов не спасут Вас от «помятой простыни» координатной сетки. Есть несколько геодезических сервисов для пересчета координат, платных, могу предположить, что там люди считают не по теоретическим параметрам системы координат, а обладают всеми параметрами «помятой простыни». В большей части РФ надо рассчитывать параметры системы координат для небольших территорий, радиус этих территорий часто не превышает 15км. При таких небольших территориях искажения координатной сетки часто не превышает сантиметра, система координат очень точно «лежит» на земном шаре. Если Ваш интерес вылезает за 20-30км пространства, то необходимо несколько локальных параметров перехода рассчитывать на меньшие территории, дробить систему координат на более мелкие подзоны.
Изобретаем велосипед?
Для целей расчета истинных параметров систем координат оказывается «вагон» ПО. Правда это как правило составляющие сложных и дорогостоящих профессиональных программных комплексов для геодезии и картографии, которые далеко не всем профессионалам даже нужны, еще часть ПО работает на винде с непонятными и сложно употребляемыми форматами файлов. Есть еще варианты из командной строки. Вдохновившись статьей на профильном форуме решили написать своё ПО с блекджеком и вебом.
Расскажу кратко, как это работает
Для расчета параметров нам нужны три точки (можно больше, будет точнее) в двух системах координат, в WGS и в той самой местной системе координат, параметры которой Вы хотите знать. Плоские метровые координаты берем из каталогов, кадастровых планов территорий, карточек привязок и т.д. Градусные координаты или из тех же источников, либо часто используем координаты GNSS базовых станций, либо берем спутниковый приемник, и просто замеряем эти известные в плоских координатах точки.
Веб форма высчитывает параметры системы координат и выводит на экран в двух популярных и применимых в 99% ГИС системах форматах — proj строка и WKT.
Тут немного рассказов про те самые параметры и немного терминологии
Геоцентрическая система координат, это система где есть три пространственные координатные оси проходящие через центр земли. Координаты в такой системе имеют вид x,y,z или привычные нам широта и долгота измеряемые градусами угла от нулевой точки через землю lat long h. При этом высота h отсчитывается не от центра земли как в первом случае, а от эллипсоида, сферы, геоида (упрощённой модели поверхности земли).
Прямоугольная система координат — система координат построенная на поверхности земли пренебрегающая её «округлостью». Такие системы координат очень удобны в использовании на небольших расстояниях, позволяют не проводить сложных математических операций для расчёта привычных нам расстояний на поверхности земли. Такие СК часто применяются в строительстве, картографии, геодезии.
Местная система координат (МСК) — как правило прямоугольная система координат, обслуживающая небольшую локальныю территорию. Часто распостраняется на территорию района или города, где её искажения не критичны для точности строительства, кадастра и т.д.
Параметры системы координат состоят из нескольких отдельных параметров, опишем каждый из них. Возьмём строку параметров PROJ4 (MapInfp, ArcGIS и т. д. Так же используют эти параметры, только структура записи иная): +proj=omerc +lat_0=59.8338730825 +lonc=33 +alpha=-0.0001 +gamma=-1.771957267229058 +k=0.9996584453038837 +x_0=2365031.423134961 +y_0=426397.2888527482 +ellps=krass
Модель земного шара (+ellps=krass)— в нашем случае это эллипсоид Красовского. Под этим названием эллипсоида скрывается параметры примерного описания земного шара: направление координатных осей и углы между осями, диаметр, сжатие на полюсах и т. д. Выбрать необходимый эллипсоид можно опытным путём либо зная основываясь на какой системы координат родилась интересующая вас МСК. На территории РФ, большая часть МСК выходцы из СК42 с эллипсоидом Красовского.
Проекция земного шара на плоскость (+proj=omerc) — метод с помощью которого прямоугольные координаты проецируются за круглую землю. Самый распространённый алгоритм это «апельсиновые дольки», если порезать апельсин по долькам, отделить от долек шкурки.
Расправленную шкурку положить на лист в клетку и получится проекция Меркатора. Бывают разные проекции с разными направлениями и размерами долек, бывают цилиндрические проекции, это когда апельсин превращают в цилиндр и раскатывают кожуру на плоскость, конические и т. д. Выбрать необходимую можно опытным путём либо зная основываясь на какой системы координат родилась интересующая вас МСК. На территории РФ, большая часть МСК выходцы из СК42 с проекцией Меркатора. Для точных локальных параметров МСК на малых территориях рекомендуем применять косую проекцию Меркатора (omerc).
Центр проекции в градусах (+lat_0=59.8338730825 +lonc=33) — это то место, где расправленная «шкурка апельсина» меньше меньше всего растягивается для достижения плоскости (обычно серединка шкурки дольки), место с наименьшими искажениями. Грубо говоря место где плоский лист МСК прикасается к шарику нашей планеты. Часто для центральной точки выбирают точку центра района геодезических работ.
Развороты (+alpha=-0.0001 +gamma=-1.771957267229058) разворот осей координат МСК относительно меридиана.
Масштабный коэффициент (+k=0.9996584453038837), в идеале должен быть единицей. Показывает, на сколько реальное расстояние отличается от координатного. С помощью масштаба можно сразу прикинуть, как увеличивается искажение размеров при отдалении от центральной точки МСК.
Координаты центра проекции в метрах (+x_0=2365031.423134961 +y_0=426397.2888527482), можно рассматривать как значение смещения начала отсчёта координат в плоской МСК.
Обзор поддержки проекций¶
QGIS поддерживат порядка 2700 известных проекций. Описание каждой из них хранится в специальной базе данных SQLite, устанавливаемой одновременно с QGIS. Непосредственная работа с ней не предусмотрена, поскольку данная процедура может привести к полному отказу поддержки проекций. Описание пользовательских проекций хранится отдельно, в пользовательской базе данных. За информацией об управлении пользовательскими проекциями обратитесь к разделу Пользовательские системы координат.
Все проекции в QGIS основаны на базе идентификаторов European Petroleum Group (ESPG) и Institut Geographique National of France (IGNF) и в значительной степени абстрагированы от таблицы spatial_references в PostGIS версии 1.x. EPSG-коды хранятся в базе данных и могут быть использованы для определения проекции.
Всякий раз, когда происходит выбор новой проекции, используемые единицы слоя автоматически изменяются, что можно увидеть, перейдя во вкладку Общие диалогового окна Свойства проекта, открываемого по нажатию кнопки Проект (Gnome, OS X) или Настройки (KDE, Windows).
Настройка системы координат по умолчанию¶
QGIS создаёт новые проекты с использованием системы координат по умолчанию. Изначально используется система координат EPSG:4326 - WGS 84 ( proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs ), это значение можно изменить, нажав кнопку [Выбрать] в первой группе настроек во вкладке Система координат (см. рисунок figure_projection_1). Указанное значение будет использоваться по всех последующих сеансах работы.
Figure Projection 1:
Вкладка «Система координат» в диалоге настройки QGIS
При загрузке в проект слоёв, не содержащих информации о проекции, необходимо иметь возможность контролировать и определять проекции таких слоёв. Проекции могут быть установлены глобально или на уровне проекта. Для выполнения этой операции перейдите во вкладку Система координат окна, открываемого через Установки ‣ Параметры.
На рисунке figure_projection_1 показаны возможные варианты:
Запрашивать систему координат
Использовать систему координат проекта
Использовать указанную систему координат
Если необходимо задать проекцию для слоя, в котором информация о ней отсутствует, то это можно сделать во вкладке Общие окна свойств растрового (см. General Menu) или векторного (см. Общие) слоя. Если слой уже содержит информацию о проекции, то вкладка будет выглядеть как показано на рисунке Свойства векторного слоя .
Установка системы координат из списка слоёв
Контекстное меню слоя (см. раздел Легенда) содержит два элемента для работы с системой координат. Пункт меню Изменить систему координат вызывает диалог Выбор системы координат (см. рисунок figure_projection_2). А пункт Выбрать систему координат слоя для проекта устанавливает систему координат проекта равной системе координат слоя.
Перепроецирование «на лету»¶
QGIS поддерживает перепроецирование растровых и векторных слоёв «на лету», но по умолчанию эта возможность отключена. Для её активации необходимо установить флажок Включить автоматическое перепроецирование координат на вкладке Система координат диалогового окна Свойства проекта.
Существует три способа доступа к указанной вкладке:
Выберите пункт Свойства проекта в меню Проект (Gnome, OS X) или Установки (KDE, Windows).
Включить преобразование координат «на лету» по умолчанию на вкладке Система координат диалога Параметры активировав флажок Включить преобразование координат «на лету».
Если имеется загруженный в проект слой и вы желаете включить перепроецирование «на лету», то откройте вкладку Система координат диалогового окна Свойства проекта, выберите проекцию и отметьте пункт Включить автоматическое перепроецирование координат. Значок Преобразование координат станет активным и все последующие загружаемые слои будут автоматически перепроецироваться в выбранную проекцию.
Figure Projection 2:
Свойста проекта
Вкладка Система координат диалогового окна Свойства проекта содержит пять важных компонентов, показанных на рисунке Figure_projection_2 и описанных ниже.
Диалоговое окно Свойства проекта
Если открыть Свойства проекта из меню Проект (Gnome, OS X) или Установки (KDE, Windows), то для доступа к настройкам проекций нужно перейти во вкладку Система координат.
Нажатие кнопки Преобразование координат , открывает вкладку Система координат автоматически.
Пользовательские системы координат¶
Если вы не нашли нужной проекции, то можно определить собственную. Для этого выберите пункт Ввод системы координат меню Установки. Пользовательские проекции хранятся в пользовательской базе данных. Помимо собственных проекций эта база содержит пространственные закладки и прочую информацию.
Figure Projection 3:
Определение пользовательской системы координат
Данное руководство описывает использование proj.4 и связанных утилит командной строки. Картографичские параметры, используемые в proj.4 , описаны в руководстве и совпадают с используемыми в QGIS.
В диалоговом окне Определение пользовательской системы координат требуется всего два параметра для определения собственной проекции:
картографические параметры в формате PROJ.4
Для создания новой системы координат нажмите кнопку Новая , укажите имя и введите необходимые параметры. После чего созданную проекцию можно сохранить нажав кнопку Сохранить .
Отметим, что значение поля Параметры создаваемой проекции должно начинаться со строки +proj= .
Читайте также: