Re: [Gvsig_desarrolladores] Intersección de capas

Alvaro Zabala azabala en gmail.com
Mar Sep 5 13:08:28 CEST 2006


El día 5/09/06, Domingo Baeza <dbaeza en grafos.es> escribió:
>
>
> Todo esto, para la pregunta siguiente, ¿existe alguna forma más rápida
> de hacer una intersección y pasar sólo unos determinados campos al shape
> resultante?


A día de hoy (gvSIG 1.0 alpha con su asistente para geoprocesamiento) no.

El geoproceso INTERSECCIÓN sigue la semántica de idéntico geoproceso de
otros software (ArcMap, ArcView, etc.), que en realidad lo que hacen es
implementar una operación del Álgebra definido por las operaciones de
overlay.

Piensa que intersección es conocido como  "Spatial AND", porque la
intersección de dos polígonos representa un espacio que tiene los atributos
de uno Y del otro polígono. Por eso el "feature" resultante tiene los campos
de los dos features a partir del que se generaron.

En otro orden de cosas, otra alternativa que podrías seguir es crearte tu
propio geoproceso (SelectedFieldsIntersectGeoprocess ??, por poner un
ejemplo) para lo cual tendrías que:

- A) Crear tu nuevo geoproceso, prácticamente calco del que ya hay en gvSIG.
Esta implementación podría crear su propio esquema de la capa resultado
(ILayerDefinition) en base a las selecciones de campos que haga el usuario
en la GUI. No es necesario que uses DefinitionUtils. Esta es solo una clase
auxiliar para crear esquemas, cuando se trate de operaciones que se repitan
en varios geoprocesos. Para tu caso, se podría generar el nuevo esquema en
el propio geoproceso.

-B) En vez de modificar ShpWriter, si creas ShpWriter con el esquema que te
has generado antes te debería valer.

-C) Tampoco tienes que tocar AbstractGeoprocessController. Esta clase
abstracta es una clase auxiliar que ya tiene implementados métodos comunes.
Si quieres modificar el comportamiento general, sobreescribe ésta o bien
implementa directamente la interfaz IGeoprocessController.

-D) Tienes que crearte tu propio IGeoprocessPanel. Si te fijas, todo
geoproceso tiene una parte de lógica (en el paquete fmap del geoproceso) y
una parte visual, que es el panel con el que interactua el usuario. Create
tu propio panel, de forma que el usuario, además de la capa de entrada y la
capa de recorte, pueda específicar qué campos le interesan.

Si sigues todos estos pasos, tendrás lo que quieres sin modificar ninguna
clase esencial de gvSIG (lo estarás extendiendo). Esto es importante para
que tu desarrollo se pueda integrar con las futuras versiones de gvsig que
vayan saliendo.

Un último apunte: ya no va a dar tiempo para la versión 1.0 RC de gvSIG,
pero previsiblemente la versión 1.0 de gvSIG tenga geoprocesamiento
extensible por medio de plugins.

Con esta nueva característica, podrás registrar tu nuevo geoproceso mediante
un mecanismo de plugins, de forma que aparezca automáticamente en el
asistente sin que tengas que tocar nada.

Saludos.


-- 
Alvaro Zabala Ordóñez

Teléfono: 954939528
Plaza de España, sector II.
SEVILLA
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20060905/9b53921f/attachment.htm


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