Подскажите запрос точка/линия

Ответить
sanyasi
Активный участник
Сообщения: 115
Зарегистрирован: 18 ноя 2009, 11:31
Репутация: 0

Подскажите запрос точка/линия

Сообщение sanyasi » 11 май 2011, 14:26

Добрый день!

Подскажите запрос postgresql+postgis.

Есть два слоя - точки и линии.

Некоторые узлы линий соприкасаются с точками слоя точек.

Необходимо при изменении положения точки (на слое точек) изменить координаты только того узла линии который с ней соприкасался, чтобы они снова совпадали, причем с точкой могут соприкасаться несколько линий, причем, как своим началом, концом, и промежуточной точкой.


Как понимаю нужен триггер и соответствующий запрос.

sdikiy
Участник
Сообщения: 54
Зарегистрирован: 15 янв 2011, 23:03
Репутация: 1
Откуда: Ukraine

Re: Подскажите запрос точка/линия

Сообщение sdikiy » 12 май 2011, 13:21

Код: Выделить всё

UPDATE table_line
	SET line_geom=ST_SetPoint(line_geom, g.point_num, NEW.point_geom)
	FROM
		(SELECT 
			t.id, (ST_DumpPoints(t.line_geom)).path[1]-1 as point_num,
			ST_Distance(OLD.point_geom, (ST_DumpPoints(t.line_geom)).geom) as d
			FROM table_line t
		) AS g
WHERE table_line.id = g.id and g.d < 0.01;
это только идея, в этом куске два глобальных недочета... будет приемлемо работать только на очень маленькой базе (во внутренний запрос нужно добавить WHERE), внешний запрос будет менять только одну точку в геометрии, а если ему подсунуть MULTILINESTRING или GEOMETRYCOLLECTION... не знаю что получится :-)

Ответить

Вернуться в «PostGIS/PostgreSQL»

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

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