[Gvsig_usuarios] Problemas con copiado de geometrias en gvSIG 1.9
Vicente Caballero Navarro
vicente.caballero en iver.es
Jue Nov 11 13:04:16 CET 2010
Hola Domingo.
Creo que tu consulta es más apropiada hacerla en la lista de desarrollo,
pero de todas formas puedes ver este proyecto que funciona sobre la
versión de gvSIG 1.10 que no varÃa demasiado respecto de la 1.1.2 y
trata de copiar geometrÃas de una capa y pegarlas en otra diferente a
través del portapapeles.
Un saludo.
--
Vicente Caballero Navarro
Analista/Programador.
IVER TecnologÃa de la Información S.A.
C/ Lérida, 20
46005-Valencia
Tlf.+34963354983
www.iver.es
www.gvsig.com
El 11/11/2010 10:33, Domingo Baeza escribió:
>
> Buenos dÃas a todos.
>
> Tengo un problema con una funcionalidad que necesito que es copiar
> geometrÃas de una shapefile a otro shapefile. Para este caso uso el
> siguiente código.
>
> View vista = (View) PluginServices./getMDIManager/().getActiveWindow();
>
> ProjectView model = (ProjectView) vista.getModel();
>
> MapContext mapa = model.getMapContext();
>
> MapControl mapCtrl = vista.getMapControl();
>
> //_recorrer_ _la_ _capa_ _activa_, _para_ _generar_ _la_ _geometri_a
> _uni_ón _de_ _las_ _seleccionadas_
>
> FLayer lActive =
> vista.getModel().getMapContext().getLayers().getActives()[0];
>
> VectorialAdapter adapter = (VectorialAdapter)
> ((SingleLayer) lActive).getSource();
>
> *try*{
>
> dataSource = adapter.getRecordset();
>
> } *catch*(ReadDriverException e) {
>
> // *TODO*Auto-generated catch block
>
> e.printStackTrace();
>
> }
>
> *if*(lActive *instanceof*FLyrVect){
>
> BitSet sel =
> ((FLyrVect)lActive).getSelectionSupport().getSelection();
>
> *for*(*int*i = sel.nextSetBit(0); i >= 0; i = sel.nextSetBit(i+1)) {
>
> *try*{
>
> ig =
> ((FLyrVect)lActive).getSource().getShape(i);
>
> Geometry geometriaJts1 = ig.toJTSGeometry();
>
> *if*(union == *null*){
>
> gTemp =geometriaJts1;
>
> }*else*{
>
> gTemp =
> EnhancedPrecisionOp./union/(geometriaJts1, union);
>
> }
>
> union = gTemp;
>
> } *catch*(ExpansionFileReadException e) {
>
> // *TODO*Auto-generated catch block
>
> e.printStackTrace();
>
> } *catch*(ReadDriverException e) {
>
> // *TODO*Auto-generated catch block
>
> e.printStackTrace();
>
> }
>
> }
>
> *if*(union==*null*){
>
> JOptionPane./showMessageDialog/(*null*, "union
> null");
>
> }
>
> IGeometry unionGvSig = FConverter./jts_to_igeometry/
> (union);
>
> /////
>
> FLayer[] selected = mapa.getLayers().getActives();
>
> FLayer lyrActive = selected[0];
>
> lyrActive.setActive(*false*);
>
> // _buscar_ el _indice_ _de_ _la_ _capa_
>
> *for*(*int*i = 0; i < mapa.getLayers().getLayersCount(); i++) {
>
> *if*(mapa.getLayers().getLayer(i).getName().toUpperCase().equals(sCapaDestino)){
>
> iIndiceCapa = i;
>
> }
>
> }
>
> //
>
> FLayer lyrMont =
> mapa.getLayers().getLayer(sCapaDestino);
>
> *try*{
>
> lyrMont.setActive(*true*);
>
> lyrMont.setEditing(*true*);
>
> } *catch*(StartEditionLayerException e1) {
>
> // *TODO*Auto-generated catch block
>
> e1.printStackTrace();
>
> }
>
> *try*{
>
> /writer/=(ShpWriter) LayerFactory./getWM/().getWriter("Shape Writer");
>
> /writer/.setFile(*new*File(fg.obtenerRutaProyecto() +"\\Shapes\\" +
> sCapaDestino2));
>
> /writer/.initialize(lyrMont);
>
> /writer/.preProcess();
>
> ReadableVectorial
> rv2=((FLyrVect)lyrMont).getSource();
>
> *for*(*int*i=0; i < rv2.getShapeCount(); i++)
>
> {
>
> IFeature feat = rv2.getFeature(i);
>
> IRowEdited editFeat =
> *new*DefaultRowEdited(feat, IRowEdited./STATUS_MODIFIED/, i);
>
> /writer/.process(editFeat);
>
> }
>
> //_Ahora_ hay _que_ _crear_ _la_ _nueva_ Feature
>
> IFeature xx =*null*;
>
> Value[] featureAttr= *null*;
>
> xx =
> FeatureFactory./createFeature/(featureAttr,unionGvSig);
>
> DefaultRowEdited edRow;
>
> iNumFeat = rv2.getShapeCount();
>
> //JOptionPane.showMessageDialog(null, iNumFeat);
>
> edRow =
> *new*DefaultRowEdited(xx,DefaultRowEdited./STATUS_ADDED/,
> (rv2.getShapeCount()+1));
>
> *if*(edRow == *null*){
>
> JOptionPane./showMessageDialog/(*null*,
> "edRow null");
>
> }
>
> /writer/.process(edRow);
>
> /writer/.postProcess();
>
> Este código funciona, porque veo en la nueva capa la geometrÃa (que en
> este caso viene de una unión de dos features de otro shape). Pero
> cuando con el punto de información pido la información de esta nueva
> geometrÃa no la reconoce.
>
> Sin embargo si edito la capa, no hago ningún cambio, y salvo la capa
> de nuevo, entonces es cuando vuelvo a pedir información de la nueva
> feature y ahora si me da la información.
>
> Alguien sabe a que se debe, o que me falta en el código. (Este código
> está basado en la versión 1.1.2).
>
> Un saludo
>
> *Domingo Baeza*
>
>
> _______________________________________________
> gvSIG_usuarios mailing list
> gvSIG_usuarios en listserv.gva.es
>
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección:
>
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
--
Vicente Caballero Navarro
Analista/Programador.
IVER TecnologÃa de la Información S.A.
C/ Lérida, 20
46005-Valencia
Tlf.+34963354983
www.iver.es
www.gvsig.com
Este mensaje y sus archivos son confidenciales. No está permitida su reproducción o distribución sin la autorización expresa de "IVER Tecnologías de la Información". Si usted no es el destinatario previsto, queda desautorizado cualquier uso, acceso o copia de este mensaje. Si ha recibido este mensaje por error, por favor bórrelo e infórmenos por esta misma vía.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_usuarios/attachments/20101111/8b88f5ee/attachment.htm
Más información sobre la lista de distribución gvSIG_usuarios