0

このpgRouting pgr_drivingDistance関数は、道路網の頂点の ID のみを返しますが、特定の運転時間内の道路の端の ID は返しません。
この道路の端を見つけるために、次のクエリを作成しました。

SELECT all_roads.id, the_geom
    FROM
        (
            SELECT e.id, e.the_geom
            FROM tmp_ddist dd,
                tmp_edge e
            WHERE
                e.target = dd.vertex 
        UNION
            SELECT e.id, e.the_geom
            FROM tmp_ddist dd,
                tmp_edge e
            WHERE
                e.source = dd.vertex 
        ) all_roads
    GROUP BY all_roads.id, the_geom
    HAVING COUNT(all_roads.id) = 2

基本的に、pgr_drivingDistance関数によって生成されたセットにソース頂点とターゲット頂点を持つ道路の端を見つけ、このセットにソースとターゲットの両方を持つエッジのみを返します。

このクエリを最適化する方法はありますか?

4

1 に答える 1

0

そのようにしてみて、これが役立つかどうかを確認できますか:

SELECT all_roads.id, the_geom
  FROM
    (
        SELECT e.id, e.the_geom
        FROM tmp_ddist dd,
            tmp_edge e
        WHERE
            e.target = dd.vertex 
    UNION
        SELECT e2.id, e2.the_geom
        FROM tmp_ddist dd2,
            tmp_edge e2
        WHERE
            e2.source = dd2.vertex AND
            e2.id <> e.id
    ) all_roads
GROUP BY all_roads.id, the_geom
HAVING COUNT(all_roads.id) = 2

クエリ間のベンチマークを見てみたいです。

于 2014-11-10T12:43:41.730 に答える