<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">El 15 de febrero de 2017, 18:38, Alex Irmel Oviedo Solis <span dir="ltr">&lt;<a target="_blank" href="mailto:alleinerwolf@gmail.com">alleinerwolf@gmail.com</a>&gt;</span> escribió:<br><blockquote style="margin-top:0px;margin-bottom:0px" class="gmail_quote"><div dir="ltr"><div><div>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.<br><br></div>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.<br><br></div></div></blockquote><div><br>Hola Alex,<br>un par de cosas...<br><br>El API que veas que existe para trabajar con un shape es<br>el mismo que para trabajar contra una BBDD con la excepcion de los parametros necesarios<br>para crear el store. Esto es cierto en general, y sobre todo en el API java, salvo <br>que en la parte de scripting se han creado algunos metodos de utilidad que trabajan <br>especificamente con shapes.<br><br>Te pego aqui un pequeño script que abre una fuente de datos de postgresql y<br>la carga en una capa de la vista corriente.<br><br>#--&gt;&lt;----------&gt;&lt;----------&gt;&lt;---------<br># encoding: utf-8<br><br>import gvsig<br>from org.gvsig.app import ApplicationLocator<br><br>def main(*args):<br>  application = ApplicationLocator.getManager()<br>  mapContextManager = application.getMapContextManager()<br>        <br>  store = gvsig.openStore(<br>    &quot;PostgreSQL&quot;,<br>    dbname=&quot;mydb&quot;,<br>    host=&quot;localhost&quot;,<br>    schema=&quot;public&quot;,<br>    table=&quot;country&quot;,<br>    dbuser=&quot;postgres&quot;,<br>    password=&quot;postgres&quot;,<br>    CRS=&quot;EPSG:4326&quot;,<br>    PKFields=&quot;gid&quot;,<br>    defaultGeometryField=&quot;geom&quot;<br>  )<br>  # Ojo con este bucle, es muy peligroso, ya que puede<br>  # dejar bloqueado gvSIG hasta que termine de sacar por la<br>  # consola todos los registros. La salida por la consola es<br>  # muy lenta.<br>  for feature in store:<br>    print feature<br><br>  layer = mapContextManager.createLayer(&quot;country&quot;, store)<br><br>  store.dispose()<br><br>  gvsig.currentView().addLayer(layer)<br><br>#--&gt;&lt;----------&gt;&lt;----------&gt;&lt;---------<br><br>Este pequeño script creo que responde a la pregunta sobre como cargar<br>una capa vectorial a partir de una tabla de la BBDD.<br><br>Si precisas filtrar los datos de la capa puedes usar el metodo &quot;addBaseFilter&quot;<br>de la capa.<br><br>La otra cosa...<br>sobre si se puede crear una capa a partir de un resultset de jdbc me temo que no.<br>Es algo que todo el mundo que empieza ha hacer cosas con gvSIG intenta hacer, y<br>es una muy muy muy mala idea.<br><br>gvSIG para gestionar una capa precisa mas que un resulset. Cada vez que se hace un <br>pan o un zoom, se crea un resulset para recuperar los datos que se precisan, y esto no<br>lo podriamos hacer si la fuente de datos de la capa fuese un resulset.<br>Ni siquiera es aceptable que una capa sea una sentencia select en lugar de una<br>tabla. Es algo que inicialmente se puede hacer, pero luego las sentencias a usar<br>contra la BBDD se complican mucho cuando se tienen que añadir filtros espaciales sobre<br>esa select, y algunas cosas no funcionan del todo bien o los rendimientos bajan<br>mucho. Mi consejo es que uses DataStores basados en tablas y luego el metodo &quot;addBaseFilter&quot; <br>de la capa si precisas filtrar.<br><br>Si lo que necesitas es hacer selects que involucren varias tablas para cargarlos como<br>capas, crea vistas en la BBDD y luego ataca a estas desde gvSIG como si fuesen tablas.<br>Ya se, en general seran solo de lectura, pero para la mayoria de los casos suele ser <br>suficiente.<br><br>Otro consejo mas...<br>si quieres hacer cosas avanzadas desde scripting en gvSIG, usa el API de java <br>directamente siempre que sea posible. Ya se que esta menos documetado, pero tira<br>de los javadocs. En la documentacion de scripting <br><br><a href="http://downloads.gvsig.org/download/web/html/es/scripting_devel_guide/2.3/index.html">http://downloads.gvsig.org/download/web/html/es/scripting_devel_guide/2.3/index.html</a><br><br>Tienes los apartados:<br>2. Modelo de objetos simplificado<br>3. Modelo de clases simplificado<br><br>Donde tienes algunos diagramas de clases simplificados con enlaces a los javadocs<br>que te pueden ser muy utiles.<br><br>Tambien te recomiendo, a pesar de estar algo desactualizada, la documentacion sobre DAL:<br><br><a href="http://docs.gvsig.org/plone/projects/gvsig-desktop/docs/devel/org.gvsig.fmap.dal/2.0.0">http://docs.gvsig.org/plone/projects/gvsig-desktop/docs/devel/org.gvsig.fmap.dal/2.0.0</a><br><br>Un saludo<br>Joaquin<br><br> </div><blockquote style="margin-top:0px;margin-bottom:0px" class="gmail_quote"><div dir="ltr"><div></div>Espero su pronta respuesta, saludos cordiales.<br></div>
<br>______________________________<wbr>_________________<br>
gvSIG_desarrolladores mailing list<br>
<a href="mailto:gvSIG_desarrolladores@listserv.gva.es">gvSIG_desarrolladores@<wbr>listserv.gva.es</a><br>
Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección: <a target="_blank" rel="noreferrer" href="https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores">https://listserv.gva.es/cgi-<wbr>bin/mailman/listinfo/gvsig_<wbr>desarrolladores</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature">--------------------------------------<br>Joaquin Jose del Cerro Murciano<br>Development and software arquitecture manager at gvSIG Team<br><a target="_blank" href="mailto:jjdelcerro@gvsig.com">jjdelcerro@gvsig.com</a><br><a target="_blank" href="mailto:jjdelcerro@gvsig.org">jjdelcerro@gvsig.org</a><br>gvSIG Association<br><a target="_blank" href="http://www.gvsig.com">www.gvsig.com</a><br><a target="_blank" href="http://www.gvsig.org">www.gvsig.org</a></div>
</div></div>