[Gvsig_desarrolladores] Añadir puntos a un shape file por código

jose Diez Pastor namberwuan en hotmail.com
Jue Ene 8 13:38:10 CET 2009



Hola a todos.

Resulta que he creado una capa por código con el siguiente código inspirado en la extension extCAD, lo pongo por si alguien quiere crear alguna vez una capa por código.

public void creaCapa(){
                
        //LayerFactory.setDriversPath("gvSIG\\extensiones\\com.iver.cit.gvsig\\drivers");
        DriverManager writerManager = LayerFactory.getDM();
        Driver driver = writerManager.getDriver("gvSIG shp driver");
        
        
        FLyrVect lyr = null;
        MapControl mapCtrl = v.getMapControl();
        
            // ChooseWriteDriver driverPanel = (ChooseWriteDriver) myWizardComponents.getWizardPanel(0);
            mapCtrl.getMapContext().beginAtomicEvent();                
            File newFile = new File("d:\\provando.shp");
            String layerName = "prueba";
            String selectedDriver = "gvSIG shp driver";
            int geometryType = 1; //puntos
            FieldDescription[] fieldsDesc = getFieldsDescription();
            Driver drv = LayerFactory.getDM().getDriver(selectedDriver);

            SHPLayerDefinition lyrDef = new SHPLayerDefinition();
            lyrDef.setFieldsDesc(fieldsDesc);
            lyrDef.setFile(newFile);
            lyrDef.setName(layerName);
            lyrDef.setShapeType(geometryType);
            ShpWriter writer= (ShpWriter)LayerFactory.getWM().getWriter("Shape Writer");
            writer.setFile(newFile);
            try {
                writer.initialize(lyrDef);
                writer.preProcess();
                writer.postProcess();
            } catch (EditionException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            

            lyr = (FLyrVect) LayerFactory.createLayer(layerName,
                  (VectorialFileDriver) drv, newFile, mapCtrl.getProjection());
            
  
            
            
            
    }
    
// la capa que creo va a tener 3 attributos
    private FieldDescription[] getFieldsDescription() {
        FieldDescription[] fieldsDesc = new FieldDescription[3];
        fieldsDesc[0] = new FieldDescription();
        fieldsDesc[0].setFieldName("ID");
        fieldsDesc[0].setFieldType(Types.VARCHAR);    //STRING
        fieldsDesc[0].setFieldLength(5);
        
        fieldsDesc[1] = new FieldDescription();
        fieldsDesc[1].setFieldName("ANGLE");
        fieldsDesc[1].setFieldType(Types.VARCHAR);    //STRING
        fieldsDesc[1].setFieldLength(5);
        
        fieldsDesc[2] = new FieldDescription();
        fieldsDesc[2].setFieldName("SENTIDO");
        fieldsDesc[2].setFieldType(Types.VARCHAR);    //STRING
        fieldsDesc[2].setFieldLength(5);
        
        return fieldsDesc;
    }


Esto de arriba funciona correctamente.
El problema es que ahora necesito crear unos puntos, pero no quiero crear esos puntos a partir de eventos del ratón,
quiero crearlos a partir de unos calculos mios.
No soy capaz de encontrar la manera de insertar un punto a partir del código

Muchas gracias.

_________________________________________________________________
Chatea sin límites en Messenger con la tarifa plana de Orange
 http://serviciosmoviles.es.msn.com/messenger/orange.aspx
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20090108/c7b4a078/attachment.htm


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