[Gvsig_usuarios] Añadis capa Postgis con script

Francisco Puga fpuga en icarto.es
Lun Nov 7 11:27:28 CET 2016


Yo creo que lo que sería super interesante es que fuera más sencillo
obtener el store. Al menos en Java.

Ahora te hace falta al menos saber el nombre del proveedor que no siempre
es fácil. Por ejemplo para shapes es "Shape", para gpx es
"OGRDataStoreProvider". Aún te pasas un ratillo viendo el código para ver
cual es el nombre correcto. Los parámetros que le pasas al store tampoco
son sencillos del todo. En el shape el "crs" es un String pero en el de OGR
"crs" es un IProyecction.

Algo del tipo

DataManager manager = DALLocator.getDataManager();
manager.openStore(uri, layerName)

Sería lo ideal, donde uri podría ser:

"postgresql://user:secret@localhost:port"
"file:///tmp/myfile.shp"
"file:///tmp/myfile.gpx"

y layername:

"my_schema.my_layer"
"myfile"
"waypoints"

estaría muy chulo. Logicamente hay algunos puntos de fricción, por ejemplo
como le paso el crs o en el caso del gpx como se que los posibles layers se
llaman "waypoints", "routes",..

Y por curiosidad para obtener el MapContextManager se debería hacer:

ApplicationManager application = ApplicationLocator.getManager();
application.getMapContextManager()

o MapContextLocator.getMapContextManager()

El 7 de noviembre de 2016, 10:37, Javier Galán <javiergalans en gmail.com>
escribió:

> Muchas gracias a los dos.
>
> El 5 de noviembre de 2016, 9:42, Joaquin Jose del Cerro Murciano <
> jjdelcerro en gvsig.org> escribió:
>
>>
>>
>> El 4 de noviembre de 2016, 16:16, Óscar Martínez <omartinez en gvsig.com>
>> escribió:
>>
>>> Buenas,
>>>
>>> El camino es correcto, te falta un paso. Con el openStore abres un
>>> dataStore, para crear una capa desde un data store necesitas añadir las
>>> siguientes líneas (y el import al princpio):
>>>
>>>     layer = MapContextLocator.getMapContextManager().createLayer(
>>>         "pglayer",
>>>         os.getStore()
>>>       )
>>>
>>>     currentView().addLayer(layer)
>>>
>>
>> UUhhmmm...
>> podria ser interesante que el addLayer admitiese tambien un store y
>> crease la capa automaticamente con el...para la gran mayoria de los casos
>> seria suficiente...
>> si no presenta complicaciones (que no parece) lo añado para la proxima
>> version.
>>
>> Un saludo
>> Joaquin
>>
>>
>>> http://downloads.gvsig.org/download/gvsig-desktop-testing/di
>>> sts/2.3.0/javadocs/html/org/gvsig/fmap/mapcontext/MapContext
>>> Manager.html#createLayer(java.lang.String,%20org.gvsig.fmap.
>>> dal.DataStore)
>>>
>>> El script completo podría quedar algo así:
>>>
>>> # encoding: utf-8
>>>
>>> import gvsig
>>> from org.gvsig.fmap.mapcontext import MapContextLocator
>>> from gvsig.utils import openStore
>>>
>>> def main(*args):
>>>
>>>     os = openStore('PostgreSQL',port='5432',
>>>                                 JDBCDriverClass='org.postgresql.Driver',
>>>                                 UseSSL='false',
>>>                                 Schema='public',
>>>                                 Catalog='',
>>>                                 URL='jdbc:postgresql://localhost/ej1',
>>>                                 BaseOrder='',
>>>                                 Workingarea=None,
>>>                                 CRS='EPSG:23030',
>>>                                 PKFields='gid',
>>>                                 BaseFilter='',
>>>                                 DefaultGeometryField='geom',
>>>                                 Fields=None,
>>>                                 Table='ciudades',
>>>                                 SQL='',
>>>                                 password='password',
>>>                                 dbname='ej1',
>>>                                 host='localhost',
>>>                                 dbuser='postgres',
>>>                                 ProviderName='PostgreSQL')
>>>
>>>     layer = MapContextLocator.getMapContextManager().createLayer(
>>>         "pglayer",
>>>         os.getStore()
>>>       )
>>>
>>>     gvsig.currentView().addLayer(layer)
>>>
>>> El 04/11/16 a las 14:08, Javier Galán escribió:
>>>
>>> Hola a todos:
>>>
>>> Estoy empezando a hacer algún script con la nueva versión de gvsig  2.3.1
>>>
>>> He logrado realizar la conexión mediante
>>>
>>> openStore()
>>> Lo hace correctamente por que le pregunto por las features y me devuelve sus
>>> propiedades.
>>>
>>> La cosa es que quiero insertarlo en una vista
>>>
>>>
>>> *Vista = currentProject().getView("Vista1") *
>>> *os = openStore('PostgreSQL',port='5432'...)*
>>> *Vista.addLayer(os)*
>>>
>>> Me dice
>>>
>>> Error TypeError: addLayer(): 1st arg can't be coerced to
>>> org.gvsig.fmap.mapcontext.layers.FLayer
>>>
>>> Seguramente estoy accediendo por el camino incorrecto. Alguien puede
>>>  echarme una mano?
>>>
>>> Gracias
>>> Javier
>>>
>>>
>>> _______________________________________________
>>> gvSIG_usuarios mailing listgvSIG_usuarios 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_usuarios
>>>
>>>
>>>
>>> _______________________________________________
>>> gvSIG_usuarios mailing list
>>> gvSIG_usuarios 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_usuarios
>>>
>>>
>>
>>
>> --
>> --------------------------------------
>> 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_usuarios mailing list
>> gvSIG_usuarios 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_usuarios
>>
>>
>
> _______________________________________________
> gvSIG_usuarios mailing list
> gvSIG_usuarios 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_usuarios
>
>


-- 
Francisco Puga
iCarto | Innovación, Cooperación, Cartografía y Territorio S.L.
http://www.icarto.es/

c/ Rafael Alberti nº 13 – 1º D
15008 A Coruña
Galicia (Spain)
+34 881927808

Este correo electrónico contiene información estrictamente confidencial y
es de uso exclusivo del destinatario, quedando prohibida a cualquier otra
persona su revelación, copia, distribución, o el ejercicio de cualquier
acción relativa a su contenido. Si ha recibido este mensaje por error, por
favor conteste a su remitente mediante correo electrónico y proceda a
borrarlo de su sistema.

Sus datos personales serán tratados de forma confidencial y no serán
cedidos a terceros ajenos a ICARTO. En cualquier caso, podrá ejercer los
derecho de oposición, acceso, rectificación y cancelación de acuerdo con lo
establecido en la Ley Orgánica 15/99, de 13 de diciembre, de Protección de
Datos de Carácter Personal dirigiéndose a Innovación, Cooperación,
Cartografía e Territorio, SL. (ICARTO) en la dirección postal a C/ Rafael
Alberti, nº 13, 1ºD, 15.008 – (A Coruña).
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_usuarios/attachments/20161107/c63f7921/attachment.html>


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