mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-09 03:24:06 +00:00
Initial implementation of GeoTIFF import functionality
This commit is contained in:
committed by
Sarah Hoffmann
parent
3381a92d92
commit
c85b74497b
@@ -63,6 +63,8 @@ class UpdateRefresh:
|
||||
help='Update the PL/pgSQL functions in the database')
|
||||
group.add_argument('--wiki-data', action='store_true',
|
||||
help='Update Wikipedia/data importance numbers')
|
||||
group.add_argument('--osm-views', action='store_true',
|
||||
help='Update OSM views/data importance numbers')
|
||||
group.add_argument('--importance', action='store_true',
|
||||
help='Recompute place importances (expensive!)')
|
||||
group.add_argument('--website', action='store_true',
|
||||
@@ -130,6 +132,15 @@ class UpdateRefresh:
|
||||
data_path) > 0:
|
||||
LOG.fatal('FATAL: Wikipedia importance dump file not found')
|
||||
return 1
|
||||
|
||||
if args.osm_views:
|
||||
data_path = Path(args.config.OSM_VIEWS_DATA_PATH
|
||||
or args.project_dir)
|
||||
LOG.warning('Import OSM views GeoTIFF data from %s', data_path)
|
||||
if refresh.import_osm_views_geotiff(args.config.get_libpq_dsn(),
|
||||
data_path) > 0:
|
||||
LOG.fatal('FATAL: OSM views GeoTIFF file not found')
|
||||
return 1
|
||||
|
||||
# Attention: importance MUST come after wiki data import.
|
||||
if args.importance:
|
||||
|
||||
@@ -58,8 +58,10 @@ class SetupAll:
|
||||
group2.add_argument('--no-updates', action='store_true',
|
||||
help="Do not keep tables that are only needed for "
|
||||
"updating the database later")
|
||||
group2.add_argument('--osm-views', action='store_true',
|
||||
help='Import OSM views GeoTIFF')
|
||||
group2.add_argument('--offline', action='store_true',
|
||||
help="Do not attempt to load any additional data from the internet")
|
||||
help="Do not attempt to load any additional data from the internet")
|
||||
group3 = parser.add_argument_group('Expert options')
|
||||
group3.add_argument('--ignore-errors', action='store_true',
|
||||
help='Continue import even when errors in SQL are present')
|
||||
@@ -103,7 +105,15 @@ class SetupAll:
|
||||
if refresh.import_wikipedia_articles(args.config.get_libpq_dsn(),
|
||||
data_path) > 0:
|
||||
LOG.error('Wikipedia importance dump file not found. '
|
||||
'Will be using default importances.')
|
||||
'Calculating importance values of locations will not use Wikipedia importance data.')
|
||||
|
||||
LOG.warning('Importing OSM views GeoTIFF data')
|
||||
database_import.import_osm_views_geotiff()
|
||||
data_path = Path(args.config.OSM_VIEWS_DATA_PATH or args.project_dir)
|
||||
if refresh.import_osm_views_geotiff(args.config.get_libpq_dsn(),
|
||||
data_path) > 0:
|
||||
LOG.error('OSM views GeoTIFF file not found. '
|
||||
'Calculating importance values of locations will not use OSM views data.')
|
||||
|
||||
if args.continue_at is None or args.continue_at == 'load-data':
|
||||
LOG.warning('Initialise tables')
|
||||
|
||||
@@ -75,6 +75,7 @@ def setup_database_skeleton(dsn: str, rouser: Optional[str] = None) -> None:
|
||||
with conn.cursor() as cur:
|
||||
cur.execute('CREATE EXTENSION IF NOT EXISTS hstore')
|
||||
cur.execute('CREATE EXTENSION IF NOT EXISTS postgis')
|
||||
cur.execute('CREATE EXTENSION IF NOT EXISTS postgis_raster')
|
||||
conn.commit()
|
||||
|
||||
_require_version('PostGIS',
|
||||
@@ -246,3 +247,8 @@ def create_search_indices(conn: Connection, config: Configuration,
|
||||
|
||||
sql.run_parallel_sql_file(config.get_libpq_dsn(),
|
||||
'indices.sql', min(8, threads), drop=drop)
|
||||
|
||||
|
||||
def import_osm_views_geotiff():
|
||||
"""Import OSM views GeoTIFF file"""
|
||||
subprocess.run("raster2pgsql -s 4326 -I -C -t 100x100 -e osmviews.tiff public.osmviews | psql nominatim", shell=True, check=True)
|
||||
|
||||
@@ -146,6 +146,25 @@ def import_wikipedia_articles(dsn: str, data_path: Path, ignore_errors: bool = F
|
||||
|
||||
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
|
||||
be found. Throws an exception if there was an error reading the file.
|
||||
"""
|
||||
datafile = data_path / 'osmviews.tiff'
|
||||
|
||||
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)
|
||||
|
||||
return 0
|
||||
|
||||
def recompute_importance(conn: Connection) -> None:
|
||||
""" Recompute wikipedia links and importance for all entries in placex.
|
||||
|
||||
Reference in New Issue
Block a user