[Gvsig_desarrolladores] Consulta SQL sobre datos geograficos

xan das bolas mellorqueomgs en hotmail.com
Jue Mar 8 16:17:17 CET 2007


Estoy realizando una extension para gvSIG en la que se manipula datos 
geograficos de Postgis, para mi extension
estoy adaptando la extension extDataLocator, en concreto el método 
getNewValues().A la hora de ejecutar la consulta
con el metodo executeQuery del Data Source, esta extensión lo vuelca a un 
array de Value, pero si extraemos info de tipo
geométrico esto da un error.Me gustaria saber como hacer esto, o como 
reutilizar la conexión para hacer mi propia
consulta con un DataSet etc.

Añado el código de mi método, aunque por ahora solo he estado probando 
opciones y no esta legible.

Muchas gracias.






private Value[] getGeometryForAttributeVector(String attribute) {
		AlphanumericData lyr = (AlphanumericData)layerToZoom;
		DataSource ds;
		Value[] newValues = null;
		if (fieldToZoomIndex < 0)
			return null;
		try {
            ds = lyr.getRecordset();



            System.out.println("select the_geom " +
		             " from " + ds.getName() +
					 " where " + (String)jComboBox1.getSelectedItem()+" = '"+attribute+"' 
;");

            String sql = ("select the_geom " +
		             " from " + ds.getName() +
					 " where " + (String)jComboBox1.getSelectedItem()+" = '"+attribute+"' 
;");

            ds = ds.getDataSourceFactory().executeSQL(sql, 
DataSourceFactory.AUTOMATIC_OPENING);




			Vector vector=null;
			for (int i=0;i<ds.getRowCount();i++) {
				System.out.println("**"+ds.getFieldName(i));
				//System.out.println("**"+(PGgeometry)ds.getFieldValue(i,0));
				vector.add((PGgeometry)ds.getFieldValue(i,0));
			    //newValues[i] = ds.getFieldValue(i, 0);
			}



        } catch (DriverException ee) {
            // TODO Auto-generated catch block
            ee.printStackTrace();
        } catch (com.hardcode.gdbms.engine.data.driver.DriverException eee) 
{
            // TODO Auto-generated catch block
            eee.printStackTrace();
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (DriverLoadException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SemanticException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (EvaluationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("***********"+newValues.length+"**********");
        System.out.println("***********"+newValues[0]+"**********");
        return newValues;
	}

_________________________________________________________________
Moda para esta temporada. Ponte al día de todas las tendencias. 
http://www.msn.es/Mujer/moda/default.asp




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