"""
from typing import MutableSequence, Tuple, Any, Type, Mapping, Sequence, List, cast
import logging
-import subprocess
from textwrap import dedent
from pathlib import Path
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(conn: Connection, data_path: Path) -> int:
- """ Replaces the OSM views table with new data.
+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 OSM views GeoTIFF file could not
+ 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
- postgis_version = conn.postgis_version_tuple()
- if postgis_version[0] < 3:
- return 2
-
- with conn.cursor() as cur:
- cur.execute('DROP TABLE IF EXISTS "osm_views"')
- conn.commit()
+ 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
- cmd = f"raster2pgsql -s 4326 -I -C -t 100x100 {datafile} \
- public.osm_views | psql nominatim > /dev/null"
- subprocess.run(["/bin/bash", "-c" , cmd], check=True)
+ 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
LOG.info('Creating website directory.')
basedir.mkdir()
+ assert config.project_dir is not None
template = dedent(f"""\
<?php