from psycopg2 import sql as pysql
from nominatim.config import Configuration
-from nominatim.db.connection import Connection
+from nominatim.db.connection import Connection, connect
from nominatim.db.utils import execute_file
from nominatim.db.sql_preprocessor import SQLPreprocessor
from nominatim.version import version_str
return 0
-def import_osm_views_geotiff(dsn, data_path, ignore_errors=False):
- """ Replaces the OSM views table with new data.
-
- Returns 0 if all was well and 1 if the GeoTIFF file could not
+def import_secondary_importance(dsn: str, data_path: Path, ignore_errors: bool = False) -> int:
+ """ Replaces the secondary importance raster data table with new data.
+
+ Returns 0 if all was well and 1 if the raster SQL file could not
be found. Throws an exception if there was an error reading the file.
"""
- datafile = data_path / 'osmviews.tiff'
-
+ datafile = data_path / 'secondary_importance.sql.gz'
if not datafile.exists():
return 1
- pre_code = """BEGIN;
- DROP TABLE IF EXISTS "osmviews";
- """
- post_code = "COMMIT"
- execute_file(dsn, datafile, ignore_errors=ignore_errors,
- pre_code=pre_code, post_code=post_code)
+ with connect(dsn) as conn:
+ postgis_version = conn.postgis_version_tuple()
+ if postgis_version[0] < 3:
+ LOG.error('PostGIS version is too old for using OSM raster data.')
+ return 2
+
+ execute_file(dsn, datafile, ignore_errors=ignore_errors)
return 0
cur.execute("""
UPDATE placex SET (wikipedia, importance) =
(SELECT wikipedia, importance
- FROM compute_importance(extratags, country_code, osm_type, osm_id))
+ FROM compute_importance(extratags, country_code, osm_type, osm_id, centroid))
""")
cur.execute("""
UPDATE placex s SET wikipedia = d.wikipedia, importance = d.importance