Проекции пользователя в PostGIS

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
konst555
Активный участник
Сообщения: 210
Зарегистрирован: 11 авг 2015, 16:13
Репутация: 45

Проекции пользователя в PostGIS

Сообщение konst555 » 04 июн 2021, 08:54

Есть большое количество данных в нестандартных проекциях. В частности, всякие разновидности проекции Меркатора. Они определены в базе QGIS поэтому при хранении в виде Shape-ов проблем при добавлении в проект не возникает.
Если сохранять объекты с нестандартными проекциями в базу данных Postgree, то проекция теряется, т.к. в таблице PostGIS - "spatial_ref_sys" такой проекции нет. Пробовал тупо вручную прописать, но не получилось.

Как перенести пользовательскую проекцию из qgis.db в spatial_ref_sys, чтобы при импорте-экспорте слоев в базу данных сохранялась пользовательская проекция?
Есть ли какие-либо утилиты или плагины для управления или импорта проекций в PostGIS?

Vadim
Завсегдатай
Сообщения: 297
Зарегистрирован: 03 июн 2015, 10:19
Репутация: 72

Re: Проекции пользователя в PostGIS

Сообщение Vadim » 04 июн 2021, 11:40


konst555
Активный участник
Сообщения: 210
Зарегистрирован: 11 авг 2015, 16:13
Репутация: 45

Re: Проекции пользователя в PostGIS

Сообщение konst555 » 04 июн 2021, 14:14

Спасибо, я видел эту ссылку. Во многом уже разобрался, но не до конца.
1. Как добавить пользовательскую проекцию, чтобы она была аналогична назначенной в QGIS?
Открываю qgis.db в DB Browser for SQLite, открываю spatial_ref_sys в pgAdmin4, добавляю новую запись spatial_ref_sys, пишу srid, auth_srid такие же как в qgis, копирую содержимое поля proj4 из одной таблицы в другую. Теперь надо скопировать в srtext описание в формате WKT. Стоп! Они сильно отличаются! Что делать? Сначала написал новый по аналогии с полями в spatial_ref_sys, потом пробовал вставить как есть - без разницы. Сохраняем исправления. У вас есть новая проекция с вашим srid. (Причем, для этого можно даже не знать язык sql :-)
2. Однако, при экспорте в базу данных слоя с вашей проекцией qgis все-равно выставляет srid=0, но если вы используете утилиту shp2pgsql, даже через ее GUI, то можете вручную выставить srid нужное значение. При этом атрибуты геометрии в базе данных будут содержать ссылку на вашу новую проекцию.
Если все-таки размещали слой в базу при помощи средств qgis, то srid можно исправить и проверить при помощи запроса:
SELECT UpdateGeometrySRID('mm_bathymetry_vectors','Reprojected', 'geom', 100000);
SELECT Find_SRID('mm_bathymetry_vectors', 'Reprojected', 'geom')
Ответ будет 100000.
3. После всего этого, вставляя слой в проект вы получите слой содержащий проекцию. НО это будет пользовательская проекция без названия и srid !!! Возможно это сделано специально или из базы читается только proj4.

Вот и возникают вопросы:
Как упростить весь этот процесс? Можно ли согласовать пользовательские проекции?

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

Аватара пользователя
Эдуард Казаков
Гуру
Сообщения: 546
Зарегистрирован: 23 апр 2014, 17:11
Репутация: 532
Откуда: Planet Earth
Контактная информация:

Re: Проекции пользователя в PostGIS

Сообщение Эдуард Казаков » 04 июн 2021, 16:41

Извините, что с вопросом, а не советом - а какой замыслел в том, чтобы в одной БД данные хранить а) в разных б) экзотических системах координат? Обычно в PostGIS поступают так: хранят всё в одной унифицированной СК, про которую все знают, а если вдруг понадобится в другой, конвертируют на лету в запросе к данным, либо возлагают это на клиентское приложение.

zahar.kondrat7
Новоприбывший
Сообщения: 2
Зарегистрирован: 04 июн 2021, 16:52
Репутация: -1
Откуда: Харьков
Контактная информация:

Re: Проекции пользователя в PostGIS

Сообщение zahar.kondrat7 » 04 июн 2021, 16:58

Напишите в специальном разделе и предложите небольшую плата за эту работу. Я думаю желающие появятся

konst555
Активный участник
Сообщения: 210
Зарегистрирован: 11 авг 2015, 16:13
Репутация: 45

Re: Проекции пользователя в PostGIS

Сообщение konst555 » 07 июн 2021, 11:37

Эдуард Казаков писал(а):
04 июн 2021, 16:41
какой замыслел в том, чтобы в одной БД данные хранить а) в разных б) экзотических системах координат?
Все просто:
а) как правило, данные получаются из разных источников, имеют разные СК. Чаще всего часть в географических, часть в проективных координатах.
б) есть такая штука - отчетная система координат. Иногда даже задают системы преобразования координат. В ArcGIS была даже такая табличка - точность преобразований для каждой СК. Поэтому выбирается СК обеспечивающая требуемую точность, пусть даже и экзотическая. Другая причина, использование бумажной карты. Например, для морских работ используют проекцию Меркатора, но без масштабной рамки будет очень не просто измерить на ней расстояние.Масштаб вашего проекта будет соблюдаться только на экваторе. Поэтому создается новая проекция со средней широтой района работ (+ts). Тут-то все и начинается. Кто-то перевел в эту проекцию, какая-то программа не позволила и оставили в нулевом Меркаторе, что-то осталось в градусах.

Замысел в том, чтобы не заморачиваться со всем этим, а хранить как есть, но чтобы процесс был простым и прозрачным.
Эдуард Казаков писал(а):
04 июн 2021, 16:41
если вдруг понадобится в другой, конвертируют на лету в запросе к данным, либо возлагают это на клиентское приложение.
Про это я уже написал:
konst555 писал(а):
04 июн 2021, 14:14
, а в проекте уже вручную присваивать, пока не забудешь что там была за проекция...

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей