PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Karte mit map Datei laden


Wolfgang16
17.03.2013, 12:11
Hallo,

GDAL kann ja Ozi map Dateien in gewissen Grenzen lesen. Ich schaffe es aber nicht, sowas in QLandkarte zu laden, weder direkt noch über F1, F6. Wird das geblockt oder wie muß man da vorgehen?

kiozen
17.03.2013, 14:49
Wenn es geht sollte es mit Datei->Karte laden und F1->F6 gehen. Die *.map und Bilddatei müssen den gleichen Namen haben. In der Map Datei muss auch der richtige Bildname stehen. Ich würde auch mal versuchen die *.map Datei zu öffnen und wenn das nicht geht die Bilddatei. Eigentlich sollte es egal sein und GDAL sucht sich schon das Richtige.

Auf der Kommandozeile ist gdalinfo ein Versuch wert. Da bekommt man besser mit was GDAL sieht, bzw versteht.

MiLeo
17.03.2013, 19:08
Soweit ich das jetzt noch aus dem Stehgreiff weis:
QLandkarte öfnnet keine klassischen Ozi-map-Kalibrierungen mit normalen Bildern (JPG, PNG, BMP usw) sondern nur im ozf2-Format. Manche ozf(x)3 gehen teilweise auch noch.
Jedenfalls kann ich mich erinnern das ich mal mit Img2ozf rumbasteln musste.
GDAL auf der Kommandozeile (oder QGIS) ist aber sicher die sauberere Lösung. Kann man dann sicher gleich in ein GeoTiff umwandeln.

kiozen
17.03.2013, 19:17
QLGT sollte genauso wie jedes andere Programm, das auf GDAL aufbaut, die Datei öffnen. In der API wird einfach nur der Dateiname übergeben, den Rest kaspert GDAL aus.

Die üblichen Fehlerquellen sind der Dateiname, oder eben eine Projektion, die nicht unterstützt wird.

Wolfgang16
17.03.2013, 20:11
Was ich in Erinnerung habe, kann gdal eine map+ozfx öffnen. Man muß dann die *.map angeben und die ozfx muß in der map eingetragen sein. Weiters kann gdal gif+map oder jpg+map öffnen, dann muß man aber die *.gif angeben und die *.map muß den gleichen Namen haben. Das liegt daran, daß das von verschiedenen Leuten völlig unkoordiniert da reingehackt wurde. tif+map geht merkwürdigerweise nicht.

Ich hab jetzt mal folgendes ausprobiert: gif+map (russische Genstabkarte) mit gleichem Namen: gdalinfo xy.gif liefert was vernünftiges. gdalinfo xy.map liefert not supported file format. QLandkarte Karte laden xy.gif liefert "keine Georefernzinformationen gefunden"
F1 F6 hinzufügen xy.gif liefert "Laden der Datei xy.gif fehlgeschlagen"


Nachtrag: für map+ozfx wurde ein eigener Treiber geschrieben, das ist also die "ordentliche" Variante, und nachdem sie von Des Newman die Erlaubnis bekommen haben, die Ozi Datumsdefinitionen zu verwenden, wird das wohl da eingebaut werden.

Für gif+map wurde einfach nur der gif Treiber gehackt und deshalb funktioniert das wohl nur mit einigen ausgewählten Datums und Projektionen und wird vermutlich nicht weiter ausgebaut werden.

MiLeo
17.03.2013, 20:22
F1 F6 hinzufügen xy.gif liefert "Laden der Datei xy.gif fehlgeschlagen"
Geht es bei deinem Gif mit F1 > F6 > xy.map?
Und lässt sich dann daraus eine Kartensammlung (.qmap) erstellen?

Wolfgang16
17.03.2013, 21:01
Das liefert das gleiche wie mit xy.gif. Das wird auch gar nicht erst in die Kartensammlung übernommen - weder in eine neue noch in eine bestehende.

Dieses F1 F6 ist mir eh suspekt, weil da dann steht "Erzeuge Kartensammlung aus Geotiff" Das sind aber keine Geotiffs.

MiLeo
17.03.2013, 21:24
Danke fürs Testen und die Erklärungen. Deckt sich dann doch mit meinen eigenen Erfahrungen. Bei mir war es allerdings statt dem Gif ein PNG.
Eine .ozf(...) kann ich übrigens auch nicht laden sondern die dazugehörige .map. Daher meine Frage von oben.

Dieses F1 F6 ist mir eh suspekt, weil da dann steht "Erzeuge Kartensammlung aus Geotiff" Das sind aber keine Geotiffs.Na gut. An der Formulierung würde ich mich jetzt nicht aufhängen. Man weis ja wies gemeint ist. Alles andere würde wohl einen noch viel längeren Text liefern.

Wolfgang16
17.03.2013, 22:18
Ja, eine ozf kann man nicht direkt laden, sondern nur die map, in welcher dann in der 2. oder 3.Zeile der Name der ozf stehen muß. Der Name kann dann auch anders sein. Für die ozf ist der Ozi Treiber zuständig, das ist ein völlig anderer Teil der Software.

Mir ist es jetzt auch gelungen eine ozf2 zu laden - einfach über Datei|Karte laden und dann die map anklicken. Nicht geklappt hat es aber mit einer ozfx3. Da kommt die Meldung "keine Georeferenzinformationen gefunden", obwohl gdalinfo diese ausspuckt und gdal_translate sogar in der Lage ist, das in ein tif umzuwandeln.

Nachtrag der Vollständigkeit halber: hier steht das mit den Ozi Datums:
http://trac.osgeo.org/gdal/ticket/3929

kiozen
18.03.2013, 07:38
Bitte das "GeoTiff" nicht immer bierernst nehmen. Das GT steht zwar für GeoTiff, aber das war nur die anfängliche Idee. Grundsätzlich sollten alle GDAL unterstützten Formate möglich sein. Wobei _das_ GDAL Format eben auch GeoTiff ist. Damit kann man am meisten anfangen.

Ich wandel eigentlich auch immer alles zuerst in GeoTiff um. Zuviel kuntibunti bei den Formaten sorgt nur für Chaos auf der Festplatte. Zumal ich Formate, die mehr als eine Datei brauchen, nicht ausstehen kann.

Zu den OZI Karten: Stimmt da war was mit den Dateiformaten. Je nachdem wie GDAL compiliert wurde wird das eine oder andere Format nicht unterstützt. Für JPEG und PNG werden externe Bibliotheken verwendet. Sind die nicht da, geht es nicht. Was die Windowsversion kann oder nicht, weiß ich nicht.

teleskopix
18.03.2013, 09:34
Für Linux gibt es dieses Script (*.sh) http://offroadfreunde.ch/qlandkarte/convert.sh es macht aus *.map -> *.gcp, die eigentliche Karte muß ein *.tif, *.png, usw. sein.
Bei ozfx3 gibt es eine neuere Version, die wird imho von GDAL nicht unterstützt - Des Newman möchte das vermutlich auch nicht. Das liegt imho an http://androzic.com/ da diese App die "alten" ozfx2/ozfx3 kann, aber die neuen ozfx3 gehen nicht.
Ob man das Linux-Script in eine Windows *.bat oder ähnliches umwandeln kann, kann ich nicht beantworten.

Wolfgang16
15.05.2013, 19:31
Das neue GDAL 1.10 bietet jetzt erweitere Möglichkeiten mit .map Dateien:

http://trac.osgeo.org/gdal/wiki/Release/1.10.0-News

ozi2vrt.py a script to convert .MAP file into .VRT
ozi2gdal.py an enhanced version of the script to convert .MAP file into .VRT
gdal-ozimap.patch.gz OziExplorer? .MAP driver

sowie die original Oziexplorer Datumsdefinitionen:

data/ozi_datum.csv
data/ozi_ellips.csv

Wolfgang16
22.05.2013, 11:41
In GDAL 1.10 schreibt man jetzt immer die *.map in die Befehlszeile. Damit ist das endlich vereinheitlicht und funktionioniert auch mit anderen als ozf Dateien. Der Treiber heißt map driver.

Ich habe nun einen Grund gefunden, warum QLandkarte GT manche dieser Ozidateien nicht akzeptiert. Das hat mit Ozi erstmal garnichts zu tun, sondern damit, daß es 2 verschiedene Arten gibt, eine Georeferenzierung in eine GeoTiff zu schreiben. Bei der ersten Variante werden Koordinaten im Stil eines Wordfiles eingetragen. Das können die meisten Programme inklusive QLGT lesen.

Wenn man jedoch von einer map Datei ausgeht, dann trägt gdal_translate einfach die GCPs aus der *.map in die Tiff Datei ein. Das ist offenbar auch eine zulässige Variante, wird aber von QLGT nicht akzeptiert: keine Georeferenzinformationen gefunden. TTQV4 und QV6 interpretieren das auch nicht richtig. So eine GeoTiff hab ich mal angehängt; in gdalinfo sieht das dann so aus:

C:\maps\50000>gdalinfo -noct test.tif
Driver: GTiff/GeoTIFF
Files: test.tif
Size is 3403, 3117
Coordinate System is `'
GCP Projection =
PROJCS["unnamed",
GEOGCS["Pulkovo 1942",
DATUM["Pulkovo_1942",
SPHEROID["Krassowsky 1940",6378245,298.2999999999985,
AUTHORITY["EPSG","7024"]],
AUTHORITY["EPSG","6284"]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433],
AUTHORITY["EPSG","4284"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",45],
PARAMETER["scale_factor",1],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",0],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]]]
GCP[ 0]: Id=1, Info=
(100,106) -> (357685.766463653,4782807.11213897,0)
GCP[ 1]: Id=2, Info=
(1647,100) -> (367851.254555488,4782602.22720938,0)
GCP[ 2]: Id=3, Info=
(3297,106) -> (378016.70146789,4782412.52758289,0)
GCP[ 3]: Id=4, Info=
(98,1564) -> (357492.398996449,4773548.73195437,0)
GCP[ 4]: Id=5, Info=
(1698,1564) -> (367671.707560777,4773343.8868211,0)
GCP[ 5]: Id=6, Info=
(3300,1561) -> (377850.973054314,4773154.22407581,0)
GCP[ 6]: Id=7, Info=
(98,3019) -> (357299.334569795,4764290.47450573,0)
GCP[ 7]: Id=8, Info=
(1647,3017) -> (367492.44198133,4764085.67090163,0)
GCP[ 8]: Id=9, Info=
(3301,3020) -> (377685.504426164,4763896.04664196,0)
Metadata:
AREA_OR_POINT=Area
Image Structure Metadata:
INTERLEAVE=BAND
Corner Coordinates:
Upper Left ( 0.0, 0.0)
Lower Left ( 0.0, 3117.0)
Upper Right ( 3403.0, 0.0)
Lower Right ( 3403.0, 3117.0)
Center ( 1701.5, 1558.5)
Band 1 Block=3403x2 Type=Byte, ColorInterp=Palette
Metadata:
GIF_BACKGROUND=0
Color Table (RGB with 256 entries)

Globalmapper liest sowas richtig, QLGT aber nicht! Erst wenn man das dann nochmal durch gdalwarp wurschtelt, dann wird die Referenzierung im Stil eines Worldfiles eingetragen und dann liest das auch QLGT. Ich vermute mal, daß gdal_translate nicht die Fähigkeit hat, sowas umzurechnen.

teleskopix
22.05.2013, 13:09
um eine *.map + *.png/tiff/jpg für qlgt zu nutzen, nutze ich dieses Linux-Script
http://offroadfreunde.ch/qlandkarte/convert.sh
es macht aus der *.map eine *.gcp
und wenn qlgt zu einer Bilddatei eine *.gcp hat, macht qlgt im Handumdrehen daraus eine Geotiff

Servus
Martin

Wolfgang16
25.05.2013, 17:02
Hallo Martin,

dieses Skript scheint mir überflüssig. GDAL kann die GCPs aus der .map wunderbar extrahieren und damit ein GeoTiff erzeugen. Nur QLGT kann das dann nicht lesen. Das ist meiner Meinung nach der eigentliche Knackpunkt bei der Geschichte.

...und wenn qlgt zu einer Bilddatei eine *.gcp hat, macht qlgt im Handumdrehen daraus eine Geotiff

Besteht das Handumdrehen dann in einer Reprojektion mit gdalwarp? Dann kann man alles allein mit GDAL machen.

teleskopix
26.05.2013, 12:23
:) Erst mal muß ich von Hand, da Ubuntu, die neue GDAL-Version kompilieren und installieren.
Den Fehler mit dem Geotiff wird Oliver sicherlich nach seinem Urlaub abstellen.
Was QLGT mit Bild + gcp im Hintergrund aufruft um Geotiff zu erstellen, habe ich nie geprüft.

Servus
Martin

Wolfgang16
30.05.2013, 22:32
Ich hab mich noch ein bischen mit GDAL beschäftigt:

die Befehlszeile zur Umwandlung lautet:

gdal_translate -co COPY_SRC_OVERVIEWS=YES -co TILED=YES -co COMPRESS=LZW name.map name.tif

In der name.map muß die zugehörige Bilddatei angegeben sein. Das kann jetzt im Prinzip alles sein, was GDAL verarbeiten kann, insbesondere kann es auch eine tif Datei sein. Man kann jetzt also map+tif in GeoTiff umwandeln.

Die Projektionen UTM und Lambert Conformal Conic funktionieren.

Mit "-co COPY_SRC_OVERVIEWS=YES" übernimmt man die in der ozf Datei enthaltenen Overviews direkt in die GeoTiff. gdaladdo ist dann nicht mehr nötig.

Im gdal-data Verzeichnis befinden sich eine ozi_datum.csv und eine ozi_ellips.csv, die man manuell editieren und so weitere Datums hinzufügen kann.

Es gibt eine Umgebungsvariable OZI_APPROX_GEOTRANSFORM. Wenn man die auf YES setzt, dann zwingt man GDAL, die Geotransformation durchzuführen.

Und noch was sehr interessantes, was aber nichts mit Ozi zu tun hat: man kann jetzt JPEG Bilder ohne Rekompression - also verlustfrei - in Tiff mit JPEG Kompression umwandeln!

Note: in GDAL 1.10, I've introduced in the GeoTIFF driver an optimization that
will take the JPEG coefficients of a JPEG dataset and put them as a JPEG-in-TIFF
without doing any decompression/decompression, so preserving exactly the
quality of the source JPEG (and being much faster)

This is accomplished by : gdal_translate my.jpeg my.tif -co COMPRESS=JPEG
(if you add -co QUALITY=xxx , or some other options, then the optimization
will not be triggered)

Note that it currently only works with a single JPEG image, not a VRT of
several JPEG for example.

:jubel:

http://osgeo-org.1560.x6.nabble.com/gdal-dev-Applying-colour-contrast-corrections-to-geotiffs-td5039714.html