Hello
I’ve got some SQL wrapped up in a function to calculate alphashapes for multiple input points. The input points have all been assigned a “nearest_node” id and this is used in the SQL. The problem is where I have one point at the end of a long road and when I try to calculate an alphashape with a value that does not return 3 points to make a polygon it crashes the server process. In PgAdmin I see the log has the following:
2016-04-15 14:40:15 BST LOG server process (PID 5044) was terminated by exception 0xC0000005
2016-04-15 14:40:15 BST LOG terminating any other active server processes
2016-04-15 14:40:15 BST WARNING terminating connection because of crash of another server process
So, I guess my question is, is there any way I can get my function to fail gracefully when I hit this exception and stop my connection terminating and the process crashing?
Postgres 9.2.15 64bit
PostGIS 2.2.1
pgRouting 2.1.0
Windows Server 2008 r2
My SQL (could probably be done better)
CREATE TEMPORARY TABLE node AS
SELECT id,
ST_X(geometry) AS x,
ST_Y(geometry) AS y,
geometry
FROM (
SELECT source AS id,
ST_Startpoint(geometry) AS geometry
FROM itn_network
UNION
SELECT target AS id,
ST_Startpoint(geometry) AS geometry
FROM itn_network
) AS node;
SELECT ST_SetSRID(ST_MakePolygon(ST_AddPoint(foo.openline, ST_StartPoint(foo.openline))),27700) AS geometry
FROM (
SELECT ST_Makeline(points ORDER BY id) AS openline
FROM (
SELECT row_number() over() AS id, ST_MakePoint(x, y) AS points
FROM pgr_alphashape(’
SELECT *
FROM node
JOIN
(SELECT * FROM pgr_drivingDistance(‘’
SELECT gid AS id,
source::int4 AS source,
target::int4 AS target,
cost_time::float8 AS cost,
rcost_time::float8 AS reverse_cost
FROM itn_network’',
35819, --for this node
700, --this fails when I set it to 600
true,
true)) AS dd ON node.id = dd.id1’::text)
) AS a
) AS foo;
Thanks
Ross
Ross McDonald | GIS Data Coordinator | Resources Department, IT Division | Angus Council, Angus House, Orchardbank Business Park, Forfar, DD8 1AT
T: 01307 476419 | F: 01307 476401 | E: mcdonaldr@angus.gov.uk