<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body style='font-size: 10pt; font-family: Verdana,Geneva,sans-serif'>
<p>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:</p>
<p>- DBF</p>
<p>- PRJ</p>
<p>- SHP</p>
<p>- SHX</p>
<p>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:</p>
<p>- DBF</p>
<p>- PRJ</p>
<p>La duda que tengo es cómo obtengo el FeatureSet. Para el caso de los ficheros SHP, en el código estaba puesto:<br /><br />DataManager manager = DALLocator.getDataManager();<br />DataParameters params = manager.createStoreParameters("Shape");</p>
<p>File fichero = new File(path);<br />params.setDynValue("shpfile",fichero);</p>
<p>IProjection srs = CRSFactory.getCRS(EPSG25829);<br />params.setDynValue("CRS", srs);</p>
<p>DataStore store = manager.createStore((DataStoreParameters) params);</p>
<p>FLayer capa = (FLyrVect) LayerFactory.getInstance().createLayer(fichero.getName(), store);</p>
<p>Y después se usaba un <em>((FLyrVect) capa).getFeatureStore()</em>. Entonces, para el caso del DBF, he cambiado de la siguiente forma:</p>
<p>DataManager manager = DALLocator.getDataManager();<br />DataParameters params = manager.createStoreParameters("DBF");</p>
<p>File fichero = new File(path);<br />params.setDynValue("dbffile",fichero);</p>
<p>//Aquí no se necesita el CRS</p>
<p>DataStore store = manager.createStore((DataStoreParameters) params);</p>
<p>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:</p>
<p>org.gvsig.fmap.mapcontext.exceptions.LoadLayerException: Can't load the layer DATOS.dbf.<br /> at org.gvsig.fmap.mapcontext.layers.LayerFactory.createLayer(LayerFactory.java:190)<br />............<br />Caused by: java.lang.IllegalArgumentException: The layer don't has a geometry column.<br /> at org.gvsig.fmap.mapcontext.impl.DefaultMapContextManager.getLegend(DefaultMapContextManager.java:616)<br /> at org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect.bindToDataStore(FLyrVect.java:193)<br /> at org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect.setDataStore(FLyrVect.java:172)<br /> at org.gvsig.fmap.mapcontext.layers.LayerFactory.createLayer(LayerFactory.java:182)<br /> ... 4 more</p>
<p>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 (<a href="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" target="_blank">Documentacion</a>), no importalo a PostgreSQL.<br /><br />¿Cómo se procesa correctamente un fichero DBF o dónde puedo ver un ejemplo para guiarme?</p>
<p>Saludos.</p>
</body></html>