4 votos

¿Por qué AddGeometryColumn produce un error al utilizar la DLL libspatialite-2 con pysqlite2?

Lo que estoy tratando de lograr es crear una geometría de la columna de un punto base en la latitud y la longitud de cada fila de la tabla creada.

Dado el siguiente código:

#!/usr/local/bin/python
from pysqlite2 import dbapi2 as sqlite3

conn = sqlite3.connect('adde.sqlite')
conn.enable_load_extension(True)
conn.execute("SELECT load_extension('libspatialite-2.dll');")
conn.execute("SELECT InitSpatialMetadata();")
conn.enable_load_extension(False)
conn.execute("SELECT AddGeometryColumn('coords','geom_column', 4326, 'Point', 2);")
conn.execute("UPDATE coords SET geom_column = GEOMETRYFROMTEXT('POINT('||longitude||' '||latitude||')', 4326);")
conn.close()

Recibo el error:

AddGeometryColumn() error: "insert on table 'geometry_columns' violates constraint: 'spatial_ref_sys.srid'"

He sido capaz de crear la columna en la Spatialite GUI no hay problema, pero me gustaría hacer todo esto mediante programación con Python. He buscado por un tiempo y ahora voy un poco corto. Cualquier orientación en cuanto a por qué estoy recibiendo este error en particular, sería muy apreciado.

Estoy usando Python 2.6 y pysqlite2 en Windows 7 de 64 bits

2voto

Michael Puntos 11

Lo resolví insertando la definición del SRS requerido en la base de datos antes de agregar la columna de geometría:

conn.execute ("INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) VALUES (4326, 'epsg', 4326, 'WGS 84', '+ proj = longlat + ellps = WGS84 + datum = WGS84 + no es un parámetro) ) ")

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X