Skip to content

Commit 507a741

Browse files
committed
add --tag_transform to set an arbitrary tag-transform file
Use the same logic as with --tag_wahoo_xml
1 parent 54ba289 commit 507a741

File tree

4 files changed

+22
-6
lines changed

4 files changed

+22
-6
lines changed

tests/test_osm_maps.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class TestOsmMaps(unittest.TestCase):
2121

2222
def setUp(self):
2323
self.tags_to_keep = os.path.join(constants.RESOURCES_DIR, 'tags-to-keep.json')
24+
self.tag_transform = os.path.join(constants.RESOURCES_DIR, 'tunnel-transform.xml')
2425

2526
class TestOsmMapsCalculation(TestOsmMaps):
2627
"""
@@ -193,7 +194,7 @@ def test_folder_name_many_countries(self):
193194
"""
194195
o_osm_data = self.get_osm_data_instance('albania,alps,andorra,austria,azores,belarus,belgium,bosnia-herzegovina,britain-and-ireland,bulgaria,croatia,cyprus,czech-republic,dach,denmark,estonia,faroe-islands,finland,france,georgia,germany,great-britain,greece,guernsey-jersey,hungary,iceland,ireland-and-northern-ireland,isle-of-man,italy,kosovo,latvia,liechtenstein,lithuania,luxembourg,macedonia,malta,moldova,monaco,montenegro,netherlands,norway,poland,portugal,romania,serbia,slovakia,slovenia,spain,sweden,switzerland,turkey,ukraine')
195196

196-
o_osm_maps = OsmMaps(o_osm_data, self.tags_to_keep)
197+
o_osm_maps = OsmMaps(o_osm_data, self.tags_to_keep, self.tag_transform)
197198
folder_name = o_osm_maps.calculate_folder_name('.map.lzma')
198199
folder_name_maps = o_osm_maps.calculate_folder_name('.map')
199200

@@ -247,7 +248,7 @@ def test_version_and_tags_of_country_config_file(self):
247248
# download files marked for download to fill up map_file per country to write to config
248249
o_downloader.download_files_if_needed()
249250

250-
o_osm_maps = OsmMaps(o_osm_data, self.tags_to_keep)
251+
o_osm_maps = OsmMaps(o_osm_data, self.tags_to_keep, self.tag_transform)
251252

252253
o_osm_maps.write_country_config_file(o_input_data.country)
253254

wahoomc/input.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,9 @@ def process_call_of_the_tool():
8383
# specify the file with tags to keep when filtering
8484
options_args.add_argument('--tags_to_keep', default=InputData().tags_to_keep,
8585
help="file with tags to keep when filtering")
86+
# specify the file with tag-transform rules
87+
options_args.add_argument('--tag_transform', default=InputData().tag_transform,
88+
help="file with tag-transform rules")
8689
# specify the file with tags to keep in the output
8790
options_args.add_argument('-tag', '--tag_wahoo_xml', default=InputData().tag_wahoo_xml,
8891
help="file with tags to keep in the output")
@@ -120,6 +123,7 @@ def process_call_of_the_tool():
120123
o_input_data.force_processing = args.forceprocessing
121124

122125
o_input_data.tags_to_keep = args.tags_to_keep
126+
o_input_data.tag_transform = args.tag_transform
123127
o_input_data.tag_wahoo_xml = args.tag_wahoo_xml
124128
o_input_data.save_cruiser = args.cruiser
125129
o_input_data.zip_folder = args.zip
@@ -201,6 +205,7 @@ def __init__(self):
201205
self.use_srtm1 = False
202206

203207
self.tags_to_keep = "tags-to-keep.json"
208+
self.tag_transform = "tunnel-transform.xml"
204209
self.tag_wahoo_xml = "tag-wahoo-poi.xml"
205210
self.zip_folder = False
206211
self.save_cruiser = False
@@ -239,6 +244,15 @@ def is_required_input_given_or_exit(self):
239244
if not os.path.exists(self.tags_to_keep):
240245
sys.exit(f'The tags-to-keep json file was not found: \"{self.tags_to_keep}\"')
241246

247+
if not os.path.exists(self.tag_transform):
248+
for path in get_absolute_dir_user_or_repo("", self.tag_transform):
249+
if os.path.exists(path):
250+
self.tag_transform = path
251+
break
252+
253+
if not os.path.exists(self.tag_transform):
254+
sys.exit(f'The tag-transform xml file was not found: \"{self.tag_transform}\"')
255+
242256
if not os.path.exists(self.tag_wahoo_xml):
243257
for path in get_absolute_dir_user_or_repo("tag_wahoo_adjusted", self.tag_wahoo_xml):
244258
if os.path.exists(path):

wahoomc/main.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ def run(run_level):
6363

6464
log.info('# Used configuration')
6565
log.info('+ tags-to-keep file: %s', o_input_data.tags_to_keep)
66+
log.info('+ tag-transform file: %s', o_input_data.tag_transform)
6667
log.info('+ map-writer tag-conf file: %s', o_input_data.tag_wahoo_xml)
6768

6869
if o_input_data.country:
@@ -78,7 +79,7 @@ def run(run_level):
7879
# Download files marked for download
7980
o_downloader.download_files_if_needed()
8081

81-
o_osm_maps = OsmMaps(o_osm_data, o_input_data.tags_to_keep)
82+
o_osm_maps = OsmMaps(o_osm_data, o_input_data.tags_to_keep, o_input_data.tag_transform)
8283

8384
# Filter tags from country osm.pbf files'
8485
o_osm_maps.filter_tags_from_country_osm_pbf_files()

wahoomc/osm_maps_functions.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,10 @@ class OsmMaps:
7777
# Number of workers for the Osmosis read binary fast function
7878
workers = '1'
7979

80-
def __init__(self, o_osm_data, tags_to_keep):
80+
def __init__(self, o_osm_data, tags_to_keep, tag_transform):
8181
self.o_osm_data = o_osm_data
8282
self.tags_to_keep = tags_to_keep
83+
self.tag_transform = tag_transform
8384
self.osmconvert_path = get_tooling_win_path('osmconvert')
8485

8586
create_empty_directories(
@@ -490,8 +491,7 @@ def merge_splitted_tiles_with_land_and_sea(self, process_border_countries, conto
490491

491492
cmd.extend(
492493
['--rx', 'file='+os.path.join(out_tile_dir, 'sea.osm'), '--s', '--m'])
493-
cmd.extend(['--tag-transform', 'file=' + os.path.join(RESOURCES_DIR,
494-
'tunnel-transform.xml'), '--wb', out_file_merged, 'omitmetadata=true'])
494+
cmd.extend(['--tag-transform', 'file=' + self.tag_transform, '--wb', out_file_merged, 'omitmetadata=true'])
495495

496496
run_subprocess_and_log_output(
497497
cmd, f'! Error in Osmosis with tile: {tile["x"]},{tile["y"]}')

0 commit comments

Comments
 (0)