[Gvsig_desarrolladores] Error cacluladora campos v1-9

Vicente Caballero Navarro vicente.caballero en iver.es
Lun Ene 11 11:17:50 CET 2010


Hola Julio.

Gracias por avisar sobre este error, en futuras versiones estará 
solucionado, pero de momento, te puedo pasar la solución que es cambiar 
el método: getParts de la clase 
com.iver.cit.gvsig.fmap.core.GeometryUtilities por el siguiente:


public static ArrayList getParts(IGeometry geometry) {
        ArrayList xs = new ArrayList();
        ArrayList ys = new ArrayList();
        ArrayList parts=new ArrayList();
        double[] theData = new double[6];

        //double[] aux = new double[6];
        PathIterator theIterator;
        int theType;
        int numParts = 0;
        theIterator = geometry.getPathIterator(null, 
FConverter.FLATNESS); //, flatness);
        boolean isClosed = false;
        double firstX=0;
        double firstY=0;
        while (!theIterator.isDone()) {
            theType = theIterator.currentSegment(theData);

            switch (theType) {
            case PathIterator.SEG_MOVETO:
                    if (numParts==0){
                        firstX=theData[0];
                        firstY=theData[1];
                        xs.add(new Double(theData[0]));
                        ys.add(new Double(theData[1]));
                    }else{
                        if (!isClosed){
                            Double[] x = (Double[]) xs.toArray(new 
Double[0]);
                            Double[] y = (Double[]) ys.toArray(new 
Double[0]);
                            parts.add(new Double[][] { x, y });
                            xs.clear();
                            ys.clear();
                        }
                        firstX=theData[0];
                        firstY=theData[1];
                        xs.add(new Double(theData[0]));
                        ys.add(new Double(theData[1]));
                    }
                numParts++;
                isClosed = false;
                break;
            case PathIterator.SEG_LINETO:
                isClosed=false;
                xs.add(new Double(theData[0]));
                ys.add(new Double(theData[1]));
                break;
            case PathIterator.SEG_CLOSE:
                isClosed=true;
                xs.add(new Double(theData[0]));
                ys.add(new Double(theData[1]));
                xs.add(new Double(firstX));
                ys.add(new Double(firstY));
                Double[] x = (Double[]) xs.toArray(new Double[0]);
                Double[] y = (Double[]) ys.toArray(new Double[0]);
                parts.add(new Double[][] { x, y });
                xs.clear();
                ys.clear();
                break;
            } //end switch

            theIterator.next();
        } //end while loop

        if (!isClosed){
            isClosed=true;
            xs.add(new Double(theData[0]));
            ys.add(new Double(theData[1]));
            Double[] x = (Double[]) xs.toArray(new Double[0]);
            Double[] y = (Double[]) ys.toArray(new Double[0]);
            parts.add(new Double[][] { x, y });
            xs.clear();
            ys.clear();
        }
        return parts;

    }


Un saludo.

-- 
Vicente Caballero Navarro
Grupo desarrollo gvSIG.
IVER TI S.A.
C/ Lérida, 20
46005-Valencia
Tlf.+34963354983
www.iver.es
www.gvsig.com



Julio Torres escribió:
> Calculadora de campos en gvSIG 1.9
>  
> En una capa con tres polígonos en edición cuando entro en la 
> calculadora de campos, selecciono el campo "Perimetro" y calculo con 
> el operador "perimeter" el valor de cálculo es erróneo. Si lo mido en 
> pantalla con el comando de medir longitudes lo hace correctamente.
> Realizando el mismo proceso desde la versión 1.1.2 lo hace correctamente.
> En la captura adjunta los campos de la tabla de atributos "Perimetro" 
> y "Area" estan calculados desde la versión 1.9.
> Los campos "Peri1-1-2" y "Area1-1-2" están calculados desde la versión 
> 1.1.2.
> Los valores de áreas se corresponden pero los de perimetros no. Los 
> valores correctos son los de la v 1-1-2
>  
> Saludos de Julio Torres
>  
>
> ------------------------------------------------------------------------
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>   



Este mensaje y sus archivos son confidenciales. No está permitida su reproducción o distribución sin la autorización expresa de "IVER Tecnologías de la Información". Si usted no es el destinatario previsto, queda desautorizado cualquier uso, acceso o copia de este mensaje. Si ha recibido este mensaje por error, por favor bórrelo e infórmenos por esta misma vía.




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