Luftbilder von Aerowest

Moin moin,

solange “aeroview.de” noch nicht verwendbar ist, fassen wir unsere “Hausaufgaben” zusammen:

A) Das ImportImagePlugin des JOSM wird geflickt, insbesondere
A1) sein riesiger Speicherverbrauch, was das Teil unglaublich langsam macht
A2) georeferenzierte jpegs können direkt mit JOSM (dort dann in Mercator-projektion) verarbeitet werden, sodass die vorausgehende Umwandlung nach (Geo)Tiffs durch gdal_translate/gdalwarp/etc. entfällt.
Ein ticket hab’ ich schon eröffnet, weitere könnten vielleicht die Aufmerksamkeit erhöhen :wink:

B) Anleitung für das Bearbeiten der Bild- sowie osm-Daten direkt in QGIS
B1) Hat qgis die "Q-Funktion"von JOSM (Häuschen rechteckig machen)? Ein nochmaliges Bearbeitung hierfür in JOSM ist zu umständlich.

C) Schritt-für-Schritt-Anleitung für Aufsetzen eines lokalen (127.0.0.1) WMS-Servers
Im Falle von z. B. mapserver also incl. mapfile und URL zum Eintragen in JOSM etc.
C1) Leute wie Mondschein und ich müßten ihre GDAL-Tools auf Vordermann bringen, damit die Umprojezierung von 31466/31467/31468 nach 3857 problemlos klappt.

D) Aerowest/someoneelse bietet einen globalen/regionalen WMS-Dienst an

Ciao,
Frank

Ich würds so versuchen…kann man sicher noch verfeinern
Bilder runterladen und in ein Verzeichnis packen. Dann
gdal_merge.py -o output.tif -co ‘TILED=YES’ -n 0 -of GTIFF /pfad/zu/bilder/*.tif

Das Bild “output” tilen
gdal_translate -of GTiff -co “TILED=YES” output.tif output_tiled.tif

Jetzt noch die Übersichten generieren
gdaladdo -ro --config USE_RRD YES -r cubic output_tiled.tif 2 4 8 16 32 64 128 256

Umprojektion
gdalwarp -s_srs epsg:4326 -t_srs epsg:3857 output_tiled.tif output_tiled_3857.tif

Danach sollte die Mapfile so aussehen



MAP
    NAME OSM-WMS
    FONTSET "/osm/mapserver/fonts.list"
    STATUS ON
    UNITS METERS


    WEB
        METADATA
                        "wms_title"     "Thomas WMS-Server"
                        "labelcache_map_edge_buffer" "-10"
                        "wms_onlineresource" "to_be_replaced_by_wms.py"
                        "wms_srs"       "EPSG:4326 EPSG:900913"
                        "wms_connectiontimeout" "240"
        END
        IMAGEPATH       "/osm/mapserver/imagepath/"

    END
    CONFIG "PROJ_LIB" "/usr/share/proj/"
    CONFIG "MS_ERRORFILE" "stderr"
    EXTENT 0 0 180 180
    MAXSIZE 4000
    SIZE 800 800
    UNITS dd
    IMAGECOLOR "#B3C6D4"
    PROJECTION
                "init=epsg:4326"
    END

        IMAGETYPE png
        SHAPEPATH "/osm/mapserver/shapepath/"
        OUTPUTFORMAT
                NAME png
                DRIVER "AGG/PNG"
                MIMETYPE "image/png"
                IMAGEMODE RGBA
                EXTENSION "png"
        END

 LAYER
    NAME "MeinAeroWestLayer"
    STATUS ON
    TYPE RASTER

    DATA "/osm/mapserver/bilder/output_tiled_3857.tif"

    PROJECTION
          "init=epsg:3857"
    END

    METADATA
     "wms_title"  "Wieauchimmer"
     "wms_extent" "20.024766 46.040227 20.073920 46.081113"
     "wms_srs"    "EPSG:4326"
     "copyright"    ""
    END
  END
END

Hatte ich für eine Stadt angeboten. Ich weiß, dass hier noch mehrere Leute Mapserver laufen haben. Nur wie kommt man an die Daten?

Melde dich mal bei den OSM-Projektverantwortlichen. Genau so sollte das mit den WMS-Servern laufen. Der Haken ist, dass der Betreiber dafür sorgen muss, dass die Lizenz (osm-only) eingehalten wird.

OK, werde ich mal machen. Wegen der Lizenz könnte ich einen Copyright-Hinweis “OSM use only” oder so übers Bild legen.

Hi,

Fragen:
Wie man schön an Pajopath Bild sieht (Post #68) hat man häufig “Löcher” bei Herunterladen
der Bilder von aeroview, da man es durch das JAVA-Applet nicht passgenau hinbekommt.
Das stellt keine Probleme dar?
Überlappende Bilder beim “Zusammenmanschen” auch nicht?

Sollte Source_srs nicht die 31467/etc. sein? Somit
gdalwarp -s_srs epsg:31467 -t_srs epsg:3857 output_tiled.tif output_tiled_3857.tif

JOSM macht irgendwo einen “internen Schmuh” bei Merkator/4326 (Muss da josm-dev nochmals
genau nachlesen), möglicherweise würde sogar ein
gdalwarp -s_srs epsg:31468 -t_srs epsg:4326 output_tiled.tif output_tiled_4326.tif
Besonders für Leute wie Mondschein und ich, denen “3857” zu neu ist :wink:
Mein output_tiled_4326.tif ist jetzt leider zum Ausgangbild ca 4 m nach Nord-West versetzt im JOSM.
Mmmh …

Danke schön.

Ciao,
Frank

Bei der Beschreibung von gdal_merge steht:
This utility will automatically mosaic a set of images. All the images must be in the same coordinate system and have a matching number of bands, **but they may be overlapping, and at different resolutions. In areas of overlap, the last image will be copied over earlier ones. **

s_srs sollte man am besten mit gdalinfo rausfinden. Wenn ich das richtig in Erinnerung habe, ist das nicht bei allen Bildern gleich. Das wäre blöd. t_srs hängt davon ab, was man damit machen will. Fürs PicLayer wäre bspw 900913/3857 korrekt. Bei der Einbindung im Mapserver sollte es eigentlich egal sein. Dort kannst Du das EPSG im Layer definieren. Da könnte man sich den Schritt sparen.

Aber warte am besten noch bis heute Abend oder morgen. Da wird es dann vermutlich eine Nachricht geben, die das rumfummeln einzelner Mapper mit einzeln runtergeladenen Bildern überflüssig macht

so, ich darf es posten

und

Hi,

Dass innerhalb einer Stadt sich die GK-Zone ändert bei den Bildern - auch wenn die Stadt an beiden Zonen beteiligt ist - halte ich für unwahrscheinlich.
Ich (wie viele andere wohl auch) wollen in JOSM mit Mercator arbeiten, die Bilder liegen aber in GK-2/3/4/5(?) vor, müssen also umprojeziert werden; würde es daher bevorzugen, dies alles schon im “pre-processing” zu erledigen, sodass der mapserver “nur” noch ausliefern muss und auch JOSM selbst sich nicht damit “rumschlagen” muss (allein schon aus Performance-/Speicher-gründen).

Danke für Deine post; kann verstehen, dass Aerowest die Zahl der “Betreiber” klein halten will; ob man mit dieser “Taktik” das Gross der Mapper errecht?
Viele sind “nicht organisiert” und beleibe nicht alle Mapper Dtl. treffen sich bei den Stammtischen.

We will see :wink:

Ciao,
Frank

Beim Mapserver gibst Du mit init=epsg… an, wie die Daten vorliegen. Mit wms_srs gibst Du an, wie sie ausgeliefert werden sollen. Das umwandeln macht der Mapserver alleine. Es gibt noch eine vielleicht einfachere Möglichkeit mit einem Shapefileindex. Ich poste das mal heute Abend. Das ist vielleicht einfacher wenn man die Bilder in Mapserver nutzen will und auf das JOSM Plugin verzichtet

Hier die versprochene weitere Möglichkeit viele verschiedene *.tif mittels Shapefile-Index zu benutzen. Man sieht hier bspw auch, dass die Daten nicht in WGS84 vorliegen (PROJECTION “init=epsg:31277”) , aber vom Mapserver als WGS84 (“wms_srs” “EPSG:4326”) ausgeliefert werden.
Das ist vielleicht einfacher als die Dateien zu verschmelzen. Wie es bei Überlappungen aussieht, weiß ich nicht. Müsste man probieren

gdaltindex senta.shp /osm/fileserver/SentaDOP/*.tif

Das Layer im Mapfile sieht dann so aus


  LAYER
    NAME "SentaDOP"
    STATUS ON
    PROJECTION
          "init=epsg:31277"
    END
    METADATA
     "wms_title"  "SentaDOP"
     "wms_srs"    "EPSG:4326"
     "copyright"    ""
    END


    TYPE RASTER
    TILEINDEX "/osm/fileserver/SentaDOP/senta.shp"
    TILEITEM "LOCATION"
  END


Heute morgen habe ich eine sauber in WGS84 georefernzierte Katasterkarte für jemanden bereitgestellt. Ich habe mal mitgeschrieben. An den ESPG Codes kann ja jeder selber rumändern



thomas@suncobalt:/osm/mapserver/bajmok$ gdalinfo Bajmok_wgs84.tif | more
Driver: GTiff/GeoTIFF
Files: Bajmok_wgs84.tif
       Bajmok_wgs84.tif.ovr
       Bajmok_wgs84.tif.aux.xml
Size is 70810, 52531
Coordinate System is:
GEOGCS["WGS 84",
    DATUM["WGS_1984",
        SPHEROID["WGS 84",6378137,298.2572235630016,
            AUTHORITY["EPSG","7030"]],
        AUTHORITY["EPSG","6326"]],
    PRIMEM["Greenwich",0],
    UNIT["degree",0.0174532925199433],
    AUTHORITY["EPSG","4326"]]
..............



thomas@suncobalt:/osm/mapserver/bajmok$ python /osm/mapserver/print_wms_extent.py Bajmok_wgs84.tif
"wms_extent" "19.396992 45.956686 19.446389 45.993332"
thomas@suncobalt:/osm/mapserver/bajmok$ gdal_translate -of GTiff -co "TILED=YES" Bajmok_wgs84.tif Bajmok_wgs84_tiled.tif
Input file size is 70810, 52531
0...10...20...30...40...50...60...70...80...90...100 - done.
thomas@suncobalt:/osm/mapserver/bajmok$ gdaladdo -ro --config USE_RRD YES -r gauss Bajmok_wgs84_tiled.tif 2 4 8 16 32 64 128 256
0...10...20...30...40...50...60...70...80...90...100 - done.



Abhängig von der Größe kann das u.U. Stunden bis Tage dauern.

Layer in Mapfile definieren


 LAYER
    NAME "Bajmok"
    STATUS ON
    TYPE RASTER

    DATA "/osm/mapserver/bajmok/Bajmok_wgs84_tiled.tif"

    PROJECTION
          "init=epsg:4326"
    END

    METADATA
     "wms_title"  "Bajmok"
     "wms_extent" "19.396992 45.956686 19.446389 45.993332"
     "wms_srs"    "EPSG:4326"
     "copyright"  "OSM use only"
    END
  END



Und dann in JOSM einbinden

gdal_translate -of GTiff -co “TILED=YES” vorher.tif nachher.tif

ist dafür da, dass ein großes Bild in einzelne Tiles zerlegt wird. Wenn Du bspw ein DOP für ganz DE hast, wäre es etwas blöd wenn JOSM immer ganz DE laden müsste Du aber nur in Buxtehude editieren willst.

gdaladdo -ro --config USE_RRD YES -r cubic meinbild.tif 2 4 8 16 32 64 128 256

bildet eine Vergrößerungspyramide. Also wenn Du bspw in Zoom 12 arbeitest, müssen nicht die Bilder die in Zoom 18 vorliegen, geladen werden. Es werden statt dessen geringer vergrößerte Bilder genommen. Nebenbei werden die Bilder noch bearbeitet. Ich nehme cubic für Luftbilder und Gauss für Schwarzweißkarten.

Das gdalwarp kannst Du Dir sparen, einfach in der Mapfile den EPSG Code angeben, in dem die Daten vorliegen. Die Transformation geschieht dann automatisch

Freut mich, dass es bei Dir geklappt hat.

@mmd

nimm mal die http://suncobalt.homeip.net:82/wms.txt packe sie ins Apache root und nennen sie wms.wsgi. Ich weiß jetzt nicht, ob Du darin noch die Pfade umbenennen musst. Damit sollte es dann möglich sein, mit http://domain.irgendwo/wms? und JOSM auch Deinen WMS Server abzufragen (GetCap)

hi !

was meinst Du mit dem “WMS-Plugin” ?? in meiner JOSM Liste finde ich unter dem Suchbegriff WMS kein entsprechendes Plugin.

gruß Jan :slight_smile:

Hi Jan,

Das WMS-Plugin gab es mal extra, irgendwann (JOSM-Version 3000?) wurde es in JOSM-Core integriert so wie der Validator auch,
der frühers ein eigenes Plugin war.

Ciao,
Frank

super. Jetzt brauchst Du nur noch nach Post #94 vorgehen. Dann kannst Du eigentlich alles was georeferenziert ist (die *.*w ist die sogenannte world file, die die Referenzierungsdaten enthält - GeoTiffs brauchen sowas nicht. Schau einfach mit gdalinfo nach) auf Deinem Mapserver hosten. Den extend musst Du nicht angeben. Ich mach es immer, aber nur der Form halber. Musst nur schauen, dass die epsg File auch die Definitionen für das gehostete Material enthält.

Ich bin eher ein IT Dummy und mache sowas mit Try&Error. Magst Du eine Anleitung im Wiki erstellen?

achja. Mit Mapserver hast Du übrigends gleich auch einen Renderer und kannst schicke Karte rendern.

Ich habe mal den Autor dazu befragt. Hier die Antwort

ähhm und wie mache ich das unter Windows 7 ? :smiley:

Die Anleitungen (wenn ich es richtig verstehe) beziehen sich ja alle auf eine Linux/Ubuntu Distribution oder?

Hi,

Mmh, schon mal geschaut, ob
http://www.maptools.org/ms4w/
auf Win 7 läuft?

Ciao,
Frank

Hallo zusammen,

ich habe heute auch etwas mit dem Aufsetzen eines WMS-Servers experimentiert.

Hier mein Ergebnis unter Debian Squeeze (kellerma: kennt auch 3857 :))

Zum Erstellen der Tiles kann ich noch nicht viel sagen, da ich noch mit einem kleinen Versatz kämpfe.

  1. Pakete installieren

    apt-get install mapserver-bin cgi-mapserver gdal-bin apache2 libapache2-mod-fcgid proj python-gdal
    

    Wer non-free mag, darf “libapache2-mod-fcgid” aus main, durch “libapache2-mod-fastcgi” aus non-free ersetzen. :wink:

  2. Apache mit mapserv testen:

    /usr/lib/cgi-bin/mapserv -v
    

    gibt aus

    MapServer version 5.6.5 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=SWF OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS SUPPORTS=RGBA_PNG INPUT=EPPL7 INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE
    

    Aufruf von http://127.0.0.1/cgi-bin/mapserv zeigt im Browser an:

    No query information to decode. QUERY_STRING is set, but empty.
    

    Also soweit alles ok.

  3. Tiles erstellen:
    Dazu kann ich noch nicht so viel sagen, da ich leider noch einen leichten Versatz habe.

  4. Mapfile erstellen (Speicherort bei mir /mapserver/data/osm.map), “init=epsg:3857” evtl. anpassen:

    MAP
        NAME OSM-WMS
        STATUS ON
        UNITS METERS
    
        PROJECTION
            "init=epsg:3857"
        END
    
        WEB
            METADATA
                "wms_title"     "WMS-Server"
                "wms_onlineresource" "http://127.0.0.1/cgi-bin/mapserv?map=/mapserver/data/osm.map&"
                "wms_srs"       "EPSG:3857 EPSG:4326 EPSG:900913"
            END
        END
    
        LAYER
            STATUS ON
            NAME "AerowestOSM"
    
            DATA "/mapserver/data/tile.tif"
    
            METADATA
                "wms_title"  "Luftbilder"
                "wms_srs"    "EPSG:3857 EPSG:4326 EPSG:900913"
            END
    
            TILEITEM "location"
            TYPE RASTER
        END
    END
    
  5. Die “Service-URL” (z.B. für JOSM) lautet dann:
    http://127.0.0.1/cgi-bin/mapserv?map=/mapserver/data/osm.map&

    Die “Service-URL” kann verkürzt werden, hierfür in die Datei /etc/apache2/httpd.conf eintragen:

    SetEnvIf Request_URI "/cgi-bin/mapserv" MS_MAPFILE=/mapserver/data/osm.map
    

    Somit lautet die verkürzte “Service-URL”: http://127.0.0.1/cgi-bin/mapserv?
    Im Mapfile kann dann “wms_onlineresource” ebenfalls verkürzt werden: “http://127.0.0.1/cgi-bin/mapserv?

Sieht gut aus, bis auf den leichten Versatz, und JOSM läuft deutlich schneller, als mit dem Import-Plugin.

Jetzt werde ich mich noch genauer mit der Erstellung der Tiles befassen.

Gruß,
Mondschein