[Gvsig_desarrolladores] Importar DBF a PostgreSQL

Iago Alonso Alonso ialonso en enxenio.es
Jue Mar 16 17:41:51 CET 2017


Muchas gracias por la aclaración, el código que había antes me estaba
confundiendo. 

Un saludo! 

El 10-03-2017 12:51 AM, Joaquin Jose del Cerro Murciano escribió:

> El 9 de marzo de 2017, 15:26, Iago Alonso Alonso <ialonso en enxenio.es> escribió:
> 
>> Hola, me ha surgido una duda sobre los pasos a seguir para importar un DBF a PostgreSQL. Antes tenía una carpeta con 4 ficheros: 
>> 
>> - DBF 
>> 
>> - PRJ 
>> 
>> - SHP 
>> 
>> - SHX 
>> 
>> Y cuando querías importarlos a una tabla a PostgreSQL, con cargar el SHP (intuyo que gvSIG carga el resto automáticamente) llegaba. El problema es que ahora tengo una carpeta que sólo tiene: 
>> 
>> - DBF 
>> 
>> - PRJ 
>> 
>> La duda que tengo es cómo obtengo el FeatureSet. Para el caso de los ficheros SHP, en el código estaba puesto:
>> 
>> DataManager manager = DALLocator.getDataManager();
>> DataParameters params = manager.createStoreParameters("Shape"); 
>> 
>> File fichero = new File(path);
>> params.setDynValue("shpfile",fichero); 
>> 
>> IProjection srs = CRSFactory.getCRS(EPSG25829);
>> params.setDynValue("CRS", srs); 
>> 
>> DataStore store = manager.createStore((DataStoreParameters) params); 
>> 
>> FLayer capa = (FLyrVect) LayerFactory.getInstance().createLayer(fichero.getName(), store); 
>> 
>> Y después se usaba un _((FLyrVect) capa).getFeatureStore()_. Entonces, para el caso del DBF, he cambiado de la siguiente forma: 
>> 
>> DataManager manager = DALLocator.getDataManager();
>> DataParameters params = manager.createStoreParameters("DBF"); 
>> 
>> File fichero = new File(path);
>> params.setDynValue("dbffile",fichero); 
>> 
>> //Aquí no se necesita el CRS 
>> 
>> DataStore store = manager.createStore((DataStoreParameters) params); 
>> 
>> Pero ahora no sé cómo obtener el FeatureSet para crear la tabla en PostgreSQL, ya que si uso el FLayer del SHP obtengo el error: 
>> 
>> org.gvsig.fmap.mapcontext.exceptions.LoadLayerException: Can't load the layer DATOS.dbf.
>> at org.gvsig.fmap.mapcontext.layers.LayerFactory.createLayer(LayerFactory.java:190)
> 
> No entiendo que quieres hacer. 
> Un dbf no tiene informacion geometrica (o lo asumiremos asi de momento), 
> ¿ Como vas a crear una capa a partir de el? 
> Como mucho podrias añadirlo como una tabla de gvSIG, pero sigo sin entender para que. 
> Una vez ya has creado el store ya puedes acceder a los datos, de hecho el metodo getFeatureSet, la unica forma de obtener un FeatureSet es del store no de la layer.
> 
> En gvSIG estan los stores, las fuentes de datos, y con ellas se construten las capas, que estan formadas por un store con informacion geografica mas informacion sobre como debe "pintarse", la leyenda, y sirven para añadirlas a una vista y visualizar las geoemtrias de esta. No puedes crear un layer a partir de una fuente de datos, un store, que no tiene una columna geometria.
> 
> Si ya tienes un store... ¿ para que crear una capa a partir de el para luego pedirle a la capa el store ? 
> Crea la capa si necesitas añadir los datos del store como una capa en una vista, pero si has de operar con los datos usa directamente el store.
> 
> Un saludo 
> Joaquin
> 
>> ............
>> Caused by: java.lang.IllegalArgumentException: The layer don't has a geometry column.
>> at org.gvsig.fmap.mapcontext.impl.DefaultMapContextManager.getLegend(DefaultMapContextManager.java:616)
>> at org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect.bindToDataStore(FLyrVect.java:193)
>> at org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect.setDataStore(FLyrVect.java:172)
>> at org.gvsig.fmap.mapcontext.layers.LayerFactory.createLayer(LayerFactory.java:182)
>> ... 4 more 
>> 
>> Que tiene sentido ya que en esta ocasión no dispongo de datos geométricos. He intentado buscar un ejemplo de cómo procesar un DBF pero no he encontrado nada, en la documentación he visto un ejemplo pero es para crear un fichero DBF (Documentacion [1]), no importalo a PostgreSQL.
>> 
>> ¿Cómo se procesa correctamente un fichero DBF o dónde puedo ver un ejemplo para guiarme? 
>> 
>> Saludos. 
>> _______________________________________________
>> gvSIG_desarrolladores mailing list
>> gvSIG_desarrolladores en listserv.gva.es
>> Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección: https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores [2]
> 
> -- 
> --------------------------------------
> Joaquin Jose del Cerro Murciano
> Development and software arquitecture manager at gvSIG Team
> jjdelcerro en gvsig.com
> jjdelcerro en gvsig.org
> gvSIG Association
> www.gvsig.com [3]
> www.gvsig.org [4] 
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección: https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
 

Links:
------
[1]
http://docs.gvsig.org/plone/projects/gvsig-desktop/docs/devel/org.gvsig.fmap.dal/2.0.0/featurestore/consumer-services/creacion-de-un-nuevo-almacen
[2]
https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
[3] http://www.gvsig.com
[4] http://www.gvsig.org
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20170316/a9c5b2a4/attachment.html>


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