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