Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Kbigeo
Новоприбывший
Сообщения: 6
Зарегистрирован: 15 янв 2025, 12:29
Репутация: 0
Откуда: Красноярск

Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя

Сообщение Kbigeo » 21 мар 2025, 06:55

Всем добрый день.
Имеется слой, допустим из PostgreSQL. В нем есть строка, с заполненными атрибутами, но нулевой геометрией.
Имеется мап-инфовский tab, из него надо геометрию присвоить строке в слое PostgreSQL, которая без геометрии.
Правка -> изменить геометрию -> добавить часть - этот метод знаю, но там надо вручную вершины протыкивать.
Хотелось бы как-то полигон целиком присвоить/скопировать.

Подскажите, есть какие-либо инструменты?

AlexRomantsov
Завсегдатай
Сообщения: 420
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 162
Ваше звание: хм, сам не знал
Откуда: Томск

Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя

Сообщение AlexRomantsov » 21 мар 2025, 08:56

Есть общие атрибуты в postgre/tab, например id?

AlexRomantsov
Завсегдатай
Сообщения: 420
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 162
Ваше звание: хм, сам не знал
Откуда: Томск

Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя

Сообщение AlexRomantsov » 21 мар 2025, 09:04

если есть - несколько вариантов, от sql запроса до коленных сборок.
Например,
- tab сохраняем во что то редактируемое, например в shp (не обязательно, можно создать виртуальное поле в TAB). Таблица, калькулятор полей - geom_to_wkt($geometry), результат в новое текстовое поле (или виртуальное)
- слой postgres, Свойства, Связи, Добавить связанный (shp), присоединить наше поле wkt
- слой postgres, таблица, калькулятор полей - geom_from_wkt( поле_wkt_из_shp), этим обновить поле <geometry>

Это ручной метод, зато можно (в таблице атрибутов слоя postgres с присоединенным wkt) просмотреть - остались ли не связанные записи, оценить результат до момента обновления геометрии в слое postgres. В tab могут встретится неожиданности (коллекции, точки, текстовые объекты) - в поле-тексте wkt это можно отловить. Не создаются промежуточные слои. При сохранении геометрии (wkt) из tab можно сразу трансформировать в нужную систему координат ( geom_to_wkt(transform($geometry, 'EPSG:2154', 'EPSG:4326' ) ) )
Последний раз редактировалось AlexRomantsov 21 мар 2025, 10:57, всего редактировалось 2 раза.

AlexRomantsov
Завсегдатай
Сообщения: 420
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 162
Ваше звание: хм, сам не знал
Откуда: Томск

Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя

Сообщение AlexRomantsov » 21 мар 2025, 09:47

если ни как не связаны, модули типа Numerical Digitize, там можно копировать-вставлять координаты.. Но кажется, быстрее присвоить id объектам из слоя tab

Kbigeo
Новоприбывший
Сообщения: 6
Зарегистрирован: 15 янв 2025, 12:29
Репутация: 0
Откуда: Красноярск

Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя

Сообщение Kbigeo » 21 мар 2025, 11:44

Нет, общих атрибутов нет, и это нужно сделать не для всех строк, а для одной конкретной, с того и другого слоя.
Попробую плагин.

AlexRomantsov
Завсегдатай
Сообщения: 420
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 162
Ваше звание: хм, сам не знал
Откуда: Томск

Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя

Сообщение AlexRomantsov » 21 мар 2025, 12:51

Ок, если что, через таблицу: выделяете объект в таб слое, Скопировать. В буфере будет wkt.
Таблица целевого слоя, находите нужную запись, выделяете. Калькулятор выражений, обновить поле геометрии, для Выделенных, в выражение: geom_from_wkt(вставить Polygon())

Kbigeo
Новоприбывший
Сообщения: 6
Зарегистрирован: 15 янв 2025, 12:29
Репутация: 0
Откуда: Красноярск

Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя

Сообщение Kbigeo » 24 мар 2025, 06:51

Да, хороший вариант. Подскажите пожалуйста как называется эта функция?
AlexRomantsov писал(а):
21 мар 2025, 12:51
вставить Polygon()

AlexRomantsov
Завсегдатай
Сообщения: 420
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 162
Ваше звание: хм, сам не знал
Откуда: Томск

Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя

Сообщение AlexRomantsov » 24 мар 2025, 08:05

функция geom_from_wkt(), в скобки вставить геометрию, такую как polygon(..) или multypolygon(..), а эту геометрию получите, выделив объект на карте и нажав Скопировать. В буфере обмена будет объект в формате wkt вместе с атрибутами. Атрибуты нам не нужны, их очищаем текстовым редактором, можно прямо в этом окне

Kbigeo
Новоприбывший
Сообщения: 6
Зарегистрирован: 15 янв 2025, 12:29
Репутация: 0
Откуда: Красноярск

Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя

Сообщение Kbigeo » 24 мар 2025, 09:59

Вроде получилось, но почему-то кнопка "Ок" серенькая, чего-то не хватает.
Snimok.JPG
Snimok.JPG (118.11 КБ) 1492 просмотра

AlexRomantsov
Завсегдатай
Сообщения: 420
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 162
Ваше звание: хм, сам не знал
Откуда: Томск

Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя

Сообщение AlexRomantsov » 24 мар 2025, 11:34

где то ошибка синтаксиса, типа лишней не парной скобки и т.п

AlexRomantsov
Завсегдатай
Сообщения: 420
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 162
Ваше звание: хм, сам не знал
Откуда: Томск

Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя

Сообщение AlexRomantsov » 24 мар 2025, 12:13

может знаков после запятой слишком много

Kbigeo
Новоприбывший
Сообщения: 6
Зарегистрирован: 15 янв 2025, 12:29
Репутация: 0
Откуда: Красноярск

Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя

Сообщение Kbigeo » 24 мар 2025, 12:22

Выражение 'Polygon(())' надо было заключить в кавычки.
Благодарю за помощь, все замечательно.

Ответить

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

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

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