El 15 de febrero de 2017, 18:38, Alex Irmel Oviedo Solis < alleinerw...@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@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 jjdelce...@gvsig.com jjdelce...@gvsig.org gvSIG Association www.gvsig.com www.gvsig.org
_______________________________________________ gvSIG_desarrolladores mailing list gvSIG_desarrolladores@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