[Gvsig_desarrolladores] Copiar y Pegar una feature de una capa aotra

Vicente Caballero Navarro vicente.caballero en iver.es
Jue Sep 7 11:06:36 CEST 2006


Hola Domingo.

Si lo que quieres es trabajar con esa feature en la capa destino y después decidir si copiar en disco y por tanto modificar la capa original, esto se puede hacer con la ayuda de la extensión extCAD.

Tendráis que poner la capa en edición y después:    

        VectorialLayerEdited vle=(VectorialLayerEdited) CADExtension.getEditionManager().getActiveLayerEdited();
        VectorialEditableAdapter vea = vle.getVEA();
        IFeature xx = FeatureFactory.createFeature(featureAttr,geo,iLyrdef);                                          vea.addRow(fea,getName(),EditionEvent.GRAPHIC);

Y si por el contrario, lo que quieres es modificar directamente el fichero de la capa en disco. Te faltaría a lo que has hecho utilizar un writer para procesarlo todo.

 iLyrdef=DefinitionUtils.createLayerDefinition((FLyrVect)layer2);
 Value[] featureAttr = new Value[0];

 IFeature xx = FeatureFactory.createFeature(featureAttr,geo,iLyrdef);


Por ejemplo, de shape:

ShpWriter writer= (ShpWriter) LayerFactory.getWM().getWriter(
     "Shape Writer");
 writer.initialize(iLyrdef);
writer.preProcess();

Tendrías que recorrer todas las features las originales y también las que quieres añadir:

DefaultRowEdited edRow = new DefaultRowEdited(xx,
        DefaultRowEdited.STATUS_ADDED, i);
      writer.process(edRow);

Y por último el postProcess:

writer.postProcess();
       
Espero haber aclarado algo. Un saludo.

Vicente Caballero Navarro
Grupo desarrollo gvSIG.
www.gvsig.gva.es
www.iver.es
  ----- Original Message ----- 
  From: Domingo Baeza 
  To: gvsig_desarrolladores en runas.cap.gva.es 
  Sent: Thursday, September 07, 2006 9:22 AM
  Subject: [Gvsig_desarrolladores] Copiar y Pegar una feature de una capa aotra


  Buenos días,

   

  Tengo dos capas con distintos atributos , pero siendo del mismo tipo de geometría. Existe alguna forma de copiar una  feature que tengo seleccionada en una capa y llevarla a la otra? Con el siguiente código puedo detectar todas las geometrías de la capa origen:

        View vista = (View) f;

        ProjectView model = vista.getModel();

        FMap mapa = model.getMapContext();

        FLayer layer = mapa.getLayers().getLayer("LAYER1.SHP");

        FLayer layer2 = mapa.getLayers().getLayer("LAYER2.SHP");

        //Leer la Feature del layer 1

              AlphanumericData co = (AlphanumericData) layer;

              ProjectExtension ext = (ProjectExtension) PluginServices.getExtension(ProjectExtension.class);

              ProjectTable projectTable = ext.getProject().getTable(co);

              EditableAdapter ea=null;

              ReadableVectorial rv=((FLyrVect)layer).getSource();

              ILayerDefinition iLyrdef=null;

              try {

              int nFeatures = (int) co.getRecordset().getRowCount();

              for (int i=0;i<nFeatures;i++){

                    IGeometry geo = rv.getFeature(i).getGeometry();

              }

   

  Pero no sé como pasarlas a la capa de destino, he estado mirando .createFeature con las siguientes líneas y 

              iLyrdef=DefinitionUtils.createLayerDefinition((FLyrVect)layer2);

              

              Value[] featureAttr = new Value[0];

              IFeature xx = FeatureFactory.createFeature(featureAttr,geo,iLyrdef);

  Y la clase java no da problemas pero no añade las features al shape. 

   

  Un  Saludo,

   



------------------------------------------------------------------------------


  _______________________________________________
  gvSIG_desarrolladores mailing list
  gvSIG_desarrolladores en runas.cap.gva.es
  http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20060907/fb0a588f/attachment-0001.htm


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