[Gvsig_usuarios] Creación de una capa Shp

Pal Avio palavio en hotmail.com
Mar Mayo 5 10:11:14 CEST 2009



Buenos días,
  tengo un problema, el cual no llego a comprender. ¿De que forma se crea un shape vació?
  Yo lo he intentado de dos formas:

         1.) 

                (FLyrVect) LayerFactory.createLayer(strLayerName,
                (VectorialFileDriver) drv, newFile, m_mapCtrl.getProjection());



          2.)

        DriverManager writerManager = LayerFactory.getDM();
        
        Driver pDriverShp = writerManager.getDriver("gvSIG shp driver");
        
        String selectedDriver = pDriverShp.getName();
        
        FieldDescription[] fieldsDesc = new FieldDescription[arrayFields.size()];
        
        for (int i=0; i < arrayFields.size(); i++)
        {
            fieldsDesc[i] = new FieldDescription();
            
            String strAux = arrayFields.get(i);
            
            int nFind = strAux.indexOf(";");
            
            String strNameColumn = strAux.substring(0, nFind);
            
            int nFindLast = strAux.lastIndexOf(";");
            
            String strType = strAux.substring(nFind+1, nFindLast);
            
            int nFieldLength = Integer.parseInt(strAux.substring(nFindLast+1));
                        
            fieldsDesc[i].setFieldName(strNameColumn);
        
            if (strType.equals("String"))
                fieldsDesc[i].setFieldType(Types.VARCHAR);
            if (strType.equals("Double"))
                fieldsDesc[i].setFieldType(Types.DOUBLE);
            if (strType.equals("Integer"))
                fieldsDesc[i].setFieldType(Types.INTEGER);
            if (strType.equals("Boolean"))
                fieldsDesc[i].setFieldType(Types.BOOLEAN);
            if (strType.equals("Date"))
                fieldsDesc[i].setFieldType(Types.DATE);
            
            fieldsDesc[i].setFieldLength(nFieldLength);

            if (strType.equals("Double"))
                fieldsDesc[i].setFieldDecimalCount(5);

        }

        Driver drv = LayerFactory.getDM().getDriver(selectedDriver);

        File newFile = new File(strPathFile);
        
        SHPLayerDefinition lyrDef = new SHPLayerDefinition();
        lyrDef.setFieldsDesc(fieldsDesc);
        lyrDef.setFile(newFile);
        lyrDef.setName(strLayerName);
        lyrDef.setShapeType(nGeometryType);
        
        ShpWriter writer= (ShpWriter)LayerFactory.getWM().getWriter("Shape Writer");
        writer.setFile(newFile);
        try {
            writer.initialize(lyrDef);
            writer.preProcess();
            writer.postProcess();
        } catch (EditionException e) {
            e.printStackTrace();
            
        }


     En la primera forma, no me crea el fichero físico, por lo que me da un error de que no encuentra el fichero en la ruta dada. Y en la segunda forma me da un error en la línea "ShpWriter writer= (ShpWriter)LayerFactory.getWM().getWriter("Shape Writer");" diciendo lo siguiente:
     
         Exception in thread "AWT-EventQueue-0" com.hardcode.driverManager.DriverLoadException: No se encontró el writer: Shape Writer
    at com.hardcode.driverManager.WriterManager.getWriter(Unknown Source)


     En otra aplicación que tengo realizada, la segunda opción si funciona, y en ésta, aparentemente está igual, así que no comprendo el porqué.

     Un saludo y gracias anticipadamente,
            

_________________________________________________________________
Recibe toda las noticias de actualidad al instante en tu Messenger
http://especiales.es.msn.com/noticias/msninforma.aspx 
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_usuarios/attachments/20090505/442fb1cf/attachment.htm


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