PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sinnvolle Größe für erzeugte Geotifs


rennradler
02.05.2012, 18:02
Hallo,

ich bin gerade dabei, meine ganzen Rasterkarten für Qlandkarte nutzbar zu machen. Die Karten eines bestimmten Verlags sind zwar wunderbar hochauflösend, aber wenn ich die in ein Tif-File exportiere, ist das so groß, daß mein nicht gerade schwächlicher Rechner (4GB RAM, Phenom X4) bei der Umwandlung in ein geotif hoffnungslos überfordert ist.

Als erstes habe ich in ozi2geotif.py den übelsten Speicher- und CPU-Überlaster, nämliche den convert-Befehl rausgenommen, da der nach meinem Verständnis für die expotierten tifs unnötig ist (die haben bereits eine 8-Bit-Palette).

Damit hat sich die Situation erheblich gebessert. Dennoch kann ich die Karte nicht im Stück exportieren. Ab einer bestimmten Größe streikt anscheinend geotifcp, denn das Skript bricht mit einer Fehlermeldung ab:

Traceback (most recent call last):
File "ozi2geotiff2.py", line 208, in <module>
convert_ozi_map(options.in_file, options.in_img, options.out_file)
File "ozi2geotiff2.py", line 166, in convert_ozi_map
raise Exception("geotifcp failed. exit code = %d" % ret)
Exception: geotifcp failed. exit code = 1


Davon unabhängig stellt sich natürlich die Frage, ob es aus Performance-Gründen auch für qlandkarte sinnvoll ist, die Karte in mehrere Kacheln zu zerlegen.

Ein Tif-File der Größe 32256x40421x8 packt ozi2geotif.py noch - sind im Fall der besagten Karte eine Aufteilung in 2 Kacheln. Soll ich das so lassen oder lieber mehr Kacheln machen?

Ja, und das Problem, das ist dann wieder habe: wie beim Höhenmodell gibt Lücken. Wie löse ich das?

Herzliche Grüße,
Bernhard

gerhardg
02.05.2012, 18:36
ist die libgeotiff nicht auf 4gb filegröße begrenzt? bilde mir ein das es da eine bigtiff lib gab die das löste.

im grunde würde ich überlegen ob deine gesamte softwarelinie mit großen tif´s zurechtkommt. insbesondere wenn du die selbe datei mit irgendeinem anderen viewer auf einem mobilgerät verwenden willst.

kiozen
02.05.2012, 20:30
Geotiff kann bis zu 4GB. Wenn GDAL mit bigtiff Kompiliert wurde geht auch mehr. Was geht kann man sich unter "Hilfe->Über QLGT->Formate" ansehen.

4GB an Daten zu bearbeiten kann dauern. Besonders wenn man die Daten neu organisiert. Das heißt man sollte Farbeinstellungen, Kachelgröße und Kompression der Ausgangsdatei wenn möglich belassen.

Ich habe alle meine Karten als Geotiff vorliegen. In der Regel mit 8Bit Farbtabelle, 256x256 Kacheln, LZW komprimiert und Übersichtsebenen (2,4,8,16). Wenn die Dateien an die 4 GB herankommen, wird die Karte geteilt. QLGT kann ja ohne weiteres Karten aus mehreren Dateien anzeigen.

Formate wie JNX oder RMAP sind für mich reine Geräteformate. Ich habe entweder die Karten auf der Kommandozeile einmal in das betreffende Format umgewandelt und auf das Gerät kopiert. Oder ich exportiere nur den Ausschnitt den ich gerade brauche. Boliden von zig GB versuche ich auf den Geräten zu vermeiden.

rennradler
02.05.2012, 21:48
Da finde ich nur Gtif (rw+v): GeoTIFF. Hab es aus einem ppa für Ubuntu.

Splitten wäre ja nicht das Thema. Wenn ich das Script ozi2geotif.py auf die zwei Kacheln anwende, gibt es ein Lücke zwischen beiden Kachel. Ich nehme an, daß das mit unterschiedlicher Projektion der beiden Kacheln zu tun hat. Was muß ich tun, damit die Kacheln nahtlos aneinander liegen?

macnetz
02.05.2012, 23:59
Hallo Bernhard,

für Monsterkarten ab 10.000x10.000 Pixel auf schwacher PC-Hardware ist das ECW-Format unerreicht. Die grösste Karte die ich mit dem AU-ECWCompressor erzeugt habe hat ca 30GB.

Grüsse
Anton

kiozen
03.05.2012, 07:05
Da finde ich nur Gtif (rw+v): GeoTIFF. Hab es aus einem ppa für Ubuntu.

Splitten wäre ja nicht das Thema. Wenn ich das Script ozi2geotif.py auf die zwei Kacheln anwende, gibt es ein Lücke zwischen beiden Kachel. Ich nehme an, daß das mit unterschiedlicher Projektion der beiden Kacheln zu tun hat. Was muß ich tun, damit die Kacheln nahtlos aneinander liegen?

Wenn das Dateien aus unterschiedlichen Quellen sind, musst Du damit leben. Mir ist noch nicht ganz klar warum du die reprojiziern willst.

rennradler
03.05.2012, 08:02
Was ich gemacht habe:

1. Ich habe mit einem bekannten Tool die im gvg-Format vorliegenden Kartendaten extrahiert. Dabei habe ich sie in 2 Kacheln splitten lassen.

2. Ich habe das Script ozi2geotif.py auf die beiden Kacheln angewendet (den convert-Befehl habe vorher auskommentiert, das sollte aber auf das Ergebnis keinen Einfluß haben).

Nun ende ich mit dem selben Ergebnis, wie bei meiner vermurksten Konvertierung der Höhendaten.

kiozen
03.05.2012, 15:23
Was ich gemacht habe:

1. Ich habe mit einem bekannten Tool die im gvg-Format vorliegenden Kartendaten extrahiert. Dabei habe ich sie in 2 Kacheln splitten lassen.

2. Ich habe das Script ozi2geotif.py auf die beiden Kacheln angewendet (den convert-Befehl habe vorher auskommentiert, das sollte aber auf das Ergebnis keinen Einfluß haben).

Nun ende ich mit dem selben Ergebnis, wie bei meiner vermurksten Konvertierung der Höhendaten.

Was sagt den gdalinfo zu den Ozi Dateien? Vielleicht geht es ja direkt. Oder schauen wo ozi2geotif.py die Dateien reprojiziert. Das ist nicht wirklich nötig.

Barolo
03.05.2012, 15:49
Wieso eigentlich über OZI, schon mal in die Einstellungen geschaut?

Gruß
Kay

rennradler
03.05.2012, 20:40
Danke für den Hinweis - hab mich von Programmnamen leiten lassen. gcp-Files wäre passender, sehe ich das richtig?

kiozen
03.05.2012, 20:54
Danke für den Hinweis - hab mich von Programmnamen leiten lassen. gcp-Files wäre passender, sehe ich das richtig?

Ich glaube schon. Hab das Tool nie benuetzt.

rennradler
04.05.2012, 07:17
Ich habe es mal ausprobiert - sieht besser aus. Jetzt gibt es an der Nahtstelle nur einen kleinen weißen Strich. Ich muß mir das Funktion in qlandkarte zur Wandung in geotiffs noch mal genauer anschauen. Mir ist noch nicht klar, was ich bei der Kartenprojektion eintragen muß.

kiozen
04.05.2012, 08:15
Ich habe es mal ausprobiert - sieht besser aus. Jetzt gibt es an der Nahtstelle nur einen kleinen weißen Strich. Ich muß mir das Funktion in qlandkarte zur Wandung in geotiffs noch mal genauer anschauen. Mir ist noch nicht klar, was ich bei der Kartenprojektion eintragen muß.

Wenn die Karten nicht gedreht wurden, dann passt es. Wahrscheinlich überlappen sich die Karten auch, oder? Dann kannst Du versuchen, die Reihenfolge in der qmap Datei zu ändern, so dass der Weiße Rand von einer Karte ohne Rand überdeckt wird. Oder Du schneidest die Karte randfrei. Rechte Maus auf Karte. Mit "Crop: set pos 1". die linke obere Ecke auswählen. Und dann mit "Crop map..." die rechte untere Ecke.

rennradler
06.05.2012, 08:21
Hallo,

die Karten überlappen nicht, sie wurden sozusagen pixelgenau in zwei Kacheln beim Extrahieren geteilt. Ich habe hier mal zwei Screenshots angehängt.

Hier sieht man den Streifen - es ist ein kleiner Ausschnitte bei Zoomeinstellung x1:

11822

Hier ist mal ganz gewaltig reingezoomt, so daß man die einzelnen Pixel sieht. In diesem Fall ist der Streifen weg:

11823


Für die Konvertierung in geotiffs habe ich jetzt in qlandkarte mal Mercator als Projektion und WGS84 als Kartendatum eingetragen, da in der gcp-Datei folgende Zeile steht:

-a_srs +proj=tmerc +lon_0=9.000000 +lat_0=0.000000 +x_0=500000.00 +y_0=0.00 +k=0.999600 +datum=WGS84 +units=m +no_defs

Ich hoffe, da paßt dann so.

Sardinien
06.05.2012, 10:25
Rennradler,
wichtig bei Konvertierungen ist die Lagegenauigkeit zu überprüfen. Einige Meter Abweichung zum Original liegen schon mal drin.

rennradler
06.05.2012, 11:20
Ich habe verschieden Wegpunkte über die Karte verteilt im Hersteller-Viewer gesetzt, diese als gpx-Datei gespeichert und in qlandkarte geladen. Die stimmten auf das Pixel genau überein. Daher gehe ich davon aus, daß die Konvertierung / Georefferenzierung sehr gut funktioniert hat.

kiozen
06.05.2012, 12:00
Ich habe verschieden Wegpunkte über die Karte verteilt im Hersteller-Viewer gesetzt, diese als gpx-Datei gespeichert und in qlandkarte geladen. Die stimmten auf das Pixel genau überein. Daher gehe ich davon aus, daß die Konvertierung / Georefferenzierung sehr gut funktioniert hat.

Software, die zusätzliche Fehler von mehreren Pixeln in die Lage der Karte bringt ist Schrott. 1 Pixel ist in der Regel ein Rundungsfehler, den man in bestimmten Fällen auch fixen kann.

Der Streifen hat einen anderen Grund. Damit die Karten schnell dargestellt werden könne muss der gelesene Kartenausschnitt in der Breite ein Vielfaches von 4 Pixeln sein. Je nach Lage der Karte fehlen dann 0-3 Pixel. Alles kein Problem wenn die Kartendateien ein wenig in horizontaler Richtung überlappen. Bei Dir sind sie aber auf das Pixel genau geschnitten worden. Und deswegen sieht man den Spalt.

--> Karten in der Horizontalen immer 50 Pixel und mehr überlappen lassen.

rennradler
07.05.2012, 11:43
Hallo Oliver,

vielen Dank für Deine Hilfe! Ich habe sie jetzt mit einer Kachel Überlappung extrahieren lassen und nun geht es perfekt! Super!


Ich kämpfe jetzt nur noch mit den AV-Karten. Problem ist, daß qlandkarte geotiffs mit unterschiedlicher Projektion erzeugt. Wenn ich in die gcp-Dateien reinschaue, steht z.B. für die drei Zillertaler Karten (West, Mitte Ost) folgendes drin:

Zillertal Mitte:
-a_srs +proj=tmerc +lon_0=9.000000 +lat_0=0.000000 +x_0=500000.00 +y_0=0.00 +k=0.999600 +datum=WGS84 +units=m +no_defs

Zillertal Ost
-a_srs +proj=tmerc +lon_0=15.000000 +lat_0=0.000000 +x_0=500000.00 +y_0=0.00 +k=0.999600 +datum=WGS84 +units=m +no_defs

Zillertal West
-a_srs +proj=tmerc +lon_0=9.000000 +lat_0=0.000000 +x_0=500000.00 +y_0=0.00 +k=0.999600 +datum=WGS84 +units=m +no_defs

Was mach ich da, damit ich sie in einer Kartensammlung zusammenfassen kann?

kiozen
07.05.2012, 12:24
Das ist die Crux an der Transversal Merkator Projektion. Das zusammenfassen von Karten aus verschiedenen Zonen geht nicht ohne die eine oder andere Karte zu reprojizieren.

Schau dir mal das gdalwarp Kommando an. Speziell die Parameter t_srs, dstnodata und dstalpha. Damit solltest Du eine Datei so reprojizieren können, dass die entstehenden Ränder transparent sind.

rennradler
07.05.2012, 21:34
Dank für den Hinweis - da muß ich mich mal einlesen.