[Gvsig_desarrolladores] Error en la edición de geometrías?

Cèsar Ordiñana cordinyana en gvsig.com
Jue Abr 19 11:29:44 CEST 2012


El 18/04/12 17:41, junquero escribió:
> Hola
>
> He seguido avanzando en el estudio del problema, y he encontrado que en la
> clase WKTParser.java, hay un método
>
> private Geometry readLineStringText(StreamTokenizer tokenizer)
>
> Entiendo que esta clase debería crear una geometría compatible con
> LineString, y sin embargo, crea una geometría Surface.
>
> He cambiado el código para que genere una geometría tipo Curve en lugar de
> Surface y ahora si que me funciona correctamente.
>
> La cuestión es: ¿porqué se está creando una geometría tipo Surface en lugar
> de Curve? ¿Cambiar a Curve tendrá efectos colaterales?

Hola.

Me parece que se trata de un bug, y como comentas se podría cambiar a Curve.

Tiene toda la pinta que esa clase está a medias y no se debe estar 
usando demasiado. De hecho mirando algunos de los métodos (ej: 
readPolygonText) imagino que no funcionará tal y como está.

Saludos.

-- 
Cèsar Ordiñana Navarro
gvSIG software architect
DiSiD Technologies (http://www.disid.com)


>
>        /**
>         *  Creates a<code>LineString</code>  using the next token in the
> stream.
>         *
>         *@param  tokenizer        tokenizer over a stream of text in
> Well-known Text
>         *      format. The next tokens must form a&lt;LineString Text&gt;.
>         *@return                  a<code>LineString</code>  specified by the
> next
>         *      token in the stream
>         *@throws  IOException     if an I/O error occurs
>         *@throws  ParseException  if an unexpected token was encountered
>         * @throws CreateGeometryException
>         * @throws IllegalAccessException
>         * @throws InstantiationException
>         */
>        private Geometry readLineStringText(StreamTokenizer tokenizer) throws
> IOException, ParseException, CreateGeometryException    {
>              Coordinate[] arrayC = getCoordinates(tokenizer);
>              GeneralPathX gp = new GeneralPathX();
>              gp.moveTo(arrayC[0].x,arrayC[0].y);
>              for (int i=1;i<  arrayC.length; i++)
>              {
>                    gp.lineTo(arrayC[i].x, arrayC[i].y);
>              }
> *         // IJM: Cambiado Surface por Curve
>              Curve curve = (Curve) manager.create(TYPES.CURVE,
> SUBTYPES.GEOM2D);
>              curve.setGeneralPath(gp);
>              return curve;
> *      }
>


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