Forum >> Programmazione Python >> Database >> Load di shp in Spatialite

Pagina: 1

Premetto che sono un principiante con python, detto questo vi spiego qual'è il mio problema e la cosa che vorrei realizzare.

Ho un database Spatialite(da quello che ho capito è un database SQLITE con un "estensione spaziale"), all'interno di questo database, tramite script, vorrei caricarci una serie di file in formato shapefile ed una volta caricati questi file poterci eseguire delle operazioni tramite query SQL.

Ho creato uno script che, se funzionasse, dovrebbe servire per fare un Load all'interno del db di questi file in formato shapefile.

Lo script è questo:

import sqlite3

conn=sqlite3.connect(r'C:\LAVORI\provaLoad\db.sqlite')

conn.enable_load_extension(True)

conn.execute("SELECT load_extension('mod_spatialite');") #Carico l'estensione spaziale

#carico gli shp

conn.execute("""SELECT ImportSHP('C:/LAVORI/provaLoad/areenoft','areenoft','CP1252',6707);""")

conn.commit()

conn.close()

RISULTATO:

OperationalError: no such function:ImportSHP


Considerate che questa "query speciale" se eseguita all'interno della gui del database funziona senza problemi. Non sono affezionato a questa procedura quindi si accettano tutti i consigli.




Grazie di tutto in anticipo


--- Ultima modifica di titino2 in data 2018-03-21 15:44:37 ---
OperationalError: no such function:ImportSHP
Non so nulla in merito all'argomento specifico, ma a quanto pare tenti di usare una funzione non presente.

Dove hai trovato l'esempio che stai seguendo?

Cya
Ciao Daniele,

grazie per la risposta.

Ho arginato il problema leggendo meglio la documentazione di spatialite che mi "suggerisce" di inserire una variabile di sistema "SPATIALITE_SECURITY=relaxed". Inserendo questa variabile ho risolto il mio problema.

Vi pongo un'uteriore domanda in quanto prima di inserire la variabile di sistema ho provato con la

os.putenv('SPATIALITE_SECURITY','relaxed') che però non mi funziona. Mi sapete dire come mai?




Grazie di tutto


Pagina: 1



Esegui il login per scrivere una risposta.