[Gvsig_desarrolladores] Crear shape desde cero

Cèsar Ordiñana cordinyana en gvsig.com
Mar Mayo 11 10:46:29 CEST 2010


Hola,

Para lo que quieres hacer, en principio no necesitas más que DAL y los 
proveedores de datos con los que quieras trabajar. Cuando eso lo quieras 
convertir en una extensión, entonces sí ya puedes depender de andami y 
appgvSIG y usar el PluginServices, entre otros.

Por ejemplo, te puedes crear una librería que toma como fuente un 
FeatureStore sobre una tabla de una base de datos, y crea un shape con 
los datos de dicha tabla. Sólo necesitarás depender de DAL, el proveedor 
de base de datos que necesites y el proveedor de shape.

Mírate la documentación que hay sobre dal en [1], sobretodo los puntos:

- Acceso a los fenómenos
- Modificación y escritura de datos
- Consultando la estructura de un almacen
- Creación de un nuevo almacén


[1] 
https://gvsig.org/web/projects/gvsig-desktop/docs/devel/org.gvsig.fmap.dal/

Saludos,

agirrearri escribió:
> Hola:
>
> La primera duda es ¿para poder utilizar DALLocator, PluginServices etc tengo
> que estar dentro de un proyecto extension? No puedo crear un nuevo proyecto
> que no sea una extension y utilizar estas clases? Quiero poder ejecutarlo
> sin arrancar el gvsig porque si no para probarlo tengo que instalar siempre
> la extension y se pierde mucho tiempo porque estoy probando cada linea de
> código. Aunque ejecutarlo independientemente me trae problemas porque no
> tengo algunos objetos que necesito para crear el shp.
>
> De momento estoy haciendolo dentro de Gvsig siguiendo el ejemplo de exportto
> y mi código es este,
>
> package org.gvsig.myextension;
>
> import java.io.File;
>
> import org.gvsig.andami.PluginServices;
> ........
> ........
>
> public class SHPEditable {
>
> 	SHPEditable(String path) {
>
> 		org.gvsig.andami.ui.mdiManager.IWindow f = PluginServices
> 				.getMDIManager().getActiveWindow();
>
> 		if (f instanceof DefaultViewPanel) {
> 			DefaultViewPanel vista = (DefaultViewPanel) f;
> 			ViewDocument model = vista.getModel();
> 			MapContext mapContext = model.getMapContext();
>
> 			File newFile = new File(path);
>
> 			DataManager datamanager = DALLocator.getDataManager();
>
> 			try {
> 				FilesystemServerExplorerParameters explorerParams =
> (FilesystemServerExplorerParameters) datamanager
> 						.createServerExplorerParameters(FilesystemServerExplorer.NAME);
> 				
> 				explorerParams.setRoot(newFile.getParent());
>
> 				FilesystemServerExplorer explorer = (FilesystemServerExplorer)
> datamanager
> 						.createServerExplorer(explorerParams);
>
> 				NewFeatureStoreParameters newParams = (NewFeatureStoreParameters)
> explorer
> 						.getAddParameters(newFile);
>
> 				//FeatureStore store1=lv.getFeatureStore();codigo original
> 				//error
>                  //no tengo la capa he intento crear un feature store pero
> no se como, he intentado estas cosas pero estoy desorientado
> 				DataStoreParameters params = datamanager.createStoreParameters("Shape");
> 				FeatureStore store = (FeatureStore)datamanager.createStore(params);
>
> 				FeatureQuery featureQuery = store.createFeatureQuery();
> 				((SHPNewStoreParameters) newParams).setSRS(mapContext
> 						.getProjection());
> 				String pathFile = ((FilesystemStoreParameters)
> newParams).getFile().getAbsolutePath();
> 				String withoutShp = pathFile.replaceAll("\\.shp", "");
> 				
> 				// ((SHPNewStoreParameters) newParams).setSRS(mapContext
> 				// .getProjection());
> 				 System.out.println();
>
> 				FeatureSet set = null;
> 				Evaluator evaluator;
> 			} catch (DataException e) {
> 				e.printStackTrace();
> 			} catch (ValidateDataParametersException e) {
> 				// TODO Auto-generated catch block
> 				e.printStackTrace();
> 			}
> 		}
> 	}
> }
>
>
>
>  no puedo conseguir el FEATURESTORE porque lo coje del layer, la proyección
> lo puedo coger porque cuando ejecuto estoy en el panel de vista pero claro
> no tengo niguna capa cargada. Porque no tiene sentido ya que lo que quiero
> hacer es coger puntos de una tabla que tengo con coordenadas e ir creando
> una capa con polígonos creados con esos puntos.
>
> No se si he sido claro en la explicación, si quiere algo estoy aqui.
> Gracias, no controlo las funcionalidades de las clases y tengo un lio
> enorme, atentamente Eñaut.
>   


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



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