[Gvsig_desarrolladores] Capturar featureColletion de una capa

Velarde Gutierrez, Victor victor.velarde en unican.es
Mie Dic 31 13:00:03 CET 2008


Hola,
María, para pasar los datos de gvSig a las librerías de n52 creo que debes usar una referencia a 
org.geotools.feature.FeatureCollection (una featureCollection de Geotools -GT2-) y no una coleccion de la librería org.cresques.px.gml.FeatureCollection, porque eso es lo que espera n52.
La versión de Geotools que tengas a ambos lados (gvSig y 52north) debería ser la misma, o al menos compatible. Si usas n52 en una versión como la 1.0-rc2, tendrás de ese lado la Geotools 2.4; si usas gvSIG, 1.1.2 p.ej., tendrás de ese lado la versión 2.1. Esas versiones no son compatibles para el paso directo de la referencia. Una opción es que recompiles n52 con la versión 2.1.
Por otro lado estaría cómo trabajar con la featurecollection en la parte de gvSIG. Idealmente habría una conversión directa de FLyrVect a FeatureCollection de GT2 y a la inversa. Yo no lo he encontrado en gvSig, pero se pueden programar unas conversiones en ambas direcciones.

1) Para el método de carga del featurecollection a partir de una FLyrVect de gvSIG (rellenar parámetros de entrada para 52north):
* Generar un FeatureType para GT2 (el "esquema" vacío de la entidad), a partir p.ej. del capa.getRecordset() (siendo 'capa' la FLyrVect)
* Recorrer las entidades de gvSIG para convertir cada una de sus IFeature en una Feature de GT2 (con la ayuda del FeatureType). El FeatureType permite hacer algo como Feature entidad = FeatureType.create(valores);
* Unir todas las Feature de GT2 en una FeatureCollection.

2) Para la conversión de FeatureCollection a FLyrVect (recogida de parámetros de salida de 52north) una opcion es:
* A partir de la FC obtener una ILayerDefinition de gvSIG
* Con esta definicion y un driver de escritura, p.ej. ShpWriter, generar un shapefile de salida
* Con un FeatureIterator de GT2, recorrer las entidades de GT2
* De cada Feature de GT2 extraer su geometria (IGeometry <-- GT2 usa JTS y puedes obtener la geometria para gvSIG con jts_to_igeometry) y el valor de sus campos (Value[] <-- mira ValueFactory) y generar p.ej. una IFeature de gvSIG.
* Con el writer, guardar cada registro en el shapefile.
* Finalmente, obtener la FLyrVect del shapefile

Para todas estas conversiones es muy útil la documentación de Geotools2, en 
http://docs.codehaus.org/display/GEOT/Home

Y para el caso concreto de 52north, el ejemplo de las mismas conversiones que existe con Jump
https://52north.org/cgi-bin/viewvc.cgi/incubator/WPS%20Client%20jump/trunk/WPS%20Client%20jump/src/main/java/org/n52/wps/client/jump/JUMPConversionUtil.java?view=markup&root=geoprocessing&pathrev=421

Espero que sirva.

Un saludo,
 
Víctor Velarde

________________________________

De: gvsig_desarrolladores-bounces en runas.cap.gva.es en nombre de Maria Ruiz
Enviado el: lun 29/12/2008 12:37
Para: gvsig_desarrolladores en runas.cap.gva.es
Asunto: [Gvsig_desarrolladores] Capturar featureColletion de una capa


Hola,

En el desarrollo del cliente WPS que estoy realizando me estoy encontrando con un error que ya ha sido tratado en varias consultas de esta misma lista de distribución, pero que no soy capaz de solventar.

El proposito del cliente es enviar a un servidor WPS para que procese los datos que se pasan desde gvSIG. El servidor se encarga de recoger los datos de entrada y el problema lo encuentro los datos de tipo complexData  que convierte en un XML construido mediante el método generateXML de la clase org.n52.wps.io.xml.GML2BasicGenerator. A este método le llegan dos parámetros coll de tipo Object y schema de tipo String. El parámetro coll es casteado a un tipo featureCollection. Para generar este parámetro, yo estoy cogiendo la proyección de mi capa (firstLayer) y creo variable como sigue:

 FeatureCollection fcLayer = new FeatureCollection(firstLayer.getProjection());

y estoy importando la librería org.cresques.px.gml.FeatureCollection. No se si el problema viene por ahí, por tratarse en un caso de gml y en otro de gml2 o porque no estoy creando mal la variable featureCollection, pero siempre me devuelve un error en el cast.

No se si me he explicado bien, he empezado en este tema de los gis con este proyecto y seguro que no uso los términos correctamente. Me sería de gran ayuda una orientación para ver si puedo continuar con el desarrollo.

Muchisimas gracias de antemano y un saludo.

María Ruiz.




           




Más información sobre la lista de distribución gvSIG_desarrolladores