2 votos

GeoServer 2.17 - añadido Shapefile con geometría de tipo "Polígono 3D", la representación falla la excepción "Debe tener al menos 2 dimensiones espaciales"

He descargado un shapefile público y lo he añadido a Geoserver 2.16 sin problemas. En QGIS también. Lo he añadido a un GeoServer 2.17 también, pero al intentar la vista previa, provoca la siguiente excepción

2020-05-22 08:28:38,325 ERROR [renderer.lite] - Must have at least 2 spatial dimensions
java.lang.IllegalArgumentException: Must have at least 2 spatial dimensions
    at org.locationtech.jts.geom.impl.PackedCoordinateSequence.<init>(PackedCoordinateSequence.java:57)
    at org.geotools.geometry.jts.LiteCoordinateSequence.<init>(LiteCoordinateSequence.java:151)
    at org.geotools.geometry.jts.LiteCoordinateSequence.cloneGeometry(LiteCoordinateSequence.java:371)
    at org.geotools.geometry.jts.LiteCoordinateSequence.cloneGeometry(LiteCoordinateSequence.java:316)
    at org.geotools.geometry.jts.LiteCoordinateSequence.cloneGeometry(LiteCoordinateSequence.java:302)
    at org.geotools.geometry.jts.LiteCoordinateSequence.cloneGeometry(LiteCoordinateSequence.java:384)
    at org.geotools.geometry.jts.LiteCoordinateSequence.cloneGeometry(LiteCoordinateSequence.java:306)
    at org.geotools.geometry.jts.LiteCoordinateSequence.cloneGeometry(LiteCoordinateSequence.java:312)
    at org.geotools.geometry.jts.LiteShape2.<init>(LiteShape2.java:124)
    at org.geotools.geometry.jts.LiteShape2.<init>(LiteShape2.java:99)
    at org.geotools.renderer.lite.StreamingRenderer.processSymbolizers(StreamingRenderer.java:3000)
    at org.geotools.renderer.lite.StreamingRenderer.processFeature(StreamingRenderer.java:2807)
    at org.geotools.renderer.lite.StreamingRenderer.drawPlain(StreamingRenderer.java:2644)
    at org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:2243)
    at org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:900)
    at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:601)
    at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:275)
    at org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:135)
    at org.geoserver.wms.GetMap.executeInternal(GetMap.java:749)
    at org.geoserver.wms.GetMap.run(GetMap.java:300)

ogrinfo indica que la capa contiene polígonos 3D. Y veo que cada punto tiene tres coordenadas. No sé si el tercer valor está en pies o en metros.

Para probarlo usted mismo, vaya aquí: https://openhartford-hartfordgis.opendata.arcgis.com/datasets/building y descargar el shapefile. Añádalo a GeoServer 2.17, previsualícelo con Openlayers y obtendrá la excepción.

He solucionado esto usando QGIS y exportando a un nuevo Shapefile, pero especificando que las geometrías deben ser polígonos. Esta exportación bidimensional se muestra bien en GeoServer 2.17.

2voto

Adam Ernst Puntos 6939

He creado un tema por esto.

Actualización

Las publicaciones nocturnas de 2.18.x y 2.17.x a partir del 25/5/2020 contendrá la corrección de errores.

0voto

Saura Puntos 101

Me encontré con un problema similar y lo solucioné indicando explícitamente que quería valores 2D sólo al leer el shapefile que contiene puntos 3D:

val query = Query(typeName, Filter.INCLUDE)
query.hints.add(Hints(Hints.FEATURE_2D, true))

return dataStore.getFeatureSource(typeName)
           .getFeatures(query)

El código anterior está en Kotlin, pero puedes ver la versión en Java y la documentación original aquí: https://docs.geotools.org/stable/userguide/library/data/featuresource.html

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X