- changed status to open
WMTS Konfiguration für namedProjections schlägt fehl
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:
- Prüfen, ob der extent null ist und einen Fehler in die Konsole loggen.
- In der services.json.md darauf hinweisen, dass die manuelle WMTS Definition nur mit EPSG:4326 und EPSG:3857 funktioniert
- Einen Weg finden/einbauen, dass der Extent bei der Registrierung der custom Projektionen definiert wird (über setExtent, siehe: https://openlayers.org/en/latest/apidoc/module-ol_proj_Projection-Projection.html)
- Möglicherweise hilfreich: setTileGridForProjection siehe: https://openlayers.org/en/latest/apidoc/module-ol_source_TileImage-TileImage.html#setTileGridForProjection
Was denkt ihr?
Comments (9)
-
-
-
assigned issue to
-
assigned issue to
-
Hallo Hannes,
wurde die gewünschte Projektion auch unter
namedProjections
in derconfig.js
definiert?
Könntest du zudem eine Konfiguration ergänzen, in welcher das Problem nachvollziehbar ist?Viele Grüße
Pascal -
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
-
reporter <div class="preview-container wiki-content"><!-- loaded via ajax --></div> <div class="mask"></div> </div>
</div> </form>
-
reporter - changed version to 2.19.0
- edited description
-
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
-
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. -
- changed status to closed
Geschlossen wegen "passt erstmal", mehr vielleicht in einem neuen Ticket.
Viele Grüße
- Log in to comment