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

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

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

Сообщение Kbigeo »

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

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

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

Сообщение AlexRomantsov »

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

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

Сообщение AlexRomantsov »

если есть - несколько вариантов, от 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 »

если ни как не связаны, модули типа Numerical Digitize, там можно копировать-вставлять координаты.. Но кажется, быстрее присвоить id объектам из слоя tab
Kbigeo
Новоприбывший
Сообщения: 6
Зарегистрирован: 15 янв 2025, 12:29
Репутация: 0
Откуда: Красноярск

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

Сообщение Kbigeo »

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

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

Сообщение AlexRomantsov »

Ок, если что, через таблицу: выделяете объект в таб слое, Скопировать. В буфере будет wkt.
Таблица целевого слоя, находите нужную запись, выделяете. Калькулятор выражений, обновить поле геометрии, для Выделенных, в выражение: geom_from_wkt(вставить Polygon())
Kbigeo
Новоприбывший
Сообщения: 6
Зарегистрирован: 15 янв 2025, 12:29
Репутация: 0
Откуда: Красноярск

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

Сообщение Kbigeo »

Да, хороший вариант. Подскажите пожалуйста как называется эта функция?
AlexRomantsov писал(а): 21 мар 2025, 12:51 вставить Polygon()
AlexRomantsov
Завсегдатай
Сообщения: 420
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 162
Ваше звание: хм, сам не знал
Откуда: Томск

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

Сообщение AlexRomantsov »

функция geom_from_wkt(), в скобки вставить геометрию, такую как polygon(..) или multypolygon(..), а эту геометрию получите, выделив объект на карте и нажав Скопировать. В буфере обмена будет объект в формате wkt вместе с атрибутами. Атрибуты нам не нужны, их очищаем текстовым редактором, можно прямо в этом окне
Kbigeo
Новоприбывший
Сообщения: 6
Зарегистрирован: 15 янв 2025, 12:29
Репутация: 0
Откуда: Красноярск

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

Сообщение Kbigeo »

Вроде получилось, но почему-то кнопка "Ок" серенькая, чего-то не хватает.
Snimok.JPG
Snimok.JPG (118.11 КБ) 1515 просмотров
AlexRomantsov
Завсегдатай
Сообщения: 420
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 162
Ваше звание: хм, сам не знал
Откуда: Томск

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

Сообщение AlexRomantsov »

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

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

Сообщение AlexRomantsov »

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

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

Сообщение Kbigeo »

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

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

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

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