gvSIG bugs #2189

Error al ejecutar el geoproceso buffer

Added by José Vicente Higón over 10 years ago. Updated over 10 years ago.

Status:Closed% Done:

0%

Priority:ImmediateSpent time:-
Assignee:Ignacio Brodín
Category:Geoprocess
Target version:2.1.0-2218-testing
Severity: Add-on version:
gvSIG version:2.1.0 Add-on build:
gvSIG build:2216 Add-on resolve version:
Operative System:Linux Add-on resolve build:
Keywords: Proyecto:
Has patch:No Hito:
Add-on name:Unknown

Description

Cargo una capa de lineas Postgis, selecciono una geometría. Al ejecutar el geoproceso de Buffer con 100m de distancia se lanza la siguiente excepción

 INFO [AWT-EventQueue-1] (DefaultActionInfo.java:249) - org.gvsig.geoprocess.app.mainplugin:org.gvsig.geoprocess.extension.GeoprocessExtension.execute('GEOPROCESS_SELECTOR')
java.util.concurrent.ExecutionException: java.lang.NullPointerException
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
    at java.util.concurrent.FutureTask.get(FutureTask.java:111)
    at es.unex.sextante.gui.core.GeoAlgorithmExecutors$1.run(GeoAlgorithmExecutors.java:53)
    at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.NullPointerException
    at org.gvsig.fmap.dal.feature.impl.DefaultFeature.set(DefaultFeature.java:110)
    at org.gvsig.fmap.dal.feature.impl.DefaultEditableFeature.set(DefaultEditableFeature.java:84)
    at org.gvsig.geoprocess.algorithm.base.core.DALFeaturePersister.insertFeatureIntoStore(DALFeaturePersister.java:441)
    at org.gvsig.geoprocess.algorithm.base.core.DALFeaturePersister.addFeature(DALFeaturePersister.java:423)
    at org.gvsig.geoprocess.algorithm.buffer.OutBufferOperation.invoke(OutBufferOperation.java:119)
    at org.gvsig.geoprocess.algorithm.base.core.GeometryOperation.computesGeometryOperation(GeometryOperation.java:158)
    at org.gvsig.geoprocess.algorithm.buffer.BufferAlgorithm.computesBufferAlgWithoutDissolve(BufferAlgorithm.java:290)
    at org.gvsig.geoprocess.algorithm.buffer.BufferAlgorithm.processAlgorithm(BufferAlgorithm.java:209)
    at es.unex.sextante.core.GeoAlgorithm.execute(GeoAlgorithm.java:211)
    at org.gvsig.geoprocess.lib.sextante.AbstractSextanteGeoProcess.execute(AbstractSextanteGeoProcess.java:84)
    at es.unex.sextante.core.GeoAlgorithm.execute(GeoAlgorithm.java:159)
    at es.unex.sextante.core.ProcessTask.call(ProcessTask.java:59)
    at es.unex.sextante.core.ProcessTask.call(ProcessTask.java:1)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    ... 1 more

error_buffer_gvsig.png (93.9 KB) José Vicente Higón, 01/13/2014 02:48 PM

639

History

#1 Updated by Álvaro Anguix over 10 years ago

  • Assignee set to Ignacio Brodín
  • Priority changed from Normal to Immediate

#2 Updated by Juan Lucas Domínguez over 10 years ago

Hola, por los mensajes del log, estás usando el buffer de Sextante, no?

He probado el buffer de Sextante y me da problemas de varios tipos.

El geoproceso buffer de gvSIG (no de Sextante) me ha funcionado bien con una capa Postgis lineal en 23030 (además tiene la opción de aplicarlo solo a las geometrías seleccionadas, cosa que no veo en el buffer de Sextante).

¿Por ahora puedes usar el buffer de gvSIG?

Para hacer pruebas: en Prode hay una capa lineal en EPSG:23030 en:

onda.prodevelop.es
BD: osmtur
usuario: osm
password:
tabla: gv_alic_lin_23030

#3 Updated by José Vicente Higón over 10 years ago

Juan Lucas Domínguez wrote:

Hola, por los mensajes del log, estás usando el buffer de Sextante, no?

He probado el buffer de Sextante y me da problemas de varios tipos.

El geoproceso buffer de gvSIG (no de Sextante) me ha funcionado bien con una capa Postgis lineal en 23030 (además tiene la opción de aplicarlo solo a las geometrías seleccionadas, cosa que no veo en el buffer de Sextante).

¿Por ahora puedes usar el buffer de gvSIG?

Para hacer pruebas: en Prode hay una capa lineal en EPSG:23030 en:

onda.prodevelop.es
BD: osmtur
usuario: osm
password:
tabla: gv_alic_lin_23030

Hola,
el geoproceso es el de gvSIG, no el de Sextante. Te adjunto una captura de pantalla. Quizás el problema sea porque la capa está en geográficas.

#4 Updated by Álvaro Anguix over 10 years ago

En Geográficas por la experiencia de algunas pruebas que hicimos con la 1.11 y 1.12, aunque generaba la capa de área de influencia, los resultados no son buenos (la distancia de buffer no se corresponde con la prefijada). Puede que esta excepción tenga relación.

#5 Updated by Juan Lucas Domínguez over 10 years ago

Hola. Mi última aportación, ya que está asignado a otra persona:

- Lo he probado con una capa en EPSG:4326 y tal como dice Álvaro, hace el buffer con una distancia distinta (mayor) a la requerida.

- Propuesta: José Vicente podría ejecutar una SQL del tipo "SELECT ST_AsText(geometry) from TABLE" porque quizá es un linestring extraño. De todas formas, el bug parece referente a concurrencia.

- En la intranet de Prode se puede usar esta tabla para probarlo:

onda.prodevelop.es
BD: osmtur
usuario: osm
password: osmpass
tabla: gv_rivers_4326

#6 Updated by Álvaro Anguix over 10 years ago

Está a Nacho, ya que suele mirar el tema de geoprocesos, pero si tú ya has mirado y sabes por donde tirar, reasignatelo tranquilamente.

#7 Updated by Álvaro Anguix over 10 years ago

  • Target version set to 2.1.0-2218-testing

#8 Updated by Ignacio Brodín over 10 years ago

  • Status changed from New to Awaiting response

Nota: Las distancias del buffer hay que definirlas en metros. En caso de que el sistema de referencia no sea proyectado esta distancia se calcula a la altura del ecuador. El usuario deberá considerar la desviación, o bien convertir la cartografía a un sistema de referencia en metros.

#9 Updated by Ignacio Brodín over 10 years ago

No se porque este interfaz me ha jugado una mala pasada y solo ha salvado el final del mensaje. Escribo de nuevo:

Para mi salen dos temas:

Por una lado el pete de Chevi. ¿Puedes confirmar si ajustando a la capa de entrada funciona bien? He probado con cartografía en 4326 en postGIS y no da problemas. En este caso creo que habría que modificar algo para que avisará si el bounding box que solicitas no intersecta con el de la capa

Por otro lado he hecho algún cambio en el cálculo de las las distancias y puesto una nota en la documentación del algoritmo que dice así:

Nota: Las distancias del buffer hay que definirlas en metros. En caso de que el sistema de referencia no sea proyectado esta distancia se calcula a la altura del ecuador. El usuario deberá considerar la desviación, o bien convertir la cartografía a un sistema de referencia en metros.

#10 Updated by José Vicente Higón over 10 years ago

Ignacio Brodín wrote:

No se porque este interfaz me ha jugado una mala pasada y solo ha salvado el final del mensaje. Escribo de nuevo:

Para mi salen dos temas:

Por una lado el pete de Chevi. ¿Puedes confirmar si ajustando a la capa de entrada funciona bien? He probado con cartografía en 4326 en postGIS y no da problemas. En este caso creo que habría que modificar algo para que avisará si el bounding box que solicitas no intersecta con el de la capa

Por otro lado he hecho algún cambio en el cálculo de las las distancias y puesto una nota en la documentación del algoritmo que dice así:

Nota: Las distancias del buffer hay que definirlas en metros. En caso de que el sistema de referencia no sea proyectado esta distancia se calcula a la altura del ecuador. El usuario deberá considerar la desviación, o bien convertir la cartografía a un sistema de referencia en metros.

Te confirmo que si seleccionas las opción "Ajustar a datos de entrada", el geoproceso NO da excepción. Sin embargo, creo que calcula mal el buffer y salen más metros de los que se indican como parámetro.

#11 Updated by Ignacio Brodín over 10 years ago

  • Status changed from Awaiting response to Fixed

Ok, después de los cambios he hecho pruebas y al menos en los casos que he usado hace lo siguiente:

- Cuando la cartografía está en metros parece que aplica las distancias correctas.

- Cuando la cartografía está en grados la distancia que introduce el usuario es en metros (he añadido un texto para aclararlo en el UI) pero esta se calcula en el ecuador, con la consiguiente desviación que eso produce cuando nos alejamos de este. Por eso he añadido la nota aclaratoria en la documentación.

Comentando este segundo caso por aquí no parece que tenga mucho sentido y lo recomendable sería convertir la cartografía a un sistema de referencia proyectado en metros para calcular el buffer.

Lo cierro para testear en el siguiente build.

#12 Updated by Álvaro Anguix over 10 years ago

  • Status changed from Fixed to Closed

Also available in: Atom PDF