WMTS Konfiguration für namedProjections schlägt fehl

Issue #686 closed
Hannes Blitza created an issue

Wenn auf manuellen Wege ein WMTS Layer definiert wird (nicht via optionsFromCapabilties) und hierfür eine namedProjection verwendet wird (sprich eine andere als EPSG:4326 oder EPSG:3857) gibt es einen Bug:

In der wmts.js in src/core/layers

const projection = getProjection(attrs.coordinateSystem),
        extent = projection.getExtent(),
...
        size = getWidth(extent) / parseInt(attrs.tileSize, 10),

Der extent liefert null bei selbst definierten Projektionen, habe es für mehrere getestet, darauf hin crashed der Code ein paar Zeilen später.

Ich sehe mindestens folgende Möglichkeiten:

Was denkt ihr?

Comments (9)

  1. Pascal Röhling

    Hallo Hannes,

    wurde die gewünschte Projektion auch unter namedProjections in der config.js definiert?
    Könntest du zudem eine Konfiguration ergänzen, in welcher das Problem nachvollziehbar ist?

    Viele Grüße
    Pascal

  2. Hannes Blitza reporter

    Hallo Pascal, ja die Projektion ist auch dort definiert wurden.
    "EPSG:25832", "+title=ETRS89/UTM 32N +proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"]
    Minimal-Konfiguration lade ich gleich hoch.

    Danke und VG, Hannes

  3. Dennis Sen

    Moin,

    ich habe einmal einen MR https://bitbucket.org/geowerkstatt-hamburg/masterportal/pull-requests/3411/issue-686-add-logging-and-documentation gestellt, der zumindest die ersten beiden Möglichkeiten (Logging und Hinweis in der Doku) umsetzt.

    Zu Vorschlag 3/4:

    • setExtent: Mir ist aufgefallen, dass in der aktuellen OL-Version EPSG:25832 offenbar gar nicht definiert werden muss, da es in OL’s projektionsbezogenen Daten bereits enthalten ist. Ich hatte es einmal testweise aus den namedProjections entfernt – lief und war trotzdem im internen Cache dort. Auch spannend, dass OL den Extent sonst hat, aber dort dann nicht; kenne den Grund nicht, jemand eine Idee? Man müsste ihn jedenfalls wohl in einer Liste pflegen oder hinzukonfigurieren, dann dorthin durchreichen – ok, kann man machen.
    • setTileGridForProjection: Hierfür scheint laut API das TileGrid schon erzeugt worden sein zu müssen. Um das “richtig” zu erzeugen, braucht man wiederum den Extent; ich denke von daher das vorangehende müsste man sowieso lösen, und dann bräuchte man dies nicht mehr.

    Bevor ich den Extent jetzt konfigurierbar mache und durchreiche (und dann ggf. noch ein paar Folgeprobleme bearbeite) wollte ich aber einmal nachfragen, ob dieser Anwendungsfall eigentlich produktiv gebraucht wird? Ich bin mir nicht sicher, wozu "optionsFromCapabilities": false eigentlich gut ist. Es wird ja doch nur clientseitig nachberechnet/-konstruiert, was der Dienst einem per Spezifikation auch schon so geben können muss. Gab aber ja vielleicht einen Grund vor der Implementierung. (@Pascal Röhling Weißt du dazu noch was?)

    Viele Grüße

  4. Hannes Blitza reporter

    Moin,

    danke für den PR, nun stürzt der Code zumindest nicht mehr ab und man bekommt einen Hinweis geloggt.
    Zur Frage ob es Anwendungsfälle gibt: Ja, wir hatten einen Supportkunden, der explizit einen WMTS mit einem UTM Grid einbinden wollte - dafür wurde dann die manuelle WMTS-Layer Konfiguration benutzt.
    Passt für mich erstmal so, kann gerne geschlossen werden.

  5. Log in to comment