[Gvsig_desarrolladores] Crear layer a partir de consulta jdbc

Alex Irmel Oviedo Solis alleinerwolf en gmail.com
Jue Feb 16 15:11:23 CET 2017


Gracias Joaquin, todas las indicaciones que me diste me cayeron como anillo
al dedo.

El mié., 15 de feb. de 2017 a la(s) 18:10, Joaquin Jose del Cerro Murciano <
jjdelcerro en gvsig.org> escribió:

> El 15 de febrero de 2017, 18:38, Alex Irmel Oviedo Solis <
> alleinerwolf en gmail.com> escribió:
>
> Hola a todos, estoy viendo los ejemplos de scripting en python y no
> encuentro un ejemplo donde se cree una capa vectorial a partir de una
> consulta a una bd en postgresql.
>
> Otra pregunta que tengo es como haria para usar un resultset de jdbc para
> generar la capa con los poligonos, uno de los campos es geometry.
>
>
> Hola Alex,
> un par de cosas...
>
> El API que veas que existe para trabajar con un shape es
> el mismo que para trabajar contra una BBDD con la excepcion de los
> parametros necesarios
> para crear el store. Esto es cierto en general, y sobre todo en el API
> java, salvo
> que en la parte de scripting se han creado algunos metodos de utilidad que
> trabajan
> especificamente con shapes.
>
> Te pego aqui un pequeño script que abre una fuente de datos de postgresql y
> la carga en una capa de la vista corriente.
>
> #--><----------><----------><---------
> # encoding: utf-8
>
> import gvsig
> from org.gvsig.app import ApplicationLocator
>
> def main(*args):
>   application = ApplicationLocator.getManager()
>   mapContextManager = application.getMapContextManager()
>
>   store = gvsig.openStore(
>     "PostgreSQL",
>     dbname="mydb",
>     host="localhost",
>     schema="public",
>     table="country",
>     dbuser="postgres",
>     password="postgres",
>     CRS="EPSG:4326",
>     PKFields="gid",
>     defaultGeometryField="geom"
>   )
>   # Ojo con este bucle, es muy peligroso, ya que puede
>   # dejar bloqueado gvSIG hasta que termine de sacar por la
>   # consola todos los registros. La salida por la consola es
>   # muy lenta.
>   for feature in store:
>     print feature
>
>   layer = mapContextManager.createLayer("country", store)
>
>   store.dispose()
>
>   gvsig.currentView().addLayer(layer)
>
> #--><----------><----------><---------
>
> Este pequeño script creo que responde a la pregunta sobre como cargar
> una capa vectorial a partir de una tabla de la BBDD.
>
> Si precisas filtrar los datos de la capa puedes usar el metodo
> "addBaseFilter"
> de la capa.
>
> La otra cosa...
> sobre si se puede crear una capa a partir de un resultset de jdbc me temo
> que no.
> Es algo que todo el mundo que empieza ha hacer cosas con gvSIG intenta
> hacer, y
> es una muy muy muy mala idea.
>
> gvSIG para gestionar una capa precisa mas que un resulset. Cada vez que se
> hace un
> pan o un zoom, se crea un resulset para recuperar los datos que se
> precisan, y esto no
> lo podriamos hacer si la fuente de datos de la capa fuese un resulset.
> Ni siquiera es aceptable que una capa sea una sentencia select en lugar de
> una
> tabla. Es algo que inicialmente se puede hacer, pero luego las sentencias
> a usar
> contra la BBDD se complican mucho cuando se tienen que añadir filtros
> espaciales sobre
> esa select, y algunas cosas no funcionan del todo bien o los rendimientos
> bajan
> mucho. Mi consejo es que uses DataStores basados en tablas y luego el
> metodo "addBaseFilter"
> de la capa si precisas filtrar.
>
> Si lo que necesitas es hacer selects que involucren varias tablas para
> cargarlos como
> capas, crea vistas en la BBDD y luego ataca a estas desde gvSIG como si
> fuesen tablas.
> Ya se, en general seran solo de lectura, pero para la mayoria de los casos
> suele ser
> suficiente.
>
> Otro consejo mas...
> si quieres hacer cosas avanzadas desde scripting en gvSIG, usa el API de
> java
> directamente siempre que sea posible. Ya se que esta menos documetado,
> pero tira
> de los javadocs. En la documentacion de scripting
>
>
> http://downloads.gvsig.org/download/web/html/es/scripting_devel_guide/2.3/index.html
>
> Tienes los apartados:
> 2. Modelo de objetos simplificado
> 3. Modelo de clases simplificado
>
> Donde tienes algunos diagramas de clases simplificados con enlaces a los
> javadocs
> que te pueden ser muy utiles.
>
> Tambien te recomiendo, a pesar de estar algo desactualizada, la
> documentacion sobre DAL:
>
>
> http://docs.gvsig.org/plone/projects/gvsig-desktop/docs/devel/org.gvsig.fmap.dal/2.0.0
>
> Un saludo
> Joaquin
>
>
>
> Espero su pronta respuesta, saludos cordiales.
>
> _______________________________________________
> 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:
> https://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:
> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20170216/9612fc76/attachment.html>


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