X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/550e7edb64d391c249eeee10186b0c1bec535907..23dabad0b0c8c1ffd9b4973bfc9e1d739e6128d7:/lib-sql/tiger_import_start.sql?ds=sidebyside diff --git a/lib-sql/tiger_import_start.sql b/lib-sql/tiger_import_start.sql index faa4efbb..0ff53436 100644 --- a/lib-sql/tiger_import_start.sql +++ b/lib-sql/tiger_import_start.sql @@ -1,5 +1,19 @@ +-- SPDX-License-Identifier: GPL-2.0-only +-- +-- This file is part of Nominatim. (https://nominatim.org) +-- +-- Copyright (C) 2022 by the Nominatim developer community. +-- For a full list of authors see the git log. DROP TABLE IF EXISTS location_property_tiger_import; -CREATE TABLE location_property_tiger_import (linegeo GEOMETRY, place_id BIGINT, partition INTEGER, parent_place_id BIGINT, startnumber INTEGER, endnumber INTEGER, interpolationtype TEXT, postcode TEXT); +CREATE TABLE location_property_tiger_import ( + linegeo GEOMETRY, + place_id BIGINT, + partition INTEGER, + parent_place_id BIGINT, + startnumber INTEGER, + endnumber INTEGER, + step SMALLINT, + postcode TEXT); CREATE OR REPLACE FUNCTION tiger_line_import(linegeo GEOMETRY, in_startnumber INTEGER, in_endnumber INTEGER, interpolationtype TEXT, @@ -14,16 +28,16 @@ DECLARE out_partition INTEGER; out_parent_place_id BIGINT; location RECORD; - address_street_word_ids INTEGER[]; BEGIN IF in_endnumber > in_startnumber THEN - startnumber = in_startnumber; - endnumber = in_endnumber; + startnumber := in_startnumber; + endnumber := in_endnumber; ELSE - startnumber = in_endnumber; - endnumber = in_startnumber; + startnumber := in_endnumber; + endnumber := in_startnumber; + linegeo := ST_Reverse(linegeo); END IF; IF startnumber < 0 THEN @@ -45,8 +59,10 @@ BEGIN END IF; -- Filter out really broken tiger data - IF numberrange > 0 AND (numberrange::float/stepsize::float > 500) - AND ST_length(linegeo)/(numberrange::float/stepsize::float) < 0.000001 THEN + IF numberrange > 0 + and numberrange::float/stepsize::float > 500 + and ST_length(linegeo)/(numberrange::float/stepsize::float) < 0.000001 + THEN RAISE WARNING 'Road too short for number range % to % (%)',startnumber,endnumber, ST_length(linegeo)/(numberrange::float/stepsize::float); RETURN 0; @@ -54,13 +70,9 @@ BEGIN place_centroid := ST_Centroid(linegeo); out_partition := get_partition('us'); - out_parent_place_id := null; - address_street_word_ids := token_addr_street_match_tokens(token_info); - IF address_street_word_ids IS NOT NULL THEN - out_parent_place_id := getNearestNamedRoadPlaceId(out_partition, place_centroid, - address_street_word_ids); - END IF; + out_parent_place_id := getNearestNamedRoadPlaceId(out_partition, place_centroid, + token_info); IF out_parent_place_id IS NULL THEN SELECT getNearestParallelRoadFeature(out_partition, linegeo) @@ -73,8 +85,12 @@ BEGIN END IF; --insert street(line) into import table -insert into location_property_tiger_import (linegeo, place_id, partition, parent_place_id, startnumber, endnumber, interpolationtype, postcode) -values (linegeo, nextval('seq_place'), out_partition, out_parent_place_id, startnumber, endnumber, interpolationtype, in_postcode); +insert into location_property_tiger_import (linegeo, place_id, partition, + parent_place_id, startnumber, endnumber, + step, postcode) +values (linegeo, nextval('seq_place'), out_partition, + out_parent_place_id, startnumber, endnumber, + stepsize, in_postcode); RETURN 1; END;