commit dcf844632e6a458dbee79679a2355b8437571801 Author: Martin Brodbeck Date: Thu Aug 12 12:37:09 2021 +0200 initial commit diff --git a/.vscode/.ropeproject/config.py b/.vscode/.ropeproject/config.py new file mode 100755 index 0000000..dee2d1a --- /dev/null +++ b/.vscode/.ropeproject/config.py @@ -0,0 +1,114 @@ +# The default ``config.py`` +# flake8: noqa + + +def set_prefs(prefs): + """This function is called before opening the project""" + + # Specify which files and folders to ignore in the project. + # Changes to ignored resources are not added to the history and + # VCSs. Also they are not returned in `Project.get_files()`. + # Note that ``?`` and ``*`` match all characters but slashes. + # '*.pyc': matches 'test.pyc' and 'pkg/test.pyc' + # 'mod*.pyc': matches 'test/mod1.pyc' but not 'mod/1.pyc' + # '.svn': matches 'pkg/.svn' and all of its children + # 'build/*.o': matches 'build/lib.o' but not 'build/sub/lib.o' + # 'build//*.o': matches 'build/lib.o' and 'build/sub/lib.o' + prefs['ignored_resources'] = ['*.pyc', '*~', '.ropeproject', + '.hg', '.svn', '_svn', '.git', '.tox'] + + # Specifies which files should be considered python files. It is + # useful when you have scripts inside your project. Only files + # ending with ``.py`` are considered to be python files by + # default. + # prefs['python_files'] = ['*.py'] + + # Custom source folders: By default rope searches the project + # for finding source folders (folders that should be searched + # for finding modules). You can add paths to that list. Note + # that rope guesses project source folders correctly most of the + # time; use this if you have any problems. + # The folders should be relative to project root and use '/' for + # separating folders regardless of the platform rope is running on. + # 'src/my_source_folder' for instance. + # prefs.add('source_folders', 'src') + + # You can extend python path for looking up modules + # prefs.add('python_path', '~/python/') + + # Should rope save object information or not. + prefs['save_objectdb'] = True + prefs['compress_objectdb'] = False + + # If `True`, rope analyzes each module when it is being saved. + prefs['automatic_soa'] = True + # The depth of calls to follow in static object analysis + prefs['soa_followed_calls'] = 0 + + # If `False` when running modules or unit tests "dynamic object + # analysis" is turned off. This makes them much faster. + prefs['perform_doa'] = True + + # Rope can check the validity of its object DB when running. + prefs['validate_objectdb'] = True + + # How many undos to hold? + prefs['max_history_items'] = 32 + + # Shows whether to save history across sessions. + prefs['save_history'] = True + prefs['compress_history'] = False + + # Set the number spaces used for indenting. According to + # :PEP:`8`, it is best to use 4 spaces. Since most of rope's + # unit-tests use 4 spaces it is more reliable, too. + prefs['indent_size'] = 4 + + # Builtin and c-extension modules that are allowed to be imported + # and inspected by rope. + prefs['extension_modules'] = [] + + # Add all standard c-extensions to extension_modules list. + prefs['import_dynload_stdmods'] = True + + # If `True` modules with syntax errors are considered to be empty. + # The default value is `False`; When `False` syntax errors raise + # `rope.base.exceptions.ModuleSyntaxError` exception. + prefs['ignore_syntax_errors'] = False + + # If `True`, rope ignores unresolvable imports. Otherwise, they + # appear in the importing namespace. + prefs['ignore_bad_imports'] = False + + # If `True`, rope will insert new module imports as + # `from import ` by default. + prefs['prefer_module_from_imports'] = False + + # If `True`, rope will transform a comma list of imports into + # multiple separate import statements when organizing + # imports. + prefs['split_imports'] = False + + # If `True`, rope will remove all top-level import statements and + # reinsert them at the top of the module when making changes. + prefs['pull_imports_to_top'] = True + + # If `True`, rope will sort imports alphabetically by module name instead + # of alphabetically by import statement, with from imports after normal + # imports. + prefs['sort_imports_alphabetically'] = False + + # Location of implementation of + # rope.base.oi.type_hinting.interfaces.ITypeHintingFactory In general + # case, you don't have to change this value, unless you're an rope expert. + # Change this value to inject you own implementations of interfaces + # listed in module rope.base.oi.type_hinting.providers.interfaces + # For example, you can add you own providers for Django Models, or disable + # the search type-hinting in a class hierarchy, etc. + prefs['type_hinting_factory'] = ( + 'rope.base.oi.type_hinting.factory.default_type_hinting_factory') + + +def project_opened(project): + """This function is called after opening the project""" + # Do whatever you like here! diff --git a/.vscode/.ropeproject/objectdb b/.vscode/.ropeproject/objectdb new file mode 100755 index 0000000..0a47446 Binary files /dev/null and b/.vscode/.ropeproject/objectdb differ diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100755 index 0000000..eb5b800 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + // Verwendet IntelliSense zum Ermitteln möglicher Attribute. + // Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen. + // Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: Aktuelle Datei", + "type": "python", + "request": "launch", + "program": "${file}", + "args": ["../Speiche_Deutschland_gmapsupp.img"], + "console": "integratedTerminal" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100755 index 0000000..615aafb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.pythonPath": "/usr/bin/python3" +} \ No newline at end of file diff --git a/gmt b/gmt new file mode 100755 index 0000000..a30ea40 Binary files /dev/null and b/gmt differ diff --git a/gmt.exe b/gmt.exe new file mode 100755 index 0000000..7fcfbd0 Binary files /dev/null and b/gmt.exe differ diff --git a/sp_replace_typ.py b/sp_replace_typ.py new file mode 100755 index 0000000..b73e93a --- /dev/null +++ b/sp_replace_typ.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python3 + +import argparse +import os.path +import platform +import re +import sys +import subprocess + +GMT = '' + + +def get_famid_name_from_imgfile(imgfile_path): + if os.path.isfile(imgfile_path) == False: + sys.exit("Datei nicht gefunden. Bitte geben Sie eine gültige .img-Datei an.") + # fid = subprocess.run(f'{GMT} -i {imgfile_path} | grep ", FID " | cut -d\',\' -f 2 | sed -e \'s/ FID //\'', + # shell=True, capture_output=True, text=True).stdout.strip() + # name = subprocess.run(f'{GMT} -i {imgfile_path} | grep ", FID " | cut -d\',\' -f 3 | sed -e \'s/ //\'', + # shell=True, capture_output=True, text=True).stdout.strip() + output = subprocess.run( + [f'{GMT} -i {imgfile_path}'], shell=True, capture_output=True, text=True).stdout + pattern = ".* FID (\d+), (.*)" + match = re.search(pattern, output) + if not match: + sys.exit( + f"Keine gültige gmapsupp-Datei: {imgfile_path}\nBitte geben Sie eine gültige Datei an.") + + return (match.group(1), match.group(2)) + + +def ask_for_visualization(): + print("---------------------------------------") + print("TYP Auswahl für Basisdarstellung") + print("(Mehr Infos siehe www.speichenkarte.de)") + print("---------------------------------------") + print("1 TYP schmale Wege") + print("2 TYP Kontrast") + print("3 TYP breite Wege") + print("4 TYP Rennrad") + print("5 TYP blass") + print("6 TYP blass schmal") + print("7 TYP mehr Kontrast") + print("x Beenden\n") + print("Ihre Auswahl: ", end="") + choice = input().strip() + + basic = '' + if choice == '1': + basic = '_schmal' + elif choice == '2': + basic = '_Kontrast' + elif choice == '3': + basic = '_breit' + elif choice == '4': + basic = '_RR' + elif choice == '5': + basic = '_blass' + elif choice == '6': + basic = '_blass_schmal' + elif choice == '7': + basic = '_mehr_Kontrast' + elif choice == 'x': + print("Bye!") + sys.exit() + else: + print('Ungültige Auswahl.') + sys.exit() + + print("---------------------------------------") + print("TYP Auswahl für Höhenlinien") + print("(Mehr Infos siehe www.speichenkarte.de)") + print("---------------------------------------") + print("1 mit Höhenlinien") + print("2 ohne Höhenlinien") + print("x Beenden\n") + print("Ihre Auswahl: ", end="") + choice = input().strip() + + srtm = '' + if choice == '1': + srtm = '' + elif choice == '2': + srtm = '_ohneSRTM' + elif choice == 'x': + print("Bye!") + sys.exit() + else: + print('Ungültige Auswahl.') + sys.exit() + + print("---------------------------------------") + print("TYP Auswahl für Linienbeschriftung") + print("(Mehr Infos siehe www.speichenkarte.de)") + print("---------------------------------------") + print("1 mit Linenbeschriftung") + print("2 ohne Linienbeschriftung") + print("x Beenden\n") + print("Ihre Auswahl: ", end="") + choice = input().strip() + + text = '' + if choice == '1': + text = '' + elif choice == '2': + srtm = '_ohneText' + elif choice == 'x': + print("Bye!") + sys.exit() + else: + print('Ungültige Auswahl.') + sys.exit() + + return (basic, srtm, text) + + +def main(): + parser = argparse.ArgumentParser( + description='Das Programm passt die Darstellung der Garmin-"Speichenkarte" an. ') + parser.add_argument('imgfile', type=str, help='Garmin gmapsupp-Datei') + parser.add_argument() + args = parser.parse_args() + imgfile = args.imgfile + + (fid, name) = get_famid_name_from_imgfile(imgfile) + + (basic, srtm, text) = ask_for_visualization() + + typ_file = f'TYP_{name}_{fid}{basic}{srtm}{text}_gmapsupp.typ' + + print(f'\nGewählte TYP Datei: {typ_file}\n') + + if not os.path.isfile(typ_file): + sys.exit('FEHLER: Die Typdatei ist nicht vorhanden.') + + print('Wende die Typ-Datei an…') + subprocess.run([GMT, '-wx', imgfile, typ_file]) + print('\nFertig.') + + +if __name__ == "__main__": + if platform.system() == 'Linux': + GMT = './gmt' + else: # Windows… + GMT = './gmt.exe' + main()