Skip to content

Instantly share code, notes, and snippets.

@mixedbredie
Created March 2, 2015 10:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mixedbredie/ee3abdb247be6840b400 to your computer and use it in GitHub Desktop.
Save mixedbredie/ee3abdb247be6840b400 to your computer and use it in GitHub Desktop.
pgr_trsp wrapper
-- Function: routing.pgr_trsp_rcost(character varying, integer, integer)
-- DROP FUNCTION routing.pgr_trsp_rcost(character varying, integer, integer);
CREATE OR REPLACE FUNCTION routing.pgr_trsp_rcost(IN tbl character varying, IN source integer, IN target integer, OUT seq integer, OUT gid integer, OUT geom geometry)
RETURNS SETOF record AS
$BODY$
DECLARE
sql text;
rec record;
BEGIN
seq := 0;
sql := 'SELECT gid,geometry FROM pgr_trsp(''SELECT gid as id, source::integer, target::integer, cost_len::float AS cost, rcost_len::float AS reverse_cost FROM ' || quote_ident(tbl) || '''::text' || ','
|| source::integer || ','
|| target::integer || ', true, true, ''SELECT to_cost, teid AS target_id, feid||COALESCE(''','''||via,'''') AS via_path FROM itn_turn_restrictions''::text) AS route JOIN '
|| quote_ident(tbl) || ' ON itn_network.gid = route.id2 ORDER BY seq';
FOR rec IN EXECUTE sql
LOOP
seq := seq + 1;
gid := rec.gid;
geom := rec.geometry;
RETURN NEXT;
END LOOP;
RETURN;
END;
$BODY$
LANGUAGE plpgsql VOLATILE STRICT
COST 100
ROWS 1000;
ALTER FUNCTION routing.pgr_trsp_rcost(character varying, integer, integer)
OWNER TO postres;
COMMENT ON FUNCTION routing.pgr_trsp_rcost(character varying, integer, integer) IS 'OL3 turn restricted shortest path with reverse cost';
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment