<div dir="ltr"><div><div><div><div><div><div><div><div><div></div>Hi list,<br><br></div>I'm trying to generate isochrones as polygons in the way it is explained in that post  :<br><br><a href="https://smathermather.wordpress.com/2014/08/06/drivetime-analyses-pgrouting/">https://smathermather.wordpress.com/2014/08/06/drivetime-analyses-pgrouting/</a><br><br></div><div></div><div><br></div>I'm not familiar with postgres/postgis and I get a bit confused when trying to understand the difference between pgr_alphashape() / pgr_pointsAsPolygon(). I've read a lot through the web but did not find lot of examples scirpts.<br></div><div></div><div><br><br></div>I'm able to generate the drivingDistance() but I get lost when trying to get points to generate my polygons.<br><br></div>Is there any sample script somewhere combining the use of pgr_drivingDistance() with pgr_pointsAsPolygon() ?<br><br></div>Here is an attempt to adapt the script from smathermather with my data. Note that I want to run it on multiple start points :<br><br><br>---------------------<br>CREATE OR REPLACE FUNCTION nn_search (geom geometry) RETURNS<br>int8 AS $$<br> <br>SELECT id FROM roads_idf_l93_vertices_pgr AS r<br>ORDER BY geom <#> r.the_geom<br>LIMIT 1;<br> <br>$$ LANGUAGE SQL VOLATILE;<br><br><br>-- cette fonction renvoie un polygone<br>-- elle prend en paramètre l'id du noeud et le cost<br>CREATE OR REPLACE FUNCTION alpha_shape (id integer, cost integer) RETURNS<br>geometry AS $$<br> <br>WITH alphashape AS(SELECT pgr_alphaShape('WITH<br><br>DD AS (<br>    SELECT seq, id1 AS node, cost<br>    FROM pgr_drivingDistance(''SELECT id, source::int4 AS source, target::int4 AS target, length::float8 AS cost FROM roads_idf_l93'',' || id || ', ' || cost || ', false, false)<br>    ),<br><br>points AS (<br>    SELECT v.id::int4 AS id, x::float8, y::float8<br>    FROM roads_idf_l93_vertices_pgr v, DD d<br>    WHERE <a href="http://v.id">v.id</a> = d.node)<br>    <br>SELECT * FROM points')),<br> <br>alphapoints AS (<br>SELECT ST_Makepoint((pgr_alphashape).x, (pgr_alphashape).y) FROM alphashape),<br> <br>alphaline AS (<br>SELECT ST_MakeLine(ST_MakePoint) FROM alphapoints)<br> <br>SELECT ST_MakePolygon(ST_AddPoint(ST_MakeLine, ST_StartPoint(ST_MakeLine))) AS the_geom FROM alphaline<br> <br>$$ LANGUAGE SQL VOLATILE;<br><br>CREATE TABLE alpha_test AS<br>WITH dest_ids AS (<br>SELECT nn_search(geom) AS id FROM gare_idf_l93<br>)<br>-- cost 1000 m<br>SELECT alpha_shape(id::int, 1000)::geometry, id FROM dest_ids;<br><br>-----------------------<br><br></div>Executing this script return the following error : <br><br>ERROR:  Distance is too short. only 2 vertices for alpha shape calculation. alpha shape calculation needs at least 3 vertices.<br>CONTEXT:  SQL function "alpha_shape" statement 1<br>********** Erreur **********<br><br>ERROR: Distance is too short. only 2 vertices for alpha shape calculation. alpha shape calculation needs at least 3 vertices.<br>État SQL :XX000<br>Contexte : SQL function "alpha_shape" statement 1<br><br></div><br></div><div>Any help would be appreciated. Thanks<br><br></div><div>simo<br></div></div>