12345678910111213141516171819202122232425262728293031 |
- import sqlite3
- # Path to your SpatiaLite database
- db_path = "D:\\temp\\output.sqlite"
- # Connect to the SQLite database
- conn = sqlite3.connect(db_path)
- # Enable loading of extensions
- conn.enable_load_extension(True)
- # Load the SpatiaLite extension
- try:
- conn.execute("SELECT load_extension('mod_spatialite');")
- print("SpatiaLite extension loaded successfully!")
- except sqlite3.OperationalError as e:
- print(f"Error loading SpatiaLite extension: {e}")
- # Create a cursor to execute queries
- cursor = conn.cursor()
- # Example: Check SpatiaLite version
- cursor.execute("drop table if exists topology_table_temp;")
- cursor.execute("create table topology_table_temp(PIEID INTEGER PRIMARY KEY not null,PIEUUID VARCHAR(128),PIEVALIDED BOOLEAN,sid,idx,rulecode,geometry MULTILINESTRING);")
- cursor.execute("with t as( select 0 sid, 0 did, numgeometries(linesfromrings(gunion(geometry))) cnt, linesfromrings(gunion(geometry)) geometry from topology_table ), cte(idx, sid, did, cnt, geometry, subgeom) AS ( SELECT 1 idx, sid, did, cnt, geometry, geometryN(geometry, 1) subgeom from t UNION ALL SELECT idx + 1 idx, sid, did, cnt, geometry, geometryN(geometry, idx + 1) subgeom FROM cte WHERE idx < cnt ) insert into topology_table_temp SELECT null,createuuid(),isvalid(casttomulti(subgeom)), sid, idx, 'A03' rulecode, casttomulti(subgeom) geometry FROM cte; ")
- cursor.execute("select recovergeometrycolumn('topology_table_temp', 'geometry', (select srid from geometry_columns where f_table_name = 'topology_table'), 'MULTILINESTRING', 'XY');")
- # version = cursor.fetchone()
- # print(f"SpatiaLite version: {version[0]}")
- # Close the connection when done
- conn.close()
|