[Gvsig_usuarios] script de acceso a DB funciona en 2.1 pero no en 2.0
Óscar Martínez
omartinez en gvsig.com
Mar Sep 22 08:38:36 CEST 2015
Buenas,
Esto es un bug muy recientemente encontrado, adjunto el post rápido que
publiqué en el curso, esta pendiente también de publicar en el blog de
gvsig.
Cualquier duda con esta parte nos preguntas de nuevo.
Un saludo y sentimos las molestias
---
(en el post está explicado dando por hecho que realizas un from geom
import *)
¡Importante! Bug solucionado:Error al crear capas con campo GEOMETRY
Últimamente estaba aparenciendo un bug a la hora de crear capas
utilizando la función createShape() desde Scripting. Venía desde las
últimas versiones de gvSIG.
Por fin hemos detectado este bug y encontrado la solución, os explico:
*El error provenía cuando creamos un esquema nuevo para una capa nueva*.
Por lo general lo hacíamos de dos formas, cogiendo el esquema de otra
tabla o creándolo desde cero. Sea cual sea el caso, la solución es similar.
Lo que hay que hacer es añadir un paso extra en nuestro script, y este
es, *definir el tipo de geometría que contendrá nuestra capa nueva en el
esquema*.
Por ejemplo, *antes* la forma de crear una esquema para una capa nueva
se realizaba así:
schema = createSchema(currentLayer.getSchema())
ó
schema = createSchema()
schema.append('GEOMETRY','GEOMETRY')
*Ahora, *lo que tenemos que hacer es añadir una línea a las líneas
anteriores, estableciendo qué tipo de geometría va a contener. Para ello
necesitamos usar otra función que nos ayudará a generar este parámetro,
la función es la siguiente:
*def getGeometryType(type, subtype):*
* geometryManager = GeometryLocator.getGeometryManager()*
* return geometryManager.getGeometryType(type,subtype)*
Nos devolverá un geometry-type, que define el tipo de geometría que
usaremos. Los parámetros de esta función son el tipo y subtipo de la
geometría.
Más adelante esta función formará parte de las librerías de gvSIG, por
ahora tendréis que añadirla a vuestors scripts.
Entonces, la forma correcta de crear un esquema válido sería la siguiente:
Esquema desde una capa ya existente:
schema = createSchema(layer.getSchema())
geometryType = getGeometryType(POLYGON,D2)
*schema.get("GEOMETRY").setGeometryType(geometryType)*
ó desde cero:
schema = createSchema()
schema.append('GEOMETRY', 'GEOMETRY')
geometryType = getGeometryType(POLYGON,D2)
*schema.get("GEOMETRY").setGeometryType(geometryType)*
Tener en cuenta que si usáis el esquema de una capa ya existente en la
que la geometría era de un tipo por ejemplo LINE, y la capa en la que
usaremos es de tipo POLYGOn, debemos de usar esta línea nueva para hacer
esa modificación en el esquema.
*En resumen, en el esquema tenemos que establecer que tipo de geometría
va a almacenar.*
Explico esto por encima de forma rápida porque lo considero importante
para la realización de vuestors scripts, voy a realizar los cambios
correspondientes en la documentación.
Cualquier duda que tengáis podéis preguntar por aquí o en las Listas de
gvSIG.
---
On 22/09/2015 7:42, anacm en ctima.uma.es wrote:
> Hola:
>
> He creado un script que accede a una base de datos Postgres y con la
> información obtenida crea una capa. El script funciona bien en la versión
> 2.1, pero en la versión 2.2 me da un error al crear la capa; he comprobado
> que los ficheros .shx y .shp sí se crean, pero vacíos. Adjunto el error y
> el script al mensaje
>
> ¿Esto es normal? Ambas versiones están instaladas en Xubuntu 14.04 64
> bits.
>
> Muchas gracias por vuestra ayuda. Saludos
> Ana+
>
>
> _______________________________________________
> 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:
>
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_usuarios/attachments/20150922/c3368159/attachment.htm
Más información sobre la lista de distribución gvSIG_usuarios