Skip to content

Commit

Permalink
Added cities & towns to context.mbtiles
Browse files Browse the repository at this point in the history
  • Loading branch information
kueda committed Oct 6, 2023
1 parent adc0524 commit cf17f34
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 22 deletions.
22 changes: 21 additions & 1 deletion imposm-mapping.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ tables:
natural: [__any__]
ref: [__any__]
tiger: [__any__]
nodes:
natural_nodes:
type: point
columns:
- type: id
Expand All @@ -77,3 +77,23 @@ tables:
ele: [__any__]
tiger: [__any__]
intermittent: [__any__]
place_nodes:
type: point
columns:
- type: id
name: id
- type: geometry
name: geom
- type: string
name: name
key: name
- type: hstore_tags
name: tags
filters:
require:
place: [city, town, village, hamlet]
mapping:
name: [__any__]
place: [__any__]
population: [__any__]
ref: [__any__]
54 changes: 33 additions & 21 deletions osm.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
WAYS_TABLE_NAME = "underfoot_ways"
NATURAL_WAYS_TABLE_NAME = "underfoot_natural_ways"
NATURAL_NODES_TABLE_NAME = "underfoot_natural_nodes"
PLACE_NODES_TABLE_NAME = "underfoot_place_nodes"


def create_database():
Expand Down Expand Up @@ -169,13 +170,34 @@ def load_natural_nodes_data(data_path, pack=None):
tags -> 'ele' AS elevation_m,
tags -> 'intermittent' AS intermittent,
geom
FROM nodes
FROM natural_nodes
WHERE
tags -> 'natural' IN ('peak', 'saddle', 'spring')
""",
dbname=DBNAME
)

def load_place_nodes_data(data_path, pack=None):
"""Load natural nodes from OSM data"""
if not is_osm_loaded():
load_osm_from_pbf(data_path, pack)
util.run_sql(f"DROP TABLE IF EXISTS {PLACE_NODES_TABLE_NAME}", dbname=DBNAME)
util.run_sql(
f"""
CREATE TABLE {PLACE_NODES_TABLE_NAME} AS
SELECT
id,
COALESCE(
name, tags -> 'name'
) AS name,
tags -> 'place' AS place,
tags -> 'population' AS population,
geom
FROM place_nodes
""",
dbname=DBNAME
)


def make_ways_mbtiles(path):
"""Export ways into the MBTiles using different zoom levels for different types"""
Expand Down Expand Up @@ -237,33 +259,22 @@ def make_context_mbtiles(path):
if os.path.exists(path):
os.remove(path)
gpkg_path = f"{util.basename_for_path(path)}.gpkg"
tables = [
NATURAL_NODES_TABLE_NAME,
NATURAL_WAYS_TABLE_NAME,
PLACE_NODES_TABLE_NAME
]
cmds = [
[
"ogr2ogr",
gpkg_path,
f"PG:dbname={DBNAME}",
NATURAL_WAYS_TABLE_NAME,
"-nln", NATURAL_WAYS_TABLE_NAME
],
[
"ogr2ogr",
gpkg_path,
f"PG:dbname={DBNAME}",
NATURAL_NODES_TABLE_NAME,
"-nln", NATURAL_NODES_TABLE_NAME
]
["ogr2ogr", gpkg_path, f"PG:dbname={DBNAME}", table, "-nln", table]
for table in tables
]
for idx, cmd in enumerate(cmds):
if idx > 0:
cmd += ["-update"]
util.call_cmd(cmd)
conf = {
NATURAL_WAYS_TABLE_NAME: {
"target_name": NATURAL_WAYS_TABLE_NAME
},
NATURAL_NODES_TABLE_NAME: {
"target_name": NATURAL_NODES_TABLE_NAME
}
table: {"target_name": table}
for table in tables
}
cmd = f"""
ogr2ogr {path} {gpkg_path}
Expand Down Expand Up @@ -309,6 +320,7 @@ def make_context(pbf_url, clean=False, pack=None, path="./context.mbtiles"):
con.close()
load_natural_ways_data(filename, pack=pack)
load_natural_nodes_data(filename, pack=pack)
load_place_nodes_data(filename, pack=pack)
make_context_mbtiles(path)

if __name__ == "__main__":
Expand Down

0 comments on commit cf17f34

Please sign in to comment.