Hi,
 I'm experiencing an annoying issue with the vector tile extension (2.17.1
and 2.18-SNAPSHOT)

When we ask to reproject from 3857 to 4326 quite often (also due to the
tile buffer) we get an error as shown below, and as result some returned
geometries are not valid/cutted.

-------------
06 Jun 19:50:36 ERROR [geoserver.ows] -
org.geoserver.platform.ServiceException: Internal error
at org.geoserver.wms.GetMap.run(GetMap.java:134)
at
org.geoserver.wms.DefaultWebMapService.getMap(DefaultWebMapService.java:246)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

...

at org.geoserver.ows.Dispatcher.execute(Dispatcher.java:877)
at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:265)
at
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:177)
at org.geoserver.gwc.GWC.dispatchOwsRequest(GWC.java:1369)
at
org.geoserver.gwc.layer.GeoServerTileLayer.dispatchGetMap(GeoServerTileLayer.java:706)
at
org.geoserver.gwc.layer.GeoServerTileLayer.getMetatilingReponse(GeoServerTileLayer.java:651)
at
org.geoserver.gwc.layer.GeoServerTileLayer.getTile(GeoServerTileLayer.java:592)
at org.geowebcache.util.ResponseUtils.writeTile(ResponseUtils.java:100)

...

Caused by: org.geotools.data.DataSourceException: Had troubles handling
filter reprojection...
at
org.vfny.geoserver.global.GeoServerFeatureSource.reprojectFilter(GeoServerFeatureSource.java:485)
at
org.vfny.geoserver.global.GeoServerFeatureSource.getFeatures(GeoServerFeatureSource.java:394)
at
org.vfny.geoserver.global.GeoServerFeatureSource.getFeatures(GeoServerFeatureSource.java:71)
at
org.geoserver.wms.vector.VectorTileMapOutputFormat.produceMap(VectorTileMapOutputFormat.java:132)
at org.geoserver.wms.GetMap.executeInternal(GetMap.java:749)
at org.geoserver.wms.GetMap.run(GetMap.java:300)
at org.geoserver.wms.GetMap.run(GetMap.java:123)
... 141 more
Caused by: java.lang.RuntimeException:
org.geotools.referencing.operation.projection.ProjectionException: Latitude
90°00.0'N is too close to a pole.
at
org.geotools.filter.spatial.ReprojectingFilterVisitor.visit(ReprojectingFilterVisitor.java:132)
at org.geotools.filter.spatial.BBOXImpl.accept(BBOXImpl.java:143)
at
org.vfny.geoserver.global.GeoServerFeatureSource.reprojectFilter(GeoServerFeatureSource.java:478)
... 147 more
Caused by:
org.geotools.referencing.operation.projection.ProjectionException: Latitude
90°00.0'N is too close to a pole.
at
org.geotools.referencing.operation.projection.Mercator$Spherical.transformNormalized(Mercator.java:197)
at
org.geotools.referencing.operation.projection.MapProjection.transform(MapProjection.java:894)
at
org.geotools.referencing.operation.projection.MapProjection.transform(MapProjection.java:940)
at
org.geotools.referencing.operation.transform.AbstractMathTransform.transform(AbstractMathTransform.java:215)
at org.geotools.referencing.CRS.transform(CRS.java:1397)
at org.geotools.referencing.CRS.transform(CRS.java:1477)
at
org.geotools.geometry.jts.ReferencedEnvelope.transform(ReferencedEnvelope.java:624)
at
org.geotools.geometry.jts.ReferencedEnvelope.transform(ReferencedEnvelope.java:567)
at
org.geotools.filter.spatial.ReprojectingFilterVisitor.visit(ReprojectingFilterVisitor.java:130)
... 149 more
-------------


Followed by various:
----
Caused by: java.lang.IllegalStateException: Expected: RenderedImageMap, got
null
at
org.geoserver.gwc.layer.GeoServerTileLayer.dispatchGetMap(GeoServerTileLayer.java:709)
at
org.geoserver.gwc.layer.GeoServerTileLayer.getMetatilingReponse(GeoServerTileLayer.java:651)
... 111 more
----

I see that the problem is originated here:

https://github.com/geoserver/geoserver/blob/ad1c04e90e3556db398fb2bcdc65a66d3410da03/src/extension/vectortiles/src/main/java/org/geotools/renderer/lite/VectorMapRenderUtils.java#L235

Where we calculate the resulting native BBOX from the requested one.
if the request is in 4326 a bbox of +/-90 degrees is perfectly acceptable
but when we try to obtain the native one we get an error since the 3857
does not support latitudes over or above 85 degrees (expressed in meters).

I'd like to propose a solution to this but I'm also not sure which way
should I follow.

I'm tempted to
1. create the maximum extent for the source srs
2. translate that to the declared srs (maxDeclaredBBOX) then
3. if the request exceeds that maximum BBOX
4. log a worn and cut the request query filter BBOX with the obtained
maxDeclaredBBOX.

This may solve but seems quite complex.

Since this does not happen in the PNG format I'm wondering how you managed
to solve this problem?

Can you point me to the right piece of code?

Can I open a ticket for that?

Thanks,
Carlo

-- 
Mr. Carlo Cancellieri
*skype*: ccancellieri
*Twitter*: @cancellieric
*LinkedIn*: http://it.linkedin.com/in/ccancellieri/
_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this 
list:
- Earning your support instead of buying it, but Ian Turton: 
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines: 
http://geoserver.org/comm/userlist-guidelines.html

If you want to request a feature or an improvement, also see this: 
https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer


[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to