[Gvsig_desarrolladores] anadir dbf en proyecto

Joaquin Jose del Cerro Murciano jjdelcerro en gvsig.org
Mar Dic 30 12:39:22 CET 2014


El 29 de diciembre de 2014, 23:13, Piotr Pach贸艂 <piotrpachol en gmail.com>
escribi贸:

>  Hola Joaquin,
> Muchisimas gracias. El script funciona muy bien  y es lo que necesito.
> Pero no entiendo como funciona. Estoy acabando el curso de scripting
> y durante el curso tenemos posibilidad de  leer la siguiente
> documentaci贸n:
>
> http://gvsig.gva.es/download/web/projects/gvsig-desktop/docs/user/gvsig-desktop-2-0-scripting.html
> Por ejemplo en tu script utilizas:
>
> project = currentProject()
> table = project().createDocument(TableManager.TYPENAME)
>
> En reference guide hay solamente 3 metodos de class Project describidos [
> 'getProjectionCode', 'getTable', 'getView'] - "print dir(project)"
> No hay mas y no se donde puedo encontrar informacion que hacen y como
> funcionan otros metodos - por ejemplo si ejecuto "print dir(project())" -
> tengo 90 nuevas metodos.
>
> Estoy tambien un poco perdido con la libreria que utilizas
> "org.gvsig.app.project.documents.table"
>
>
Hola Piotr,
como te decia antes, falta mucho por documentar.

En general desde un script de python en gvSIG tienes acceso a todas las
librerias java de gvSIG. Por ejemplo, cuando hacemos:


from org.gvsig.app.project.documents.table import TableManager
>

Lo que estamos haciendo es cargar en el espacio de nombres de nuestro
script la clase java TableManager, y luego y podemos ya usarla.

Un problema que tenemos en la implementacion de scripting actual de gvSIG
es que por un lado tenemos los objetos python, y por otro los java, y
aunque podemos usar los dos, no podemos mezclarlos. Si llamamos a un
metodo/funcion java, deberemos pasarle objetos java y no python (espero
tener algo de tiempo en algun momento para solucionar esto). Asi por
ejemplo si hacemos:

project = currentProject()
>

"project" hace referencia a un objeto python. Podemos usarlo, pero si
necesitamos pasarlo a un metodo/funcion que requiere el proyecto java, no
podemos pasarselo sin mas. Para rodear este problema, hicimos que los
objetos python de gvSIG, si se les "invoca" (se les pone parentesis detras)
nos devuelban el objeto java al que referecian. Asi por ejemplo, cuando
hacemos:

project()
>

lo que estamos haciendo es obtenr/acceder al objeto "project" de java.

Volviendo a las dos lineas que comentas...

project = currentProject()
> table = project().createDocument(TableManager.TYPENAME)
>

La segunda linea lo que hace es obtener el objeto java y invocar a su
metodo createDocument.

La documentacion en la parte de java tambien es escasa, pero puedes
encontrar algo de ella en:


   -
   http://devel.gvsig.org/sites/org.gvsig.andami/2.0.18/org.gvsig.desktop.framework/org.gvsig.andami/apidocs/index.html
   -
   http://devel.gvsig.org/sites/org.gvsig.app.document.table.app.mainplugin/2.0.18/org.gvsig.desktop.plugin/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/apidocs/index.html
   -
   http://devel.gvsig.org/sites/org.gvsig.app.mainplugin/2.0.18/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/apidocs/index.html
   -
   http://devel.gvsig.org/sites/org.gvsig.fmap.dal.api/2.0.18/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/apidocs/index.html
   -
   http://devel.gvsig.org/sites/org.gvsig.fmap.geometry.api/2.0.18/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.api/apidocs/index.html
   -
   http://devel.gvsig.org/sites/org.gvsig.fmap.mapcontext.api/2.0.18/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/apidocs/index.html

Por ejemplo, en:

http://devel.gvsig.org/sites/org.gvsig.app.mainplugin/2.0.18/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/apidocs/index.html
>

Puedes consultar los metodos del objeto project de java.

No es que este muy documentado, pero por lo menos puedes ver los parametros
que recibe cada metodo.
Ademas estan algo desactualizada esta documentacion, pero en general creo
que pueden servir. Cuando tenga un rato intentare actualizarlos (ya voy
necesitando demasiados ratos ;) ).

No te desanimes... gvSIG es muy grande. Si necesitas ayuda para hacer
alguna cosa comentala, y  intentaremos ayudarte. Y si algo no se entiende
pero lo puedes usar, pues no te preocupes.

Un saludo
Joaquin







> Saludos,
> Piotr
>
>
> W dniu 2014-12-29 o 11:33, Joaquin Jose del Cerro Murciano pisze:
>
>
>
> El 19 de diciembre de 2014, 1:19, Piotr Pach贸艂 <piotrpachol en gmail.com>
> escribi贸:
>
>> Hola,
>> He creado  en el script un fichero dbf (con funccion createDBF) y quiero
>> anadir este dbf  (por medio de script) en proyecto.
>> Es posible ?
>>
>>
>  Hola  Piotr,
>  poderse se puede hacer. Basicamente desde script se puede hacer
> cualquier cosa que pudieses hacer desde java.
>  Para algunas cosas se han creado funciones python para tratar de
> facilitar las cosas, pero por desgracia gvSIG es muy grande y han quedado
> muchas cosas por hacer.
>  Te dejo aqui un pedazo de script que hace lo que quieres,
>
>
>> from gvsig import *
>>
>> from org.gvsig.app.project.documents.table import TableManager
>>
>> def loadTable(format, **parameters):
>>
>     try:
>>         application = ApplicationLocator.getManager()
>>         datamanager =  application.getDataManager()
>>
>>         # Loding the data store
>>         store_parameters = datamanager.createStoreParameters(format)
>>         copyToDynObject(parameters, store_parameters)
>>         store = datamanager.openStore(format, store_parameters)
>>
>>         # Creating a Table document and initialize with the data store
>>         project = currentProject()
>>         table = project().createDocument(TableManager.TYPENAME)
>>         table.setStore(store)
>>         table.setName(store.getName())
>>
>>         # Add the Table document to the project
>>         project().addDocument(table)
>>
>>     except Throwable, ex:
>>         raise RuntimeException("Can't load table, "+ str(ex))
>>
>>     return table
>>
>> def loadDBF(dbffile):
>>   table = loadTable(format="DBF",DbfFile=dbffile)
>>   return table
>>
>> def main(*args):
>>   # Get the path to the dbf to load,
>>   # getResource search the file next to the script .
>>   f = script.getResource("puntos1.dbf")
>>   loadDBF(f)
>>
>>
>
>
>  Si tienes dudas pregunta, intentare contestar mas rapido la proxima vez
> ;)
>  Un saludo
>  Joaquin
>
>
>
>
>  Por analogia como se crea el fichero shp (con funccion createShape) y
>> anade en proyecto (con funccion addLayer ).
>> Saludos,
>> Piotr
>> _______________________________________________
>> 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
>
>


-- 
--------------------------------------
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
------------ pr髕ima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20141230/85be92fd/attachment.htm 


M醩 informaci髇 sobre la lista de distribuci髇 gvSIG_desarrolladores