I have spent over a week trying to work this out. I have an existing road network and have used pgr_alphashape to try and get a 400m walking catchment from bus stops.
But pgr_alphashape snapes to the nearest network node which means catchments returned are significantly smaller than 400m. I have therefore tried to create a new network with nodes every 50m using ST_Segmentize but I can’t seem to get it to work.
The function below is my attempt to loop through the existing network and run ST_Segmentize on each entry to return updated network with additional nodes but it only returns one record each time rather than a number of segmented entries.
Any advice on how to make this work or alternative approach would be greately appreciated (especially given that following over a week and research it seems no one else has had this problem).
Regards
Adam
DROP FUNCTION hutt_pax.my_test_function();
CREATE OR REPLACE FUNCTION hutt_pax.my_test_function()
RETURNS TABLE (
xid integer,
xgeog geometry) AS
$BODY$
DECLARE
r hutt_pax.roads_wainuiomata%ROWTYPE;
BEGIN
FOR r IN
SELECT *
FROM hutt_pax.roads_wainuiomata
LOOP
1. create a new edge table
2. process all you edges with segmentize and dump into the new table
3. then run pgr_createTopology on the new table
4. then try to route against the new table
-Steve
On 8/23/2014 8:16 PM, Adam Lawrence wrote:
Hi,
I have spent over a week trying to work this out. I have an existing
road network and have used pgr_alphashape to try and get a 400m walking
catchment from bus stops.
But pgr_alphashape snapes to the nearest network node which means
catchments returned are significantly smaller than 400m. I have
therefore tried to create a new network with nodes every 50m using
ST_Segmentize but I can't seem to get it to work.
The function below is my attempt to loop through the existing network
and run ST_Segmentize on each entry to return updated network with
additional nodes but it only returns one record each time rather than a
number of segmented entries.
Any advice on how to make this work or alternative approach would be
greately appreciated (especially given that following over a week and
research it seems no one else has had this problem).
Regards
Adam
DROP FUNCTION hutt_pax.my_test_function();
CREATE OR REPLACE FUNCTION hutt_pax.my_test_function()
RETURNS TABLE (
xid integer,
xgeog geometry) AS
$BODY$
DECLARE
r hutt_pax.roads_wainuiomata%ROWTYPE;
BEGIN
FOR r IN
SELECT *
FROM hutt_pax.roads_wainuiomata
LOOP
Also, there has been work on queries using pgr_drivingDistance that will return partial edges if the next node is not within the distance. These functions will return all the segments you want and then you could use st_convexHull to get a polygon of the catchment area.
process all you edges with segmentize and dump into the new table
then run pgr_createTopology on the new table
then try to route against the new table
-Steve
On 8/23/2014 8:16 PM, Adam Lawrence wrote:
Hi,
I have spent over a week trying to work this out. I have an existing
road network and have used pgr_alphashape to try and get a 400m walking
catchment from bus stops.
But pgr_alphashape snapes to the nearest network node which means
catchments returned are significantly smaller than 400m. I have
therefore tried to create a new network with nodes every 50m using
ST_Segmentize but I can’t seem to get it to work.
The function below is my attempt to loop through the existing network
and run ST_Segmentize on each entry to return updated network with
additional nodes but it only returns one record each time rather than a
number of segmented entries.
Any advice on how to make this work or alternative approach would be
greately appreciated (especially given that following over a week and
research it seems no one else has had this problem).
Regards
Adam
DROP FUNCTION hutt_pax.my_test_function();
CREATE OR REPLACE FUNCTION hutt_pax.my_test_function()
RETURNS TABLE (
xid integer,
xgeog geometry) AS
$BODY$
DECLARE
r hutt_pax.roads_wainuiomata%ROWTYPE;
BEGIN
FOR r IN
SELECT *
FROM hutt_pax.roads_wainuiomata
LOOP