[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