[Gvsig_desarrolladores] c髆o recorrer los elementos de un mapa automaticamente

Ana Calle nico200307 en gmail.com
Jue Oct 15 07:52:06 CEST 2015


Muchas gracias Joaqu铆n, claro que me servir谩, a mi y a mucha m谩s gente.
Esos peque帽os scripts de c贸digo que casi siempre se aportan como ejemplos
(unido a esas buenas explicaciones a las que nos tienes acostumbrados),
ayudan mucho para continuar el trabajo.

Saludos
ana

El 14 de octubre de 2015, 21:20, Joaquin Jose del Cerro Murciano <
jjdelcerro en gvsig.org> escribi贸:

>
>
> El 14 de octubre de 2015, 9:03, Llu铆s Marqu茅s <lmarques en disid.com>
> escribi贸:
>
>> Hola Ana,
>>
>> si no me equivoco, efectivamente te faltan las siguientes dependencias en
>> el pom:
>>
>> <dependency>
>>     <groupId>org.gvsig</groupId>
>>     <artifactId>org.gvsig.app.document.table.app.mainplugin</artifactId>
>> </dependency>
>> <dependency>
>>      <groupId>org.gvsig</groupId>
>>
>> <artifactId>org.gvsig.app.document.layout2.app.mainplugin</artifactId>
>>  </dependency>
>>
>> Adem谩s de a帽adir esta dos dependencias, tendr谩s que a帽adir el siguiente
>> manejo de dependencia en el pom de tu proyecto padre:
>>
>> <dependencyManagement>
>>     <dependencies>
>>         <dependency>
>>              <groupId>org.gvsig</groupId>
>>
>> <artifactId>org.gvsig.app.document.layout2.app.mainplugin</artifactId>
>>               <version>2.0.57</version>
>>         </dependency>
>>     </dependencies>
>> </dependencyManagement>
>>
>> Solo es necesario a帽adir el manejo de *layout2* porque en el *pom* de
>> *org.gvsig.desktop* ya tiene indicado el manejo para la dependencia del
>> documento tabla.
>>
>> Por otro lado, como las dependencias que estas a帽adiendo son a otros
>> plugins de gvSIG, es necesario indicar en el config.xml  que depende de
>> estos dos plugins por dos motivos: el primero para que en tiempo de
>> ejecuci贸n sepa donde se encuentran las clases y para que gvSIG cargue
>> primero los plugins de los que dependes antes de tu plugin. Quedar铆a algo
>> as铆:
>>
>> <plugin-config>
>>     <depends plugin-name="org.gvsig.app.mainplugin" />
>>     <depends plugin-name="org.gvsig.app.document.table.app.mainplugin" />
>>     <depends plugin-name="org.gvsig.app.document.layout2.app.mainplugin"
>> />
>>
>> [...]
>>
>> Si alguien ven algo incorrecto que me corriga. Un saludo, Llu铆s.
>>
>>
>>
>>
> Hola Ana,
> un correccion a lo que comenta Luis, y algunas recomendaciones.
>
> Primero la correccion.
>
> La versiom del layout no creo que sea esa la que te interese, esa es
> la version del layout del build 2.3.0-2403, y supongo que tu querras
> la de la 2.2.0 final o la de la 2.1.0 final.
>
> - Para gvSIG 2.2.0-2313 es la 2.0.52 del layout.
> - Para gvSIG 2.1.0-2269 es la 2.0.42 del layout.
>
> Como aun no hay version final de la 2.3.0 no te aconsejo que trabajes
> con versiones del layout superiores a la 2.0.52.
>
> Para saber que version tienes que usar del layout, tienes que determinar
> contra que version de gvSIG vas a trabajar y mirar en la instalacion de
> esa version en:
>
>
> gvSIG/extensiones/org.gvsig.app.document.layout2.app.mainplugin/org.gvsig.app.document.layout2.app.mainplugin-*.jar
>
> La version de ese jar te da la version del layout para ese gvSIG.
>
> Y ahora las recomendaciones.
>
> Son dos...
>
> - Relacionadas con la inclusion de las dependencias
>   en el dependencyManagement
> - Relacionadas con el scope de las dependencias.
>
> Es correcto usar la definicion de dependencias en el dependencyManagenet
> que te ha indicado Lluis, pero la recomendacion es que para a帽adir una
> dependencia al
> dependencyManagenet le pongas algo como:
>
> ...
>   <properties>
> ...
>
> <org.gvsig.app.document.layout2.app.version>2.0.55</org.gvsig.app.document.layout2.app.version>
> ...
>   </properties>
>
> ...
>
>   <dependency>
>       <groupId>org.gvsig</groupId>
>       <artifactId>org.gvsig.app.document.layout2.app</artifactId>
>       <version>${org.gvsig.app.document.layout2.app.version}</version>
>       <type>pom</type>
>       <scope>import</scope>
>   </dependency>
> ...
>
> Que significa eso:
> - En lugar de incluir una dependencia con un subproyecto del proyecto
>   org.gvsig.app.document.layout2.app, le diremos que importe las
>   dependencias que hay declaradas en el proyecto raiz del layout.
>   Eso lo hacemos con los tags type y scope.
>   Esto minimiza los errores al especificar la version cuando tenemos
>   que declarar mas de una dependencia de un mismo proyecto.
>   Salvo error, todos los proyectos de gvSIG indican en el
> dependencyManagement
>   del proyecto raiz las versiones de los artifactos que generan sus
>   subproyectos y las de las librerias que pueden ser necesarias para
>   linkar con ellos.
>   Es aconsojable que en tus proyectos relacionados con gvSIG sigas esta
>   practica para facilitar el uso desde otros proyectos.
>
> - Desde gvSIG aconsejamos que para indicar una version de un proyecto
>   de gvSIG declaremos el numero de version en una propiedad en el pom.
>   Esto facilita actualizar las versiones a la ultima usando
>     mvn update-properties
>
>
> En cuanto a la declaracion del scope...
>
> En el pom del plugin, que es donde deben ir las dependencias con los
> otros plugins, es recomendable especificar el scope de esa dependencia.
> Si no se especifica maven asume que es una dependencia de compilacion.
> Esto parece no tener muchas repercusiones salvo que en algun momento
> quieras obtener un informe de dependencias de tu proyecto o esteis
> trabajando mas de un desarrollador en el y de repente necesites saber
> si el proyecto precisa de una libreria en concreto. Te encontraras que no
> sabras nunca si es una dependencia de runtime y alguien se olvido
> de poner el scope, o es de compilacion. Asi que como cuesta
> muy poquito poner que tipo de depenencia es, aconsejo que cuando se
> a帽ada al pom se tenga la costumbre de indicarlo.
>
> Los scopes mas comunes son:
>     <scope>compile</scope>
>     <scope>runtime</scope>
>
>
> Asi la declaracion con las dependencias con el plugin de tablas y layout
> serian:
>
> <dependency>
>     <groupId>org.gvsig</groupId>
>     <artifactId>org.gvsig.app.document.table.app.mainplugin</artifactId>
>     <scope>compile</scope>
> </dependency>
> <dependency>
>      <groupId>org.gvsig</groupId>
>      <artifactId>org.gvsig.app.document.layout2.app.mainplugin</artifactId>
>     <scope>compile</scope>
>  </dependency>
>
> Bueno, pues solo era matizar algunas cosillas.
>
> Espero que te sirba.
>
> Un saludo
> Joaquin
>
>
>
>
>>
>> El 14/10/15 a las 08:10, Ana Calle escribi贸:
>>
>> Hola Joaquin,
>> he estado intentando hacer funcionar el c贸digo que me pasaste, a mi
>> extensi贸n en java, pero (perdona mi ignorancia) no he sido capaz.
>>
>> Me da error directamente al intentar hacer los import correspondientes.
>>
>> S铆 que me deja hacer:
>> import org.gvsig.app.project.documents.view.ViewManager;
>>
>> Pero me da error de que no puede resolver:
>> import org.gvsig.app.project.documents.layout.LayoutManager;
>> import org.gvsig.app.project.documents.table.TableManager;
>> Supongo que me falta alguna referencia en el pom.xml o algo as铆, pero no
>> consigo verlo
>> A ver si me puedes echar una mano...
>> Como siempre muchas gracias por tu tiempo.
>>
>> Saludos
>>
>> El 13 de octubre de 2015, 14:22, Joaquin Jose del Cerro Murciano <
>> <jjdelcerro en gvsig.org>jjdelcerro en gvsig.org> escribi贸:
>>
>>>
>>>
>>> El 13 de octubre de 2015, 12:26, Ana Calle < <nico200307 en gmail.com>
>>> nico200307 en gmail.com> escribi贸:
>>>
>>>> Buenos d铆as,
>>>> en el proceso de migraci贸n del c贸digo de una extensi贸n realizada en
>>>> gvSig 1.10, tenemos implementados una serie de planos con sus respectivos
>>>> cajetines.
>>>> De manera autom谩tica, el plano se rellenaba seg煤n las caracter铆sticas
>>>> de consulta correspondientes, es decir, en el cajet铆n se van sustituyendo
>>>> los textos gen茅ricos por los espec铆ficos de la consulta.
>>>> Ten铆amos implementado el c贸digo en el que obten铆a el layout de la
>>>> ventana del plano, y ah铆 se recorr铆an los elementos:
>>>>
>>>> --recorriendo los documentos lleg谩bamos a la ventana del plano
>>>> (vEntana):
>>>>
>>>> Layout l =(Layout)vEntana;
>>>> IFFrame[] fframes = l.getFFrames();
>>>> for (int i = 0; i < fframes.length; i++) {
>>>> if (fframes[i] instanceof FFrameView) {
>>>> ......
>>>> }else if (fframes[i] instanceof FFrameText){
>>>> ......
>>>> }
>>>> }
>>>> 驴como podr铆a obtener ese layout y los IFFrame[] con la nueva version
>>>> gvSig 2.2?
>>>>
>>>>
>>> Puedes o recorrer todos los documentos, puedes o no filtrar por tipo, o
>>> recuperar un documento layout en concreto por nombre. Una vez tengas el
>>> documento layout, accedes LayoutContext y a el ya le puedes peridr
>>> "getFFrames".
>>>
>>> Dejo pedacito de script (falta la iniciaciacion del acceso al layout
>>> desde scripting pero para usarlo de inspiracion en java es suficiente).
>>>
>>> Ojo, que el LayoutDocument, lo que devuelbe el getDocuments, no es la
>>> ventana del plano, si no el documento. No recuerdo cuando se separo, por un
>>> lado el interface grafico y por otro la logica del documento.
>>>
>>> Un saludo
>>> Joaquin
>>>
>>>
>>>
>>> from org.gvsig.app import ApplicationLocator
>>> from org.gvsig.app.project.documents.layout import LayoutManager
>>>
>>> def main(*args):
>>>   # Recuperamos el proyecto
>>>   project = ApplicationLocator.getManager().getCurrentProject()
>>>
>>>   # Opcion 1
>>>   # Recorremos los layouts que hay en el proyecto
>>>   layouts = project.getDocuments(LayoutManager.TYPENAME)
>>>   for layout in layouts:
>>>     print layout.__class__.__name__, layout.getName()
>>>     contextLayout = layout.getLayoutContext()
>>>     for elemento in  contextLayout.getAllFFrames():
>>>       print elemento.getName()
>>>
>>>   print "----------------------------"
>>>
>>>   # Opcion 2
>>>   # Recuperamos un layout por nombre
>>>   layout = project.getDocument("Plantilla", LayoutManager.TYPENAME)
>>>   print layout.__class__.__name__, layout.getName()
>>>   contextLayout = layout.getLayoutContext()
>>>   for elemento in  contextLayout.getAllFFrames():
>>>     print elemento.getName()
>>>
>>>   print "----------------------------"
>>>
>>>   # Como obtener la venta del layout
>>>   layoutManager =
>>> ApplicationLocator.getProjectManager().getDocumentManager(LayoutManager.TYPENAME)
>>>
>>>   layout = project.getDocument("Plantilla", LayoutManager.TYPENAME)
>>>   layoutPanel = layoutManager.getMainWindow(layout)
>>>   print layoutPanel.__class__.__name__,
>>> layoutPanel.getDocument().getName()
>>>
>>> Esto con el proyecto que tengo cargado saca:
>>>
>>> Running script test_layout2.
>>> DefaultLayoutDocument Plantilla
>>> FFrameGraphics
>>> FFrameGraphics
>>> FFrameGraphics
>>> FFrameGraphics
>>> FFrameText
>>> FFrameText
>>> FFrameText
>>> FFrameView
>>> FFrameScaleBar
>>> FFrameLegend
>>> FFrameText
>>> FFrameOverView
>>> FFrameGraphics
>>> FFrameNorth
>>> FFramePicture
>>> ----------------------------
>>> DefaultLayoutDocument Plantilla
>>> FFrameGraphics
>>> FFrameGraphics
>>> FFrameGraphics
>>> FFrameGraphics
>>> FFrameText
>>> FFrameText
>>> FFrameText
>>> FFrameView
>>> FFrameScaleBar
>>> FFrameLegend
>>> FFrameText
>>> FFrameOverView
>>> FFrameGraphics
>>> FFrameNorth
>>> FFramePicture
>>> ----------------------------
>>> LayoutPanelImpl Plantilla
>>> Script test_layout2 terminated.
>>>
>>>
>>>
>>>> Muchas gracias de antemano,
>>>> un saludo
>>>> Ana
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> gvSIG_desarrolladores mailing list
>>>> gvSIG_desarrolladores 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_desarrolladores>
>>>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>>>>
>>>>
>>>
>>>
>>> --
>>> --------------------------------------
>>> Joaquin Jose del Cerro Murciano
>>> Development and software arquitecture manager at gvSIG Team
>>> jjdelcerro en gvsig.com
>>> jjdelcerro en gvsig.org
>>> gvSIG Association
>>> www.gvsig.com
>>> www.gvsig.org
>>>
>>> _______________________________________________
>>> gvSIG_desarrolladores mailing list
>>> gvSIG_desarrolladores 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_desarrolladores
>>>
>>>
>>
>>
>> _______________________________________________
>> gvSIG_desarrolladores mailing listgvSIG_desarrolladores 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_desarrolladores
>>
>>
>> --
>>
>> Llu铆s Marqu茅s Castell贸 / Ingeniero software
>>
>> [image: DISID] <lmarques en disid.com> [image: DISID]
>> <http://twitter.com/llumarca>
>> [image: DISID] <http://www.disid.com>
>>
>> DISID Corporation S.L. Tfno: 34 963 516 309 / Fax: 96 119 81 10
>> C/ San Vicente 84, 5 A 46002 Valencia - Espa帽a
>> http://www.disid.com
>>
>> [image: Facebook] <http://www.facebook.com/DISIDCorp> [image: Twitter]
>> <http://twitter.com/disid_corp> [image: Linkedin]
>> <http://www.linkedin.com/company/disid> [image: Github]
>> <http://github.com/disid/>
>> *Proveedor de soluciones software*
>>
>> Confidencialidad: Esta comunicaci贸n contiene informaci贸n que puede ser
>> confidencial y privilegiada. Es para uso exclusivo del destinatario
>> indicado. Si no es Vd. el destinatario, por favor tome nota de que
>> cualquier distribuci贸n, copia o uso de esta comunicaci贸n o informaci贸n est谩
>> estrictamente prohibido. Si ha recibido este mensaje por error, por favor
>> av铆senos por e-mail a info en disid.com y despu茅s destruya el mensaje y
>> cualquier copia de 茅l. Las opiniones expresadas en el mensaje pueden ser
>> personales y no necesariamente opiniones de DISID Corporation, S.L.
>>
>> Virus y Seguridad: Aunque hemos tomado las medidas para asegurarnos que
>> este correo electr贸nico y sus ficheros adjuntos est谩n libres de virus, le
>> recomendamos que a efectos de mantener buenas pr谩cticas de seguridad, el
>> receptor debe asegurarse que este correo y sus ficheros adjuntos est谩n
>> libres de virus.
>>
>>
>> _______________________________________________
>> gvSIG_desarrolladores mailing list
>> gvSIG_desarrolladores 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_desarrolladores
>>
>>
>
>
> --
> --------------------------------------
> Joaquin Jose del Cerro Murciano
> Development and software arquitecture manager at gvSIG Team
> jjdelcerro en gvsig.com
> jjdelcerro en gvsig.org
> gvSIG Association
> www.gvsig.com
> www.gvsig.org
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores 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_desarrolladores
>
>
------------ pr髕ima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20151015/7c90e3b2/attachment.htm 
------------ pr髕ima parte ------------
Se ha borrado un mensaje que no est谩 en formato texto plano...
Nombre     : bdeciebd.png
Tipo       : image/png
Tama帽o     : 603 bytes
Descripci贸n: no disponible
Url        : http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20151015/7c90e3b2/attachment.png 
------------ pr髕ima parte ------------
Se ha borrado un mensaje que no est谩 en formato texto plano...
Nombre     : ecbggaai.png
Tipo       : image/png
Tama帽o     : 871 bytes
Descripci贸n: no disponible
Url        : http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20151015/7c90e3b2/attachment-0001.png 
------------ pr髕ima parte ------------
Se ha borrado un mensaje que no est谩 en formato texto plano...
Nombre     : ajhjhdag.png
Tipo       : image/png
Tama帽o     : 909 bytes
Descripci贸n: no disponible
Url        : http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20151015/7c90e3b2/attachment-0002.png 
------------ pr髕ima parte ------------
Se ha borrado un mensaje que no est谩 en formato texto plano...
Nombre     : hahcfbda.png
Tipo       : image/png
Tama帽o     : 737 bytes
Descripci贸n: no disponible
Url        : http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20151015/7c90e3b2/attachment-0003.png 
------------ pr髕ima parte ------------
Se ha borrado un mensaje que no est谩 en formato texto plano...
Nombre     : jbbagihd.png
Tipo       : image/png
Tama帽o     : 3310 bytes
Descripci贸n: no disponible
Url        : http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20151015/7c90e3b2/attachment-0004.png 
------------ pr髕ima parte ------------
Se ha borrado un mensaje que no est谩 en formato texto plano...
Nombre     : jdadeejc.png
Tipo       : image/png
Tama帽o     : 243 bytes
Descripci贸n: no disponible
Url        : http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20151015/7c90e3b2/attachment-0005.png 
------------ pr髕ima parte ------------
Se ha borrado un mensaje que no est谩 en formato texto plano...
Nombre     : befdbihe.png
Tipo       : image/png
Tama帽o     : 177 bytes
Descripci贸n: no disponible
Url        : http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20151015/7c90e3b2/attachment-0006.png 


M醩 informaci髇 sobre la lista de distribuci髇 gvSIG_desarrolladores