Geoserver-Unterstützung für den Proxy anderer Kacheldienste?

8

Ich möchte einen zentralen Server verwenden, um einen gemeinsamen Speicherort für alle unsere Mapping- / Bildressourcen bereitzustellen. Unsere Daten liegen hauptsächlich in Form von Geotiffs mit einer Vielzahl von Basisschichten aus verschiedenen Quellen im Web vor.

Geoserver leistet bei einer Reihe von Geotiffs gute Arbeit beim Bereitstellen von Kacheln (über WMTS oder TMS). Ich kenne jedoch keine Möglichkeit, andere externe Datenquellen wie die Beispielbasisschichten von http://services.arcgisonline.com/ArcGIS/rest/services einfach zu vertreten . Leider scheinen viele Dienste keine WMS-Schicht zu implementieren (oder nicht öffentlich zu machen). Derzeit haben wir Logik in unserer Anwendung für spezielle Webdienste, aber es ist ein bisschen Hack. Idealerweise möchte ich allen unseren Kachelanbietern eine gemeinsame Webdienstschnittstelle präsentieren. Dies würde es WMS-Clients wie World Wind-Anwendungen ermöglichen, "nur zu arbeiten".

Mein einziger Gedanke im Moment ist, einen kleinen Python-Webdienst zu erstellen, der eine Liste von Funktionen über WMS verfügbar macht und diesen Dienst dann als kaskadierenden WMS-Speicher in Geoserver hinzufügt. Dies scheint eine Menge Arbeit zu sein, um einfach URLs für Kartenkacheln bereitzustellen.

Ich bin gespannt, ob dieses Problem schon einmal gelöst wurde oder ob es eine einfachere Lösung gibt.

Vielen Dank!

cshimer
quelle

Antworten:

7

Vielleicht möchten Sie MapProxy ausprobieren . Es ist ein Open Source-Proxy für Geodaten. Es speichert, beschleunigt und transformiert Daten von vorhandenen Kartendiensten und bedient jeden Desktop- oder Web-GIS-Client.

Geben Sie hier die Bildbeschreibung ein

Es liest Daten von:

  • WMS-Quellen (1.0.0–1.3.0)
  • TMS / WMTS-Quellen Mapserver- und Mapnik-Konfigurationen
  • jede TileCache-, Google Maps- oder Bing-kompatible Quelle

Es kann auch

  • Cache-Daten im Dateisystem, als MBTiles oder in CouchDB
  • WMS-Quellen auf andere SRS projizieren
  • identische Bilder nur einmal speichern (zB Ozeankacheln)
  • Wasserzeichen in Fliesen einbetten
  • mehrere Quellen zusammenführen
  • Beschränken Sie Quellen auf Polygonbereiche

MapProxy ist auch ein vollständig kompatibler WMS-Server und unterstützt jeden WMS-Client (Desktop und Web). Es unterstützt WMS-Antworten aus zwischengespeicherten Daten:

  • führt Kacheln zusammen und skaliert oder projiziert Bilder neu
  • beschleunigt das vorhandene WMS um das 10- bis 100-fache

und kaskadierte WMS-Dienste:

  • Multithread-Anforderungen
  • führt mehrere Quellen zusammen
  • Fügt undurchsichtigen Ebenen Transparenz hinzu
  • Projektionen im laufenden Betrieb

Es werden auch Kombinationen von zwischengespeicherten und kaskadierten Ebenen unterstützt:

  • Antworten Sie auf GetLegendGraphic-Anfragen
  • kaskadieren Sie GetFeatureInfo-Anforderungen mit optionalen XSL-Transformationen
  • Beschränken Sie Quellen auf Polygonbereiche
  • Konvertieren Sie WMS-Versionen und Bildformate
  • Unterstützung für Nicht-Bild-Rasterdaten wie DEMs

Sie können den Kachel-Cache auch vorab generieren, um eine bessere Leistung zu erzielen.

Es wird außerdem mit einer flexiblen Autorisierungs-API geliefert, mit der Sie eine differenzierte Kontrolle über Dienste und Ebenen hinzufügen können.

RK
quelle
2
Dies ist die beste Antwort auf die Frage, sollte jedoch mit der Empfehlung aufgenommen werden, dies niemals bei externen Diensten zu tun, die Sie nicht kontrollieren - zumindest ist dies ein Leistungsalptraum, und in der Regel ist dies gegen die Nutzungsbedingungen und den Willen führen dazu, dass Ihr Dienst ausgesetzt wird.
tmcw
0

Sie schaffen einen Engpass, indem Sie externe Dienste über Ihren Server übertragen. Verlangsamen Sie auch die Leistung Ihrer Webkarte, indem Sie einen Server zwingen, alle Anforderungen zu verarbeiten.

Der einzige Grund, warum ich vielleicht einen Grund dafür sehen könnte, ist die Sicherheit. Aber selbst dann ist es besser, stattdessen den Endpunkt zu sichern und einen Token weiterzugeben.

Donny V.
quelle