我在 PostGIS 中加载了一个 line shapefile 并pgr_createTopology
在 pgRouting 中使用,通过添加源和目标来使表可路由(分配线源编号和目标编号的 2 个端节点)。下图是表格的一部分:
现在我有一些末端节点的坐标,它们属于表中的行,我想知道这些坐标对应的源/目标数量。
例如,在上表中,假设259463.392, 2737830.062
是 和 的端节点之一line id=1
,line id=2
那么这个坐标有source/target=175
我是 SQL 新手,尝试了一些查询,但出现错误:
SELECT ST_AsText(geom) from source;
FROM public.tc_line15_split;
错误:
ERROR: syntax error at or near "FROM"
LINE 2: FROM public.tc_line15_split;
^
********** Error **********
ERROR: syntax error at or near "FROM"
SQL state: 42601
Character: 45
更新#1
我想如果列源/目标包含节点坐标的信息,我可以知道我想要什么,但似乎不是,它们只是包含数字的列。
我得到的顶点表如下:
我使用以下查询来获取下表:
select source, target, st_astext(geom) as geom from public.tc_line15_split;
我仍在寻找是否可以通过上面的两张表来满足我的需求。
所以我尝试了下面的查询并在给定坐标附近得到了两条线:
select id from tc_line15_split
where st_dwithin(geom, st_setsrid(st_makepoint(259463.392, 2737830.062), 3826), 0.1);
后来我从第一张图中显示的表格中发现坐标分别是id 170/51的source/target=54,但仍然效率低下。
我想知道在我发现给定坐标位于这两行之间之后,有没有办法找到相同的源/目标编号,在这种情况下line id=51
,它们都包含?line id=170
更新#2
根据顶点表,我使用以下查询来获取给定坐标的对应源编号,也就是点 id:
select id from tc_line15_split_vertices_pgr
where st_dwithin(the_geom, st_setsrid(st_makepoint(259463.392, 2737830.062), 3826), 0.1);