Problem beim einbinden eines WMS-Dienstes in OpenLayers

Hallo,

ich möchte folgende WMS in OpenLayers darstellen: http://gis2.goettingen.de/ArcGIS/services/Tageblatt/MapServer/WMSServer?
Dieser WMS bietet 3 Layer an: 10000er.tif, STK20graulight.tif, STK20farbigblank.tif
Die Ausdehnung ist: 9.80, 51.48, 10.05, 51,61
EPSG: 4326

Ich muss an dieser Stelle zugegeben, dass ich absoluter Anfänger auf dem Gebiet OpenLayers bin. Vielleicht könnt ihr mich ja weiterhelfen.

Hier also mein Quelltext-Versuche:

1.: Hier bleibt die Karte weiß!

Hallo WMS mit OpenLayers

Hallo WMS mit OpenLayers

2.: Hier ist die Karte Pink-gekachelt:

Hallo Welt mit OpenLayers

Hallo Welt mit OpenLayers

Vielleicht hat ja auch jemand von euch ein PDF-Tutorial, wenns geht auf deutsch.
Eine andere Frage noch wisst Ihr ob man auch die ArcGIS-Server10 Rest-Schnittstelle mit OpenLayers anzapfen kann?

Vielen Dank schonmal im Voraus…

Grüße

Krisch

Dann lies dir bitte erst einmal das hier durch: http://stadtplan.goettingen.de/nutzung.html

insbesonders die beiden ersten Abschnitte:


- Sämtliche Ausführungen des Amtlichen Stadtplanes (incl. Luftbilder) sind urheberrechtlich geschützt. 
  Die Rechte liegen bei der Stadt Göttingen.
- Eine vollständige, teilweise oder auszugsweise Verwendung der elektronischen Verzeichnisse,
  Karten und Bilder für Nutzungen in jeder Art und jeder medialen Form (in Printform, digital, auf CD-ROM etc.)
  ist nur mit vorheriger Genehmigung der Stadt Göttingen zulässig.

Du solltest diese Fragen vorher mit der Stadt klären, sonst hast du irgendwann noch ganz andere Probleme.

Gruss
walter

Hallo Walter,

damit gibt es keine Probleme. Das ist alles offiziell.
Hast du auch eine fachliche Antwort für mich?

Gruß Krisch

Das sollte man immer erwähnen, denn sonst kommen in diesem Forum mit sehr hoher Wahrscheinlichkeit entsprechende Hinweise.
Das hat bei uns Tradition. :wink:

Gruß,
Mondschein

Tag,

rosa Kacheln sollte man sich immer ansehen (URL kopieren und in ein Browserfensrt einfügen). Deine rosa Kacheln enthalten den Text “ServiceException code=LayerNotDefined: Parameter layers contains unacceptable layer names”, was schon deutlich weiter hilft.

Das da würde gehen:

<html>
  <head>
    <title>Hallo Welt mit OpenLayers</title>
    <script src="http://openlayers.org/api/OpenLayers.js"></script>
  </head>
  <body>
    <h1>Hallo Welt mit OpenLayers</h1>
    <div
      id="map"
      style="width:1024px; height:512px; border:3px solid #000">
    </div>
    <script defer="defer" type="text/javascript">
      var map = new OpenLayers.Map( 'map',  
          {maxExtent: new OpenLayers.Bounds(9.79736007679923,51.4794681488844,10.0611811756577,51.6130027308795) 
          }
      );
      var wms = new OpenLayers.Layer.WMS(
          "OpenLayers WMS",
          "http://gis2.goettingen.de/ArcGIS/services/Tageblatt/MapServer/WMSServer?",
          { layers: '1',format:'image/jpeg'}                  
      );
      map.addLayer( wms );  
      map.zoomToMaxExtent();
    </script>
  </body>
</html>

Zu Deinem Beispiel hab ich zwei Dinge geändert. (1) den maxExtent eingetragen. Und (2) den Layernamen. Wenn ich mir nämlich die Layer dieses WMS raussuche, steht in den “Title”-Feldern nicht ‘STK20graulight.tif’ sondern schlicht ‘1’, weswegen ich den Layer “1” lade. (“0” ist Stk20farbigblank.tif, “2” ist 10000er.tif und dann gibts noch einen Layer namens “default”).
“image/jpeg” war nur das erste Format, das mir eingefallen ist. tiff, png, gif wäre auch möglich (steht auch in den oben verlinkten Capabilities).

Grüße, Max

PS: Mit OSM wird das aber schwierig, wenn ichs richtig sehe hast Du bei dem GIS die Wahl zwischen Plattkarte (EPSG:4326) und Gauß-Krüger 3 (EPSG:31467)…

Vielen Dank,

maxbe.
Kann ich nicht auch noch eine Transformation einsetzen um die Darstellung zu entzerren?

Grüße

Krisch

Keine Ahnung, aber vielleicht hilft das weiter: http://forum.openstreetmap.org/viewtopic.php?pid=234299#p234299

Wenn es Dir nur um eine unverzerrte Ansicht geht, kannst Dich ja auf die Projektion einlassen, die der Server vorgibt und Gauß-Krüger in Openlayers anzeigen:

.....
   <script defer="defer" type="text/javascript">
      var map = new OpenLayers.Map( 'map',
          {maxExtent: new OpenLayers.Bounds(3555389.7671716,5705372.7029728,3573349.38723256,5719999.81951871),                               
           projection:new OpenLayers.Projection("EPSG:31467")            
          }
      );   
      var wms = new OpenLayers.Layer.WMS(
....

Zur hübschen Anzeige reicht das. Probleme gibt es später, wenn Du eigene Daten dazu darstellen willst, die müssen dann auch in diesem Koordinatensystem vorliegen…

Grüße, Max

Ah ja,

nochmals vielen Dank.

Maxbe,

Eine Frage habe doch noch dazu…
Wie kann ich denn in diesem Fall (ESP:31467) die Koordinaten für eine eingeschränkte Anzeige mit dem Link übergeben?
ähnlich diesem: “http://www.openstreetmap.org/?lat=47.678202&lon=9.145587&zoom=18&layers=M
Oder geht das dann garnicht?

...
map.addLayer( wms );
map.addControl(new OpenLayers.Control.Permalink('permalink'));
if (!map.getCenter()){map.zoomToMaxExtent();}
</script>
...

Du sagst mit “map.zoomToMaxExtent();”, dass Du immer alles sehen möchtest. Damit nimmst Du OpenLayers die Chance irgendwas aus den Parametern auszuwerten. Mit “if (!map.getCenter()){…}” wird erst geschaut, ob in der URL was anderes steht. Der Permalink ist immer praktisch, weil der liefert die passenden Parameter.

Ich würde mir das mit EPSP:31467 aber überlegen. Die Entscheidung jetzt verfolgt Dich, solange Du mit der Karte arbeitest. Besonders wenn Du was mit OSM dazu einbauen willst, stösst Du schnell an Grenzen, weil einfach kein Dienst bei OSM Deine Koordinaten verwendet. Auch OpenLayers ist nur bedingt auf andere Systeme eingerichtet, Du könntest z.B. jetzt nicht so einfach einen GPX-Track in Deine Karte malen oder auch nur eine Koordinate aus der Wikipedia rauskopieren und per URL übergeben (der Bahnhof liegt z.B. bei deinedomain/karte.html?zoom=6&lat=5711684&lon=3564270 nicht bei lat=51.53677 lon=9.926375)
Grüße, Max

Moin,

bastel da grad an so einem Tool das auch WMS darstellt mit OL. Damit konnte ich Deine URL grad sehr schön angucken, auch in 4326, sieht aber eben nicht so dolle aus. Der Source für den WMS-Teil ist hier - https://github.com/moenk/yamcat/blob/master/wms.php - und mit ein wenig Änderungen kannst Du den gern verwenden.

LG,

-moenk

PS: Ich bin zufällig nächste Woche genau in der Gegend.

Hallo,

ich empfehle ausdrücklich die Projection Global Mercator in WebMaps zu verwenden. Ist einfach Standard. Google macht das so und auch OSM.

Um beliebige WMS Quellen zu Global Mercator zu wandeln, empfehle ich die Python Software MapProxy: http://mapproxy.org/

Hier eine beispielhafte Config:

services:
  demo:
  tms:
    origin: 'nw'
layers:
  - name: luftbild
    title: Luftbild
    sources: [cache_luftbild]
caches:
  cache_luftbild:
    grids: [grid_mercator]
    sources: [source_luftbild]
sources:
  source_luftbild:
    type: wms
    wms_opts:
      version: 1.1.1
    supported_srs: ['EPSG:31467']
    coverage:
      bbox: [7.5311279297, 52.2816018681, 10.7940673828, 54.0368124052 ]
      bbox_srs: 'EPSG:4326'
    http:
      ssl_no_cert_checks: true
    req:
      url: http://gis2.goettingen.de/ArcGIS/services/Tageblatt/MapServer/WMSServer?
      layers: 1
      transparent: true

grids:
  grid_mercator:
    tile_size: [256,256]
    srs: EPSG:900913
    align_resolutions_with: GLOBAL_MERCATOR
  grid_31467:
    tile_size: [256,256]
    srs: EPSG:31467

globals:
  ## coordinate transformation options
  srs:
    proj_data_dir: /usr/share/proj

  ## cache options
  cache:
    # where to store the cached images
    base_dir: './cache_data'
    # where to store lockfiles
    lock_dir: './cache_data/locks'
    # request x*y tiles in one step
    meta_size: [2,2]
    # add a buffer on all sides (in pixel) when requesting new images
    meta_buffer: 80

  # image/transformation options
  image:
      # resampling_method: nearest
      resampling_method: bilinear
      # resampling_method: bicubic
      jpeg_quality: 90
      max_shrink_factor: 4.0

Hier noch weitere Infos: http://mapproxy.org/docs/latest/configuration_examples.html#overlay-tiles-with-openstreetmap-or-google-maps-in-openlayers

Das Tool kann man dan mit Apache’s Model mod_proxy auf einen Pfad der Website mappen, damit es von “außen” auf Port 80 erreichbar ist.

Besten Gruß
M