x

Georeferenzierung von Karten


  1. Georeferenzierung von Karten · aighes (Gast) · 21.01.2012 21:59 · [flux]

    Hallo,
    ich starte dafür mal einen neuen Faden. (ausgegliedert von: http://forum.openstreetmap.org/viewtopic.php?id=15163 )

    Ausgangsmaterial ist eine Karte mit Gradraster. Diese würde ich gerne anhand des Rasters referenzieren und dann in josm als Hintergrund verwenden. Letzterer Punkt ist kein Problem. Nur wie bekomme ich aus dem jpg ein geotif in Merkartor-Projektion?

    Bisher hab ich mit QGis 1.7.3 ein wenig rumprobiert. Aber ohne richtige Ahnung von der Materie der ganzen Projektionen scheint mir das aussichtslos. Das Plugin für Georeferenzierungen hab ich gefunden und dort auch das Bild geöffnet. Hier werde ich nach einer Projektion gefragt; welche muss ich da angeben?

    Anschließend setze ich auf einige der Gitterkreuzungspunkte Referenzpunkte und soll dazu x und y Werte angeben. Bisher hab ich es hier mit den Angaben der Karte gemacht. Bspw. für W70 S50 x=-70 und y=-50

    Anschließend soll ich noch ein paar Einstellungen machen. Unter anderem auch eine Projektion angeben. Hier hab ich dann Merkartor (wie in josm) ausgewählt und dann den Prozess gestartet. Das resultierende tif ist zwar verzerrt, allerdings landet es nicht da, wo es landen sollte.


    • Re: Georeferenzierung von Karten · SunCobalt (Gast) · 21.01.2012 22:16 · [flux]

      muss es unbedingt ein GeoTiff sein? Ein jpg kann auch mit einem Worldfile (*.jgw) referenziert werden. Da das bei mir mit JOSM nie direkt geklappt hat, bin ich immer den Umweg über Mapserver gegangen. Da war es egal ob GeoTiff oder JPG mit worldfile


    • Re: Georeferenzierung von Karten · aighes (Gast) · 21.01.2012 22:37 · [flux]

      Ähm...ne...geotif muss nicht sein. Wie ist mir im Prinzip egal. Bei meinem planlosen rumprobiere kam am Ende nur ein tif raus.


    • Re: Georeferenzierung von Karten · kellerma (Gast) · 22.01.2012 04:16 · [flux]

      Die Projektion findet man auf der Karte selbst,
      es ist eine LCC (2SP) 😉


    • Re: Georeferenzierung von Karten · lutz (Gast) · 22.01.2012 09:35 · [flux]

    • Re: Georeferenzierung von Karten · kellerma (Gast) · 22.01.2012 20:42 · [flux]

      So, nachdem mir bei meinen debian squeeze bei der Georeferenzierung immer das qgis 1.4 absemmelt ist hab' ich mir jetzt ein
      1.9.90 geholt, jawohl 😉
      Die Georefernzierung stürzt nicht mehr ab, aber leider ist das Teil ja immer noch gegen die libgdal1.6 verlinkt.

      Auch mit lokalem 1.8.1 gdal sowie
      gdal_translate a.png a.tif -a_srs "+proj=lcc +lon_0=-76.083 +lat_0=-48.467 +lat_1=49.333 +lat_2=54.666"
      gdalwarp -t_srs "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" a.tif b.tif
      sowie World-File
      850
      0
      0
      -850
      0
      0
      für das a.png (nur die Karte selbst, ohne Legende links/unten) ergibt sich immer noch kein entzerrtes Bild.

      Schade, schade, schade.


    • Re: Georeferenzierung von Karten · Netzwolf (Gast) · 23.01.2012 03:09 · [flux]

      Moin moin,

      kellerma wrote:

      Auch mit lokalem 1.8.1 gdal sowie

      gdal_translate␣a.png␣a.tif␣-a_srs␣"+proj=lcc␣+lon_0=-76.083␣+lat_0=-48.467␣+lat_1=49.333␣+lat_2=54.666"
      gdalwarp␣-t_srs␣"+proj=longlat␣+ellps=WGS84␣+datum=WGS84␣+no_defs"␣a.tif␣b.tif
      

      sowie World-File

      850
      0
      0
      -850
      0
      0
      

      für das a.png (nur die Karte selbst, ohne Legende links/unten) ergibt sich immer noch kein entzerrtes Bild.

      Bitte überprüfe einmal den Parameter lat_0. Der definiert, welcher Punkt der Erdkugel auf den "Ursprung" der Karte abgebildet wird.
      Bei den an sich plausiblen Schnittbreiten von 49° und 54° wäre die Abbildung bei -48° grotesk verzerrt, darum glaube ich den Wert nicht.
      Möglicherweise einfach ein Vorzeichenfehler?

      Gruß Wolf


    • Re: Georeferenzierung von Karten · kellerma (Gast) · 23.01.2012 17:54 · [flux]

      Netzwolf wrote:

      Bitte überprüfe einmal den Parameter lat_0. Der definiert, welcher Punkt der Erdkugel auf den "Ursprung" der Karte abgebildet wird.
      Bei den an sich plausiblen Schnittbreiten von 49° und 54° wäre die Abbildung bei -48° grotesk verzerrt, darum glaube ich den Wert nicht.
      Möglicherweise einfach ein Vorzeichenfehler?

      Vielen Dank fürs Mitdenken.

      Jetzt hab' ich schon ein paar Kombinationen hinter mir, "lat_0=-48", "lat_0=+49", "+lat_1=-49.333 +lat_2=-54" (da ja vom Südpol kommend), mit und ohne "-a_ullr -77.0 -48.0 -55.0 -55.0";
      hat aber alles noch nicht so richtig gefruchtet.

      Denke, wir brauchen hier einen Spezl der Lambertschen konisch-konformen Projektion
      unter besonderer Berücksichtigung der südlichen Hemnisphäre sowie gdal 😉


    • Re: Georeferenzierung von Karten · ajoessen (Gast) · 24.01.2012 07:33 · [flux]

      kellerma wrote:

      (nur die Karte selbst, ohne Legende links/unten) ergibt sich immer noch kein entzerrtes Bild.

      Schade, schade, schade.

      Nun, was erwartest du? In "unserer" Mercatorprojektion sind die Meridiane immer senkrecht, bei der Kartenvorlage dagegen ziemlich gebogen. Wenn du das auf Mercator zurechtbiegen willst, bekommst du ein derart verzerrtes Bild, dass du dann erst recht nichts mehr lesen kannst.

      Bei kleinen Ausschnitten der Welt mag der Effekt vernachlässigbar sein, bei Karten der halben Welt aber nicht.

      Sinn macht eine Georeferenzierung nur, wenn man das KBS (oder wenigstens die Projektion) beibehält. Dann ist Georeferenzierung im Prinzip eine Verschiebung und Skalierung. Eine Verdrehung ist zwar im Worldfile vorgesehen, wird aber meist nicht gesetzt bzw ausgewertet.

      Eine Umprojektion macht nur bei Vektordaten wirklich Sinn, weil es dabei keine verzerrte Beschriftung gibt.
      Da die OSM-Rohdaten Vektordaten sind, sollte man also die passende Lambert-CC Projektion in Quantum GIS einstellen, die Karte georeferenzieren, und die OSM-Daten als Vektor drüberlegen, bzw ein neues Shapefile erstellen, das wiederum WGS84 sein kann.

      JOSM unterstützt nur einige wenige Projektionen. Ob davon eine "passt", weiß ich nicht.

      Gruß,
      ajoessen


    • Re: Georeferenzierung von Karten · kellerma (Gast) · 24.01.2012 08:25 · [flux]

      ajoessen wrote:

      kellerma wrote:

      (nur die Karte selbst, ohne Legende links/unten) ergibt sich immer noch kein entzerrtes Bild.

      Schade, schade, schade.

      Nun, was erwartest du? In "unserer" Mercatorprojektion sind die Meridiane immer senkrecht, bei der Kartenvorlage dagegen ziemlich gebogen. Wenn du das auf Mercator zurechtbiegen willst, bekommst du ein derart verzerrtes Bild, dass du dann erst recht nichts mehr lesen kannst.

      Bei kleinen Ausschnitten der Welt mag der Effekt vernachlässigbar sein, bei Karten der halben Welt aber nicht.

      Sinn macht eine Georeferenzierung nur, wenn man das KBS (oder wenigstens die Projektion) beibehält. Dann ist Georeferenzierung im Prinzip eine Verschiebung und Skalierung. Eine Verdrehung ist zwar im Worldfile vorgesehen, wird aber meist nicht gesetzt bzw ausgewertet.

      Eine Umprojektion macht nur bei Vektordaten wirklich Sinn, weil es dabei keine verzerrte Beschriftung gibt.
      Da die OSM-Rohdaten Vektordaten sind, sollte man also die passende Lambert-CC Projektion in Quantum GIS einstellen, die Karte georeferenzieren, und die OSM-Daten als Vektor drüberlegen, bzw ein neues Shapefile erstellen, das wiederum WGS84 sein kann.

      JOSM unterstützt nur einige wenige Projektionen. Ob davon eine "passt", weiß ich nicht.

      Die Beschriftungen sind das kleinste Problem, die kann ich problemlos von der alten Karte (die ich ja nicht wegzuwerfen brauche 😉 ablesen.
      Es geht um das Abmalen der Geländekonturen.

      Vermute stark, dass die LCC negative Werte hat, also "+proj=lcc +lat_1=-49.333 +lat_2=-54.666"
      Werde jene mir heut' abend mal im qgis-1.9 anschauen.


    • Re: Georeferenzierung von Karten · ajoessen (Gast) · 24.01.2012 08:42 · [flux]

      kellerma wrote:

      Es geht um das Abmalen der Geländekonturen.

      Und da soll die Karte mit Luftbildern ernsthaft konkurrieren können?

      gruß,
      ajeossen


    • Re: Georeferenzierung von Karten · kellerma (Gast) · 24.01.2012 09:04 · [flux]

      ajoessen wrote:

      kellerma wrote:

      Es geht um das Abmalen der Geländekonturen.

      Und da soll die Karte mit Luftbildern ernsthaft konkurrieren können?

      gruß,
      ajeossen

      Die Luftbilder hab ich mir von der Gegend noch gar nicht angeschaut, ist eine kommerz.
      eher weniger imteressante Gegend 😉

      Die Karte hat Massstab 1 : 1000000 , auf cm wird's daher eh nicht genau 🙂


    • Re: Georeferenzierung von Karten · Netzwolf (Gast) · 24.01.2012 13:44 · [flux]

      Moins,

      ajoessen wrote:

      Nun, was erwartest du? In "unserer" Mercatorprojektion sind die Meridiane immer senkrecht, bei der Kartenvorlage dagegen ziemlich gebogen. Wenn du das auf Mercator zurechtbiegen willst, bekommst du ein derart verzerrtes Bild, dass du dann erst recht nichts mehr lesen kannst.

      Wir sind an Projektionen gewöhnt, die die Breite ausschließlich auf die Karten Y-Achse und die Länge ausschließlich auf die Karten-X-Achse abbilden. Das heißt aber nicht, dass andere Projektionen komplizierter sind.

      Bei der konischen Projektion wird die Länge auf einen Winkel und die Breite auf eine Entfernung abgebildet. Das ergibt eine Koordinate in Polardarstellung. Die wird in kartesische Koordinaten umgerechnet, und das wars auch schon.

      Der zusätzliche Schritt polar ↔ kartesisch ist sowohl vorwärts als auch rückwärts trivial zu rechnen.

      Durch diesen Ablauf werden bei der konischen Projektion Meridiane auf exakt gerade Linien und Breitenkreise auf exakte Kreisbogen abgebildet. Nur verlaufen die Meridiane nicht mehr parallel.

      Bei allen Projektionen gibt es noch die nichtlineare Transformation einer Entfernung, mit der man die gewünschten Eigenschaften der Projektion erreicht: Konformität, Flächentreue, Richtungstreue, Erhalt von Großkreisen, Entfernungstreue, you name it. Diese Transformation macht den eigentlichen Aufwand.

      Sie ist bei konform konisch zwar anders, aber nicht aufwendiger als bei Merkator: bei beiden gibt es (anders als bei UTM z.B.) eine geschlossene Darstellung ohne Näherungsformeln oder Iteration.

      ajoessen wrote:

      Bei kleinen Ausschnitten der Welt mag der Effekt vernachlässigbar sein, bei Karten der halben Welt aber nicht.

      Alle konformen Projektion erzeugen in kleinen Bereichen ähnliche Abbildungen, die sich nur durch Skalierung und Drehung unterscheiden können. Eben dazu hat Herr Gauß das Konzept der Konformität entwickelt.

      Bei großen Bereichen unterscheiden sich die Projektionen natürlich sehr – sie wurden ja für unterschiedliche Anwendungen und unterschiedliche Regionen der Erde entwickelt. Das heißt aber nicht, dass sie schwer ineinander zu überführen sind.

      ajoessen wrote:

      Eine Umprojektion macht nur bei Vektordaten wirklich Sinn, weil es dabei keine verzerrte Beschriftung gibt.

      Wandle ich eine Karte in konischer Projektion per Bildtransformation in eine Karte in rechtwinkliger Projektion (z.B. Merkator), werden die Meridiane "aufgerichtet", und dabei die Beschriftung maximal um soviel gedreht, wie die Meridiane vorher "schief" standen. Das mag irritierend sein (ich möchte das gerne mal sehen), erschwert aber wahrscheinlich das "Malen nach Zahlen" nicht wirklich.

      ajoessen wrote:

      Da die OSM-Rohdaten Vektordaten sind, sollte man also die passende Lambert-CC Projektion in Quantum GIS einstellen, die Karte georeferenzieren, und die OSM-Daten als Vektor drüberlegen, bzw ein neues Shapefile erstellen, das wiederum WGS84 sein kann.

      Oder man transformiert die Kartengrafik in eine Kartengrafik anderer Projektion - was in dem hier angesprochenen Fall trivial ist – und malt dann in JOSM ab, so wie man das seit Jahrzehnten gewöhnt ist.

      kellerma wrote:

      Die Beschriftungen sind das kleinste Problem, die kann ich problemlos von der alten Karte (die ich ja nicht wegzuwerfen brauche 😉 ablesen.
      Es geht um das Abmalen der Geländekonturen.

      Willkommen im Club :-)

      kellerma wrote:

      Vermute stark, dass die LCC negative Werte hat, also "+proj=lcc +lat_1=-49.333 +lat_2=-54.666"
      Werde jene mir heut' abend mal im qgis-1.9 anschauen.

      Die Linien konstanter Breite bilden Kreisbögen. Wenn der (gedachte, liegt immer außerhalb der Karte) Mittelpunkt der Kreise im Süden liegt, steht der Kegel auf dem Kopf, und dann müssen die Schnittbreiten (lat1/lat2) negativ sein (genauer: der kleinere muss kleiner sein als der negative Betrag des größeren).

      Und *ganz* wichtig ist, dass der Umrechner weiß, wo exakt auf der gescannten Karte (Y-Position) die Bezugsbreite (lat0) liegt, und um welchen Faktor die Karte vergrößert ist. Daraus wird nämlich der Mittelpunkt des Kreises (=Spitze des Kegels) berechnet, und sind diese Werte falsch, ist die gesamte Abbildung Schrott.

      Gruß Wolf


    • Re: Georeferenzierung von Karten · kellerma (Gast) · 24.01.2012 23:13 · [flux]

      Nach langem Kampf 😉

      $␣cs2cs␣+proj=longlat␣+ellps=WGS84␣+datum=WGS84␣+no_defs␣+to␣+proj=lcc␣+lon_0=-67␣+lat_0=-52␣+lat_1=-49d20␣+lat_2=-54d40
      -75.88␣-47.48
      -668952.66␣␣␣␣␣␣461790.36␣0.00
      $␣cat␣d.wld
      185
      0
      0
      -185
      -668952.66
      461790.36
      $␣gdal_translate␣map_ohne_legende.png␣d.tif␣-a_srs␣"+proj=lcc␣+lon_0=-67␣+lat_0=-52␣+lat_1=-49d20␣+lat_2=-54d40"
      $␣gdalwarp␣d.tif␣e.tif␣-t_srs␣"+proj=longlat␣+ellps=WGS84␣+datum=WGS84␣+no_defs"
      $␣gdalinfo␣e.tif
      Driver:␣GTiff/GeoTIFF
      Files:␣e.tif
      Size␣is␣9191,␣3810
      Coordinate␣System␣is:
      GEOGCS["WGS␣84",
      DATUM["WGS_1984",
      SPHEROID["WGS␣84",6378137,298.257223563,
      AUTHORITY["EPSG","7030"]],
      AUTHORITY["EPSG","6326"]],
      PRIMEM["Greenwich",0],
      UNIT["degree",0.0174532925199433],
      AUTHORITY["EPSG","4326"]]
      Origin␣=␣(-77.800112860625660,-47.435764586455079)
      Pixel␣Size␣=␣(0.002416744461471,-0.002416744461471)
      Metadata:
      AREA_OR_POINT=Area
      Image␣Structure␣Metadata:
      INTERLEAVE=PIXEL
      Corner␣Coordinates:
      Upper␣Left␣␣(␣-77.8001129,␣-47.4357646)␣(␣77d48'␣0.41"W,␣47d26'␣8.75"S)
      Lower␣Left␣␣(␣-77.8001129,␣-56.6435610)␣(␣77d48'␣0.41"W,␣56d38'36.82"S)
      Upper␣Right␣(␣-55.5878145,␣-47.4357646)␣(␣55d35'16.13"W,␣47d26'␣8.75"S)
      Lower␣Right␣(␣-55.5878145,␣-56.6435610)␣(␣55d35'16.13"W,␣56d38'36.82"S)
      Center␣␣␣␣␣␣(␣-66.6939637,␣-52.0396628)␣(␣66d41'38.27"W,␣52d␣2'22.79"S)
      Band␣1␣Block=9191x1␣Type=Byte,␣ColorInterp=Red
      Band␣2␣Block=9191x1␣Type=Byte,␣ColorInterp=Green
      Band␣3␣Block=9191x1␣Type=Byte,␣ColorInterp=Blue
      $
      

      100% stimmt's nicht (die Pixelbreite ist evtl. nicht ganz richtig, der Offset auch nicht ganz),
      aber die Marsch-Richtung passt 🙂