[Gvsig_desarrolladores] Intersección de capas

Domingo Baeza dbaeza en grafos.es
Mar Sep 5 12:23:49 CEST 2006


 Buenos días a todos.
Aún sigo con el problema de las intersecciones, creo que "he encontrado"
una forma de poder adaptar vuestras clases a mi necesidades. 
Al continuar el problema del tamaño de cada registro resultante de la
intersección, que realmente la hace bien, pero da problemas con la
tabla. 
Lo que quiero hacer es no pasar todos los atributos de las capas, sino
sólo los que sean necesarios, y no sé si hay alguna forma de hacerlo de
forma rápida, porque la solución que he encontrado ha sido cambiar
varias  clases vuestras, en concreto:

A) La clase DefinitionUtils y  en el método mergeLayerDefinitions lo que
hago es crear un shape, sólo con los campos que necesito, modificando
para ello el campo numFieldsA y numFieldsB,  y el array
FieldDescription[] fields donde se almacenan los campos que formarán
parte del shape interseccionado.

B) La clase shapeWriter la he modificado para que en el método .process
se vayan pasando los valores en función de la capa que se pase y de la
posición del campo dentro del shape. 
He cambiado el record.length por
row.getLinkedRod().getAttributes().length
for (int i=0; i < row.getLinkedRow().getAttributes().length; i++){
	record[nPasada++] = feat.getAttribute(i);
}

C) También creo una clase nueva que corresponda a
AbstractGeoprocessController para que el método que tiene getShpWriter
devuelva un ShapeWriter del punto anterior, que será el que se ejecute
cuando se ejecute la intersección.

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?				
				
Un Saludo 
Domingo Baeza




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