reprojection: wms cascading or client side js? - geoserver

I would like to use the wms of the italian cadastre. The wms is in epsg:6706 so I need a re-projection on the fly in wgs84.
I have two possibilities: 1) using gesoerver cascading wms to reproject otf
2) using js client-side re-projection library (for example proj4js).
What are the PROS/CONS?
In the first case, is geoserver very stressed? Do I need to scale out respect to wms cascading 'keep native' configuration?

I would do the re-projection on the client side to avoid having to deal with server overload issues. Many mapping libraries support client side re-projection for example:
https://openlayers.org/en/latest/doc/tutorials/raster-reprojection.html
https://kartena.github.io/Proj4Leaflet/
https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=client-projection

Related

WMS cascading - otf reprojection

I need to display in mapstore the italian cadastral wms (EPSG:3857).
I choose to use wms cascading with reprojection function in geoserver from EPSG:6706 to EPSG:3857.
Unfortunately, the results were not what was hoped for, in fact the projection on OSM is displayed in a wrong area
(Eritrea...more or less). Can you tell me what am I wrong?
This is the italian cadastre service (EPSG:6706) that I used for my tests: https://wms.cartografia.agenziaentrate.gov.it/inspire/wms/ows01.php
When I tested this I get the Copyright symbol in the correct place (near Italy) but no data displayed (probably due to a scale denominator issue).
I handled reprojection by leaving it in the native projection and reprojecting on output.
As you can see this handles the axis order switch correctly (6W, 35N)
In layer preview the image is fine in EPSG:6706
But vanishes except for the copyright if I switch the bounding box and ask for EPSG:4326. When I try in QGis I get the same result with both WGS84 and Web Mercator.
Since the WMS server seems to be written in PHP I suspect it may be misbehaving, you may be best asking the provider for the actual data and serving it yourself. Or ask them to switch to GeoServer (it's free).
Update
It is definitely broken - when I load the WMS directly into QGIS I get:

Looking for WMS-in-WMS funktionality - a WMS that calls other WMS depending on scale

Sorry to bother you with a probably easy question.
We would like to set up an WMS (web map service) that forwards all the requests to three other WMS depending on the scale (zoom intervall).
The aim is to combine 3 background maps (which show the same geografic area in different levels of detail and come in 3 seperate WMS) into one WMS so the users can zoom in and out seamlessly using just that one WMS that the forwards the WMS-requests to the other 3 WMS.
Is that possible? Is there a software can help me to solve my problem?
Thank you in advance!!
The functionality you are looking for is called cascading. It is possible to do this using GeoServer.
The GeoServer manual explains in detail how you can set up a cascaded WMS layer. However, there is not currently any way to apply a scale limit to a cascaded layer unless the source server applies it.
Another project that supports cascading WMS is MapProxy but I'm not sure if it can change sources depending on the scale of the request. It does have the option to limit a request to a min/max scale but it returns a blank image outside those limits.

Is there any method to save leaflet map image as vector image (i.e. SVG)?

I am working with web-application which uses OSM and leaflet.
I want to save map image with markers, icons, polylines, polygons and other objects to vector image(SVG/ XML with SVG etc.)
I found leaflet-image but not sure it`s suitable for me.
I also use ExtJs and python as server language.
Any suggestions?
There are two official plugins for exporting/printing Leaflet maps.
Leaflet.print uses a Mapfish or GeoServer print module. Mapfish is built on Python so that could probably work for you. (For completeness - Geoserver is built on Java).
Leafet-image doesn't use any server side tech at all. Just Canvas and CORS.
You won't be able to save the tiles as vector as those are served to you as PNGs. You could recreate it using standard OSM data and a tileserver though. Both plugins will take the tiles and export them as images.

GeoServer: caching fails on reprojection

I want to publish the data in the Oracle DBMS.
Since the SRS of the data (which is EPSG:3093) is different from the SRS the client wants (which is EPSG:5179), it must be transformed.
So, I’ve set the layer property on the Edit Layer page as follows:
Native SRS: EPSG:3093 (Tokyo / UTM zone 52N)
Declared SRS: EPSG:5179 (Korea 2000 / Unified CS)
SRS handling: Reproject native to declared
The problem starts now.
When I clicked ‘Compute from data’ for Native Bounding Box, it displays the result coordinates in Declared SRS, no Native SRS.
Is this the correct behavior? Since it is ‘Native Bounding Box’, the values should be in Native SRS.
Anyways when I clicked ‘Compute from native bounds’ for Lat/Lon Bounding Box, it correctly translates from ‘Declared SRS’.
Maybe it is correct to display the Native Bounding Box in Declared SRS then. (weird)
Anyways the client (OpenLayers 3) displays the data correctly.
But another problem remains.
Integrated GeoWebCache refuses to cache the tile images.
When the logging is set to VERBOSE_LOGGING, it logs the following error:
org.geowebcache.grid.OutsideCoverageException: Coverage [minx,miny,maxx,maxy] is [0, 4097, 6143, 6143, 11], index [x,y,z] is [3101, 2791, 11]
Since the caching works correctly for the other layers that does not transform the source data (since the data is already in EPSG:5179), that must be the transformation problem. Or another one.
When I see the coverage area of the EPEG:3093 on the Demos / SRS List page on the GeoServer, the area seems to be wrong. (It does not even cover Tokyo!) http://epsg.io/3093 displays the correct one.
Is this the cause of the caching problem?
Does GeoWebCache look for the coverage of the SRS and rejects the out-of-bound request?
My GeoServer version is 2.7.1.1.
You should store your data in the native projection as GeoServer will automatically reproject the data when a client makes a request in a different projection.
Then caching and the bbox will work.
I've traced the source code from GridSubset.java to GeoServerTileLayer.java and found that the content of the gwc-layers layer file had wrong gridSubset extent coords minY value. (It was too high)
I don't know why... Since I manage the gwc-layers layer files using Git, maybe some file date inconsistency confused GeoServer to sync the values. Or maybe I just broke something. I can only guess... Now after changing that value, caching works.

How might I implement a complex ListItem for SWT/JFace?

The more modern UI frameworks offer some kind of support for complex ListItems. For example, a picture and 3 lines of text.
How can I do this in an eclipse RCP application? Are there any open source frameworks for this?
You could use a TableViewer and use an OwnerDrawLabelProvider. This label provider gives you complete control over what is drawn in the table rows. The disadvantage is that you do have to draw the rows yourself using GC based operations (not too hard for images and text).

Resources