Я пытаюсь создать таблицу, содержащую пересечения в месте пересечения каждой дороги Roadname 1 & Roadname 2
, а также геометрические пространственные данные для пересечения ST_Intersection(a.geom, b.geom)
Но, похоже, это не так Я не работаю. Я довольно новичок в postgres, и мне интересно, есть ли способ сделать это? Вот что я имею в виду:
Create Table roads(
intid_ integer,
muni text,
alias_ text,
roadnames text,
geom geometry);
Insert into roads (roadnames, geom, intid_, alias_)
SELECT
trim(student.sc_e911slrn.prefix) || trim(student.sc_e911slrn.name) || trim(student.sc_e911slrn.suffix),
geom, objectid, alias
FROM student.sc_e911slrn;
--------------------------------------------------------------------
CREATE type student.inter AS (
roadnames text,
intid_ int,
alias_ text,
muni text,
ST_Intersection geometry,
geom geometry);
--< Cursor >--------------------------------------------------------
Create function create_intersections()
/*returns table student.intersect_roads As $method1$*/
RETURNS table (
roadnames text,
intid_ int,
alias_ text,
muni text,
ST_Intersection geometry,
geom geometry) As $$
Declare
return_intersect inter;
rec_road Record;
cur_road Cursor()
For Select intid_, geom, roadnames
From student.roads;
Begin
Open cur_road();
Loop
fetch cur_road into rec_road;
exit when not found;
If ST_Touches(rec_road.geom, student.roads.geom) AND
rec_road.geom != student.roads.geom AND
rec_road.intid_ != student.roads.intid_
Then Update student.intersect_road
Set st_intersection = ST_Intersection (rec_road.geom, student.roads.geom),
intid_ = rec_road.intid_,
intersections = rec_road.roadnames|| ' & ' || student.raods.roadnames,
alias_ = rec_road.alias_,
/*muni = */
polyline = ST_Union(rec_road.geom, student.roads.geom)
RETURNING * into return_intersect;
RETURN NEXT;
End if;
End Loop;
Close cur_road;
RETURN;
End;
$$ Language plpgsql;
--< return the table>----------------------------------------------
SELECT create_intersections();
Roadname 1 & Roadname 2
должен быть сгенерирован из roadnames
столбца из таблицы ROADS
, а геометрия для пересечения ST_Intersection(a.geom, b.geom)
должна быть сгенерирована из geom
столбец из ROADS
таблицы. Когда я запускаю его, он возвращает без результата .
Таблица ROADS выглядит примерно так таблица дорог , ( представление геометрии ):
Intid_ Muni Alias_ Roadnames geom
24581722 NULL CR 52 Coopers Falls road ...
24581723 NULL CR 44 Rama road ...
Ожидаемый результат должен быть похож на этот, но нам нужно заполнить и другие поля .---> таблица ( представление геометрии )
Я тоже пробовал
CREATE FUNCTION create_intersections()
UPDATE student.intersect_roads AS $$
Declare
Begin
End
$$
, что тоже не работает. Любые отзывы будут оценены. Спасибо!