move interpolaton computation into indexing step

The interpolaton computation needs information from the osm2pgsql
slim tables which may not be available when the data is inserted.

Insertion now only adds a line with basic address information to
location_property_osmline. The line is then split during the
indexing, leading to more lines (which are complete in that case)
being inserted.

Fixes #598.
This commit is contained in:
Sarah Hoffmann
2017-02-26 12:58:07 +01:00
parent e04838cc71
commit c48fb88e6b
7 changed files with 158 additions and 127 deletions

View File

@@ -216,9 +216,13 @@ def import_and_index_data_from_place_table(context):
geometry)
select * from place where not (class='place' and type='houses' and osm_type='W')""")
cur.execute(
"""select insert_osmline (osm_id, housenumber, street, addr_place,
postcode, country_code, geometry)
from place where class='place' and type='houses' and osm_type='W'""")
"""insert into location_property_osmline
(osm_id, interpolationtype, street, addr_place,
postcode, calculated_country_code, linegeo)
SELECT osm_id, housenumber, street, addr_place,
postcode, country_code, geometry from place
WHERE class='place' and type='houses' and osm_type='W'
and ST_GeometryType(geometry) = 'ST_LineString'""")
context.db.commit()
context.nominatim.run_setup_script('index', 'index-noanalyse')
@@ -373,7 +377,8 @@ def check_location_property_osmline(context, oid, neg):
eq_('W', nid.typ, "interpolation must be a way")
cur.execute("""SELECT *, ST_AsText(linegeo) as geomtxt
FROM location_property_osmline WHERE osm_id = %s""",
FROM location_property_osmline
WHERE osm_id = %s AND startnumber IS NOT NULL""",
(nid.oid, ))
if neg:

View File

@@ -82,9 +82,13 @@ def update_from_osm_file(context):
admin_level, housenumber, street, addr_place, isin, postcode,
country_code, extratags, geometry) select * from place""")
cur.execute(
"""select insert_osmline (osm_id, housenumber, street, addr_place,
postcode, country_code, geometry)
from place where class='place' and type='houses' and osm_type='W'""")
"""insert into location_property_osmline
(osm_id, interpolationtype, street, addr_place,
postcode, calculated_country_code, linegeo)
SELECT osm_id, housenumber, street, addr_place,
postcode, country_code, geometry from place
WHERE class='place' and type='houses' and osm_type='W'
and ST_GeometryType(geometry) = 'ST_LineString'""")
context.db.commit()
context.nominatim.run_setup_script('index', 'index-noanalyse')
context.nominatim.run_setup_script('create-functions', 'create-partition-functions',