[Gvsig_usuarios] script de acceso a DB funciona en 2.1 pero no en 2.0

anacm en ctima.uma.es anacm en ctima.uma.es
Mar Sep 22 12:44:53 CEST 2015


Hola,

Perfecto, ya funciona :) Muchas gracias por la rapidez en la solución.

Saludos,
Ana+

On Tue, 22 Sep 2015 08:38:36 +0200, Óscar Martínez <omartinez en gvsig.com>
wrote:
> 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


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