Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 15 янв 2025, 12:29
- Репутация: 0
- Откуда: Красноярск
Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя
Всем добрый день.
Имеется слой, допустим из PostgreSQL. В нем есть строка, с заполненными атрибутами, но нулевой геометрией.
Имеется мап-инфовский tab, из него надо геометрию присвоить строке в слое PostgreSQL, которая без геометрии.
Правка -> изменить геометрию -> добавить часть - этот метод знаю, но там надо вручную вершины протыкивать.
Хотелось бы как-то полигон целиком присвоить/скопировать.
Подскажите, есть какие-либо инструменты?
Имеется слой, допустим из PostgreSQL. В нем есть строка, с заполненными атрибутами, но нулевой геометрией.
Имеется мап-инфовский tab, из него надо геометрию присвоить строке в слое PostgreSQL, которая без геометрии.
Правка -> изменить геометрию -> добавить часть - этот метод знаю, но там надо вручную вершины протыкивать.
Хотелось бы как-то полигон целиком присвоить/скопировать.
Подскажите, есть какие-либо инструменты?
-
- Завсегдатай
- Сообщения: 420
- Зарегистрирован: 24 мар 2022, 05:54
- Репутация: 162
- Ваше звание: хм, сам не знал
- Откуда: Томск
Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя
Есть общие атрибуты в postgre/tab, например id?
-
- Завсегдатай
- Сообщения: 420
- Зарегистрирован: 24 мар 2022, 05:54
- Репутация: 162
- Ваше звание: хм, сам не знал
- Откуда: Томск
Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя
если есть - несколько вариантов, от 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' ) ) )
Например,
- 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 раза.
-
- Завсегдатай
- Сообщения: 420
- Зарегистрирован: 24 мар 2022, 05:54
- Репутация: 162
- Ваше звание: хм, сам не знал
- Откуда: Томск
Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя
если ни как не связаны, модули типа Numerical Digitize, там можно копировать-вставлять координаты.. Но кажется, быстрее присвоить id объектам из слоя tab
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 15 янв 2025, 12:29
- Репутация: 0
- Откуда: Красноярск
Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя
Нет, общих атрибутов нет, и это нужно сделать не для всех строк, а для одной конкретной, с того и другого слоя.
Попробую плагин.
Попробую плагин.
-
- Завсегдатай
- Сообщения: 420
- Зарегистрирован: 24 мар 2022, 05:54
- Репутация: 162
- Ваше звание: хм, сам не знал
- Откуда: Томск
Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя
Ок, если что, через таблицу: выделяете объект в таб слое, Скопировать. В буфере будет wkt.
Таблица целевого слоя, находите нужную запись, выделяете. Калькулятор выражений, обновить поле геометрии, для Выделенных, в выражение: geom_from_wkt(вставить Polygon())
Таблица целевого слоя, находите нужную запись, выделяете. Калькулятор выражений, обновить поле геометрии, для Выделенных, в выражение: geom_from_wkt(вставить Polygon())
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 15 янв 2025, 12:29
- Репутация: 0
- Откуда: Красноярск
Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя
Да, хороший вариант. Подскажите пожалуйста как называется эта функция?
-
- Завсегдатай
- Сообщения: 420
- Зарегистрирован: 24 мар 2022, 05:54
- Репутация: 162
- Ваше звание: хм, сам не знал
- Откуда: Томск
Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя
функция geom_from_wkt(), в скобки вставить геометрию, такую как polygon(..) или multypolygon(..), а эту геометрию получите, выделив объект на карте и нажав Скопировать. В буфере обмена будет объект в формате wkt вместе с атрибутами. Атрибуты нам не нужны, их очищаем текстовым редактором, можно прямо в этом окне
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 15 янв 2025, 12:29
- Репутация: 0
- Откуда: Красноярск
Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя
Вроде получилось, но почему-то кнопка "Ок" серенькая, чего-то не хватает.
-
- Завсегдатай
- Сообщения: 420
- Зарегистрирован: 24 мар 2022, 05:54
- Репутация: 162
- Ваше звание: хм, сам не знал
- Откуда: Томск
Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя
где то ошибка синтаксиса, типа лишней не парной скобки и т.п
-
- Завсегдатай
- Сообщения: 420
- Зарегистрирован: 24 мар 2022, 05:54
- Репутация: 162
- Ваше звание: хм, сам не знал
- Откуда: Томск
Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя
может знаков после запятой слишком много
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 15 янв 2025, 12:29
- Репутация: 0
- Откуда: Красноярск
Re: Присвоение геометрии строке с нулевой геометрией, геометрию из другого слоя
Выражение 'Polygon(())' надо было заключить в кавычки.
Благодарю за помощь, все замечательно.
Благодарю за помощь, все замечательно.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя