4 votos

¿St_MakeValid no funciona?

Tengo una base de datos de polilíneas spatialite, intenté realizar la reparación de la geometría en QGIS usando python con el siguiente código:

from pyspatialite import dbapi2 as db

conn = db.connect(r'D:\db.sqlite')
cur = conn.cursor()

repairGeometry = "UPDATE the_table SET GEOMETRY = ST_MakeValid(GEOMETRY) WHERE ST_IsValid(GEOMETRY) = 0;"
rs = cur.execute(repairGeometry)

Estoy recibiendo este error:

rs = cur.execute(repairGeometry)
OperationalError: no such function: ST_MakeValid

2voto

Joe Puntos 16

El error significa que su programa está compilado con una versión de Spatialite que no tiene la función ST_MakeValid. La única forma de solucionarlo es recompilar con una versión adecuada. Tenga en cuenta que ST_MakeValid es una función de LWGEOM por lo que Spatialite debe ser compilado en consecuencia con liblwgeom. Tenga en cuenta también que liblwgeom utiliza la licencia GPL.

Si no puedes compilar tú mismo como solución puedes arreglar la base de datos con un spatialite-gui reciente que sí tenga ST_MakeValid.

0 votos

La versión que tengo es SQLite v3.7.17 Spatialite v4.1.1. ¿Pueden ayudarme a compilar la versión de Spatialite?

0 votos

El manual abreviado está en gaia-gis.it/gaia-sins/linux_how_to.html . Si puedo leer bien lwgeom está configurado por defecto si el usuario no lo apaga gaia-gis.it/fossil/libspatialite/artifact/

1 votos

Respuesta relacionada: gis.stackexchange.com/a/88418/46142

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