[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