initial commit

This commit is contained in:
Martin Brodbeck 2021-08-12 12:37:09 +02:00
commit dcf844632e
7 changed files with 278 additions and 0 deletions

114
.vscode/.ropeproject/config.py vendored Executable file
View File

@ -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 <package> import <module>` 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!

BIN
.vscode/.ropeproject/objectdb vendored Executable file

Binary file not shown.

16
.vscode/launch.json vendored Executable file
View File

@ -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"
}
]
}

3
.vscode/settings.json vendored Executable file
View File

@ -0,0 +1,3 @@
{
"python.pythonPath": "/usr/bin/python3"
}

BIN
gmt Executable file

Binary file not shown.

BIN
gmt.exe Executable file

Binary file not shown.

145
sp_replace_typ.py Executable file
View File

@ -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()