Skip to content

Instantly share code, notes, and snippets.

@aborruso
Last active February 6, 2022 21:17
Show Gist options
  • Save aborruso/07e0094477246e5222cb624632cdd244 to your computer and use it in GitHub Desktop.
Save aborruso/07e0094477246e5222cb624632cdd244 to your computer and use it in GitHub Desktop.
Usare spatialite in Python

In ambiente Linux

Di base è necessario il modulo sqlite3 e avere installato spatialite.

Uno script python di esempio base:

# importa il modulo sqlite3
import sqlite3
# crea una connessione a un db sqlite esistente, che contiene al suo interno una tabella poligonale denominata "poly"
connection = sqlite3.connect('db_test.sqlite')
# abilita il caricamento di estensioni/librerire in sqlite
connection.enable_load_extension(True)
# carica l'estensione/libreria di spatialite
connection.load_extension('/usr/local/lib/mod_spatialite.so')
# crea un cursore per connetterti al db
cursor = connection.cursor()
# esegui una query sul db
cursor.execute('select st_area(poly.geom) from poly')
# raccogli in una variabile i risultati della query
area = cursor.fetchall()
# stampa i risultati
print(area)

Usare sqlite e spatialite insieme a pandas

# importa il modulo sqlite3
import sqlite3
# importa pandas
import pandas as pd
# crea una connessione a db sqlite esistente, che contiene al suo interno una tabella poligonale denominata "poly"
connection = sqlite3.connect('db_test.sqlite')
# abilita il caricamento di estensioni/librerire in sqlite
connection.enable_load_extension(True)
# carica l'estensione/libreria di spatialite
connection.load_extension('/usr/local/lib/mod_spatialite.so')
# crea un dataframe a partire da unq query
df = pd.read_sql_query('select st_area(poly.geom) from poly',connection)
# visualizza il dataframe
df

In output

   st_area(poly.geom)
0            0.001063
1            0.003181
2            0.002895
3            0.000255
4            0.003126
5            0.001673
6            0.001882
7            0.002387
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment