mkrebs
1
Hallo,
in Bayern sind ja Luftbilder vom Vernessungsamt als wms Dienste freigegeben.
Kann ich diese Karten nicht als wms Layer nutzen?
Ich habe das so probiert, bekomme aber keine Anzeige.
Wer kann mir sagen wo ich weitere Infos bekomme, oder auch wie das geht?
Danke!
map.setCenter(new OpenLayers.LonLat(9.3244,49.726).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913")), 10);
wms = new OpenLayers.Layer.WMS("Bayern Luftbilder", "http://geodaten.bayern.de/ogc/ogc_dop200_oa.cgi?FORMAT=image/jpeg&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&Layers=adv_dop200c&"); map.addLayer(wms); ;
Projektion beachten !
Amtliche Daten dĂŒrfte es kaum in 900913 geben
Amtliche Vermessungsdaten gibt es gewöhnlich in Gauss-Kruger, ETRS89 und WGS84
maxbe
(Max)
3
Die 2m-Luftbilder hab ich hier mal ausprobiert. Allerdings hab ich das wohl nur in EPSG 4326 hinbekommen (steht hier als eine der möglichen Projektionen), das ist ein bisschen ungĂŒnstig wenn mans z.B. mit der OSM-Mapnik-Karte mischen willâŠ
GrĂŒĂe, Max
mkrebs
4
Hallo,
danke erstmal fĂŒr die Antworten.
Hier auf http://www.vermessung.bayern.de/opendata steht ja auch was von Projektionen, ich mĂŒsste mir wohl einmal genauer anschauen, was es damit auf sich hat.
Ist es denn möglich, diese Luftbilder und OSM als Layer dazustellen, oder mĂŒsste das in einem freien GIS System gehen?
Ich habe doch auch schon Karten mit Bing oder Google Luftaufnahmen gesehen.
mkrebs
5
So, jetzt habe ich es einmal ausprobiert, wie hierauf dieser Seite:
http://cartopol.com/example/qgis-osm-border/
Mit den Bremer Layern klappt das auch bei mir, aber mit den Bayern Luftbildern nicht, da kommt nur eine weiĂe FlĂ€che.
siehe www.mittenimbild.de/test
Kann mir jemand sagen warum das nicht funktioniert?
Danke
<script type="text/javascript">
//projection: new OpenLayers.Projection("EPSG:900913"),
//displayProjection: new OpenLayers.Projection("EPSG:4326"),
PROJECTION_4326 = new OpenLayers.Projection("EPSG:4326");
PROJECTION_MERC = new OpenLayers.Projection("EPSG:900913");
function drawmap() {
OpenLayers.Lang.setCode('de');
map = new OpenLayers.Map('map', {
controls: [
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.MousePosition(),
new OpenLayers.Control.Permalink(),
new OpenLayers.Control.LoadStatus({html: '<img src="./img/loader.gif" /><br />Loading...'}),
new OpenLayers.Control.PanZoomBar( {id:'myZoomBar', zoomStopHeight:5}),
new OpenLayers.Control.Attribution(),
new OpenLayers.Control.LayerSwitcher(),
new OpenLayers.Control.ScaleLine()],
maxExtent : new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34),
numZoomLevels : 18,
maxResolution : 156543,
units : 'm',
projection : PROJECTION_MERC,
displayProjection : PROJECTION_4326
});
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//Zoombar Skript und Loadstatus by netzwolf.info
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//----------------------------------------------------------------------------
// Kartenlayer
//----------------------------------------------------------------------------
map.addLayer (new OpenLayers.Layer.OSM.Mapnik("Basiskarte"));
map.addLayer (new OpenLayers.Layer.OSM.CycleMap("CycleMap"));
//map.setCenter(new OpenLayers.LonLat(9.3244,49.726).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913")), 10);
var center = new OpenLayers.LonLat(9.3244,49.726);
var centerAsMerc = center.transform(PROJECTION_4326, PROJECTION_MERC);
map.setCenter(centerAsMerc, 10);
wms = new OpenLayers.Layer.WMS("Bayern Luftbilder", "http://geodaten.bayern.de/ogc/ogc_dop200_oa.cgi?FORMAT=image/jpeg&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&Layers=adv_dop200c&");
map.addLayer(wms);
baylayer = new OpenLayers.Layer.WMS("Digitales Orthophoto","http://geodaten.bayern.de/ogc/ogc_dop200_oa.cgi?",{layers:'adv_dop200c',format:'image/jpeg'},
{minzoomlevel:15, numZoomLevels:18, attribution: "<font color=white><b>Luftbilder vom </b></font><a href=\"http://www.gdi.bayern.de/Dokumente/Nutzungsbedingungen_allgemein.html\" target=\"_blank\"><font color=white><b>Web Map Service der Bayerischen Vermessungsverwaltung</b></font></a>"});
map.addLayer(baylayer);
maxbe
(Max)
6
Da mĂŒsste auf dem Webserver eine Software laufen, die sich die Bilder vom Server der Vermessungsverwaltung abholt, umprojiziert und dann weitergibt. Sowas gibts, UMN-Mapserver soll das z.B. können, aber so einfach Einbinden mit Javascript geht das nicht.
EPSG 900913 (oder âspherical Mercatorâ, âEPSG 3857â) ist eine Projektion, die speziell fĂŒr eher einfache Anwendungen in WEB-Kartenservern verwendet wird und zum leichteren Rechnen z.B. davon ausgeht, dass die Welt eine Kugel ist. Google, Bing und OSM kommen damit gut zurecht. VermessungsĂ€mter wollen gerne exakter arbeiten und neuere Erkenntnisse ĂŒber die Abplattung der Erde an den Polen mit berĂŒcksichtigen. Deshalb mögen die 900913 nicht so sehr und bieten es auch nicht gerne an.
Schau Dir mal die URL einer einzelne Kachelan. Da steht irgendwo âSRS=EPSG%3A900913â drin. Das heisst, Du verlangst vom WMS-Server, dass er 900913-Bilder liefern soll. Bremen tut das, Bayern nicht.
GrĂŒĂe, Max
Sicher?
Denn JOSM macht das nÀmlich:
Man hat als Projektion âMerkator EPSG:3857â eingestellt und dann holt sich JOSM das bay. Luftbild mit EPSG: 4326
und stellt es z. B. mit der Mapnikkarte zusammen beide als Hintergrund da.
maxbe
(Max)
8
Ziemlich⊠Aber jetzt bin ich unsicher⊠
JOSM kann intern umprojizieren, wenn ich z.B. 4326 einstelle, holt sich der die 900913-Kachel von OSM und staucht die zurecht. Das gleiche kann er auch mit den Luftbildern. Umgekehrt kann ich auch mit den bayerischen Luftbildern im Hintergrund in Mercatorprojektion editieren.
Das kann JOSM.
mkrebs will das aber in eine Webseite einbinden, wenn ichs richtig verstanden hab. Dann muss er das Stauchen und Zerren mit Openlayers oder einer Àhnlichen API erledigen. Ich bin mir recht sicher, dass OL das nicht kann, ich denke die anderen APIs machen das auch nicht.
GrĂŒĂe, Max
Mmmh,
Ob das jetzt nur fĂŒr einzelen Punkte statt Bilder gedacht ist, keine Ahnung 
mkrebs
10
Hmmmm, kann ich das denn irgendwie ausprobieren?
maxbe
(Max)
11
In dieser Demo (baut wohl auf diesem Beitrag auf) hat jemand mit proj4js sowas wie gdalwarp fĂŒr Javascript und html5 nachgebaut, um Rasterbilder umzurechnen. Bei mir lĂ€uft das nicht, aber vielleicht bei Dir. Zumindest wĂ€re das ein Ansatzpunkt zum weiterforschenâŠ
mkrebs
12

Danke, aber ich probiers mal mit den Google Luftbildern⊠
Das sollte einfacher sein.
Wie jetzt, g**gle???
Und dabei haben maxbe und meine Wenigkeit sich soviel MĂŒhe beim Mit-Suchen gemacht 
maxbe
(Max)
14
Meine Links da oben waren wirklich eher zur Abschreckung gedacht. Ich halts fĂŒr echt schwierig.
Wenn ich sowas haben wollte, wĂŒrde ich entweder irgendwie die Luftbilder umprojizieren, oder die OSM-Daten in eine amtskonforme Projektion bringen UTM z.B. (Vorsichtig klicken, ist ne Geduldsprobe). Auf jeden Fall wĂŒrde ich das serverseitig lösen, bevor ich mich mit den Wunderlichkeiten des JavaScripts und OL beschĂ€ftige.
GrĂŒĂe, Max
âServerseitigâ ist so Neunzigerjahremaessig. Neue Ideen braucht das Land! 
Wenn mir mal jemand vor 10 Jahren erzĂ€hlt hĂ€tte, dass man Echtzeit-Raytracing per Javascript im Browser laufen lassen kann âŠ
maxbe
(Max)
16
Hab mich vertippt. Ich meinte natĂŒrlich, dass ich das in der Cloud berechnen lasse 
mmd
17
Den gdalwarp.js basierten Ansatz hat jemand in diesem Posting auch schon einmal vergeblich probiert und berichtet von schlechter Antwortzeit und BrowserabstĂŒrzen. Bleibt wohl eher die Nicht-Client Lösung, z.B. im gleichen Post die Reprojektion mit MapProxy. Scheint wohl âout-of-the-boxâ zu funktionieren. Hier mal meine mapproxy.yaml (Achtung: bbox ist ein ziemlich ĂŒbler Hack, auch fehlt der global-Abschnitt).
services:
demo:
kml:
tms:
wms:
srs: ['EPSG:4326', 'EPSG:900913']
image_formats: ['image/jpeg','image/png']
md:
title: Bayern 2m DOP
abstract: Bayern 2m DOP
layers:
- Bay2m:
title: Bayern 2m DOP
sources: [bayern2m_cache]
caches:
bayern2m_cache:
grids: [EPSG_4326_World,EPSG_900913_World]
sources: [bayern2m_wms]
link_single_color_images: true
minimize_meta_requests: true
sources:
bayern2m_wms:
type: wms
supported_srs: ['EPSG:4326']
req:
url: http://geodaten.bayern.de/ogc/ogc_dop200_oa.cgi?
layers: adv_dop200c
grids:
EPSG_4326_World:
base: GLOBAL_GEODETIC
srs: 'EPSG:4326'
bbox: [8.89292,47.0828,13.9782,50.6269]
bbox_srs: EPSG:4326
EPSG_900913_World:
base: GLOBAL_MERCATOR
srs: 'EPSG:900913'
bbox: [8.89292,47.0828,13.9782,50.6269]
bbox_srs: EPSG:4326
Dazu passenden WMS/TMS Javascript Code kann man dann auf http://127.0.0.1:8080 erzeugen lassen und gleich testen. Dazu mapproxy mit
mapproxy-util serve-develop ./mapproxy.yaml
starten.
WĂŒrden die Nutzungsbedingungen des WMS-Services dieses Szenario abdecken?
Edit: Ah, sehe gerade, dass das Beispiel genau anders herum funktioniert und die OSM Karte auf dem Server reprojeziertâŠ