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