Compare commits

...

4 commits

Author SHA1 Message Date
Martin Brodbeck 399bf3e096 remove .vscode 2021-08-12 14:31:33 +02:00
Martin Brodbeck 0a3e14c881 works on windows now 2021-08-12 14:29:15 +02:00
Martin Brodbeck 77e9130fa1 2021-08-12 14:28:48 +02:00
Martin Brodbeck 12db0fc8f0 README added 2021-08-12 14:28:14 +02:00
7 changed files with 57 additions and 142 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.vscode

View file

@ -1,114 +0,0 @@
# 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!

Binary file not shown.

16
.vscode/launch.json vendored
View file

@ -1,16 +0,0 @@
{
// 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"
}
]
}

View file

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

33
README.md Normal file
View file

@ -0,0 +1,33 @@
# sp_replace_typ
Dieses Python-Skript passt mit Hilfe von TYP-Dateien und dem Tool
[GMT](https://www.gmaptool.eu) die Darstellung der Karte an.
Hierzu werden einige Parameter abgefragt, anhand derer die richtige
TYP-Datei ermittelt wird. Die eigentliche Arbeit verrichtet dann GMT.
## Systemvoraussetzungen
- Linux oder Windows
- Python >= 3.6
## Verwendung
Die Aufruf ist denkbar einfach. Zu beachten ist, dass es sich um ein
Kommandozeilentool handelt. Es gibt keine grafische Benutzeroberfläche.
Falls sich das Programm nicht im gleichen Verzeichnis wie die TYP-Dateien
befindet, kann das TYP-Verzeichnis angegeben werden.
Hier die Ausgabe von `sp_replace_typ.py --help`
```
usage: sp_replace_typ.py [-h] [-t TYPDIR] imgfile
Das Programm passt die Darstellung der Garmin-"Speichenkarte" an.
positional arguments:
imgfile Garmin gmapsupp-Datei
optional arguments:
-h, --help show this help message and exit
-t TYPDIR, --typdir TYPDIR
Verzeichnis mit den TYP-Dateien
```

View file

@ -17,15 +17,24 @@ def get_famid_name_from_imgfile(imgfile_path):
# 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+), (.*)"
# output = subprocess.run(
# [f'{GMT} -i "{imgfile_path}"'], shell=True, capture_output=True, text=True).stdout
session = subprocess.Popen(
[GMT, '-i', imgfile_path], stdout=subprocess.PIPE)
output, _ = session.communicate()
pattern = b".* FID (\d+), (.*)"
#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))
fid = str(match.group(1), 'UTF-8').strip()
name = str(match.group(2), 'UTF-8').strip()
return (fid, name)
def ask_for_visualization():
@ -117,9 +126,13 @@ 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()
parser.add_argument('-t', '--typdir', type=str,
help='Verzeichnis mit den TYP-Dateien')
args = parser.parse_args()
imgfile = args.imgfile
typ_dir = os.getcwd()
if args.typdir:
typ_dir = args.typdir
(fid, name) = get_famid_name_from_imgfile(imgfile)
@ -127,13 +140,14 @@ def main():
typ_file = f'TYP_{name}_{fid}{basic}{srtm}{text}_gmapsupp.typ'
print(f'\nGewählte TYP Datei: {typ_file}\n')
print(f'\nGewählte TYP Datei: {typ_file}')
print(f'Verzeichnis mit den TYP-Dateien: {typ_dir}\n')
if not os.path.isfile(typ_file):
if not os.path.isfile(typ_dir + os.sep + typ_file):
sys.exit('FEHLER: Die Typdatei ist nicht vorhanden.')
print('Wende die Typ-Datei an…')
subprocess.run([GMT, '-wx', imgfile, typ_file])
subprocess.run([GMT, '-wx', imgfile, typ_dir + os.sep + typ_file])
print('\nFertig.')
@ -141,5 +155,5 @@ if __name__ == "__main__":
if platform.system() == 'Linux':
GMT = './gmt'
else: # Windows…
GMT = './gmt.exe'
GMT = 'gmt.exe'
main()