From e0b1e3b66d54c4fe9907edb1ff993f33e6739d46 Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Thu, 6 Feb 2014 08:04:42 +0100 Subject: [PATCH] replace ST_Line_Interpolate_Point with ST_LineInterpolatePoint (DB adaption needed) Name of function was changed in postgis 2.1 and now prints ugly deprecation warnings. For older versions of postgis, function will be renamed to the new name during the setup of the DB. To update existing databases with postgis < 2.1 run: ALTER FUNCTION st_line_interpolate_point(geometry, double precision) RENAME TO ST_LineInterpolatePoint and then reinstall the SQL functions: ./utils/setup.php --create-functions --enable-diff-updates --create-partition-functions --- sql/functions.sql | 8 ++++---- sql/partition-functions.src.sql | 6 +++--- sql/tiger_import_start.sql | 2 +- utils/setup.php | 4 ++++ 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/sql/functions.sql b/sql/functions.sql index 1883d998..f219e70e 100644 --- a/sql/functions.sql +++ b/sql/functions.sql @@ -895,7 +895,7 @@ BEGIN insert into placex (osm_type, osm_id, class, type, admin_level, housenumber, street, addr_place, isin, postcode, country_code, parent_place_id, rank_address, rank_search, indexed_status, geometry) values ('N',prevnode.osm_id, 'place', 'house', prevnode.admin_level, housenum, prevnode.street, prevnode.addr_place, prevnode.isin, coalesce(prevnode.postcode, defpostalcode), - prevnode.country_code, prevnode.parent_place_id, prevnode.rank_address, prevnode.rank_search, 1, ST_Line_Interpolate_Point(linegeo, (housenum::float-orginalstartnumber::float)/originalnumberrange::float)); + prevnode.country_code, prevnode.parent_place_id, prevnode.rank_address, prevnode.rank_search, 1, ST_LineInterpolatePoint(linegeo, (housenum::float-orginalstartnumber::float)/originalnumberrange::float)); newpoints := newpoints + 1; --RAISE WARNING 'interpolation number % % ',prevnode.place_id,housenum; END LOOP; @@ -1484,9 +1484,9 @@ BEGIN FOR relation IN SELECT place_id FROM placex WHERE ST_DWithin(location.geometry, placex.geometry, 0.001) and placex.rank_search = 26 and st_geometrytype(location.geometry) in ('ST_LineString') - ORDER BY (ST_distance(placex.geometry, ST_Line_Interpolate_Point(location.geometry,0))+ - ST_distance(placex.geometry, ST_Line_Interpolate_Point(location.geometry,0.5))+ - ST_distance(placex.geometry, ST_Line_Interpolate_Point(location.geometry,1))) ASC limit 1 + ORDER BY (ST_distance(placex.geometry, ST_LineInterpolatePoint(location.geometry,0))+ + ST_distance(placex.geometry, ST_LineInterpolatePoint(location.geometry,0.5))+ + ST_distance(placex.geometry, ST_LineInterpolatePoint(location.geometry,1))) ASC limit 1 LOOP --RAISE WARNING 'using nearest street to address interpolation line,0.001 %',relation; NEW.parent_place_id := relation.place_id; diff --git a/sql/partition-functions.src.sql b/sql/partition-functions.src.sql index d9da9b42..235e21a2 100644 --- a/sql/partition-functions.src.sql +++ b/sql/partition-functions.src.sql @@ -327,9 +327,9 @@ BEGIN RETURN; END IF; - p1 := ST_Line_Interpolate_Point(line,0); - p2 := ST_Line_Interpolate_Point(line,0.5); - p3 := ST_Line_Interpolate_Point(line,1); + p1 := ST_LineInterpolatePoint(line,0); + p2 := ST_LineInterpolatePoint(line,0.5); + p3 := ST_LineInterpolatePoint(line,1); -- start IF in_partition = -partition- THEN diff --git a/sql/tiger_import_start.sql b/sql/tiger_import_start.sql index f40f544b..d9def2b4 100644 --- a/sql/tiger_import_start.sql +++ b/sql/tiger_import_start.sql @@ -79,7 +79,7 @@ BEGIN FOR housenum IN startnumber..endnumber BY stepsize LOOP insert into location_property_tiger_import (place_id, partition, parent_place_id, housenumber, postcode, centroid) values (nextval('seq_place'), out_partition, out_parent_place_id, housenum, in_postcode, - ST_Line_Interpolate_Point(linegeo, (housenum::float-rangestartnumber::float)/numberrange::float)); + ST_LineInterpolatePoint(linegeo, (housenum::float-rangestartnumber::float)/numberrange::float)); newpoints := newpoints + 1; END LOOP; diff --git a/utils/setup.php b/utils/setup.php index fb16254d..99d9e526 100755 --- a/utils/setup.php +++ b/utils/setup.php @@ -132,6 +132,10 @@ } else { pgsqlRunScript('CREATE EXTENSION postgis'); } + if ($fPostgisVersion < 2.1) { + // Function was renamed in 2.1 and throws an annoying deprecation warning + pgsqlRunScript('ALTER FUNCTION st_line_interpolate_point(geometry, double precision) RENAME TO ST_LineInterpolatePoint'); + } $sVersionString = $oDB->getOne('select postgis_full_version()'); preg_match('#POSTGIS="([0-9]+)[.]([0-9]+)[.]([0-9]+)( r([0-9]+))?"#', $sVersionString, $aMatches); if (CONST_Postgis_Version != $aMatches[1].'.'.$aMatches[2]) -- 2.39.5