Come registrare una geometria 2D in 3D con cambio di EPSG

SpatiaLite, come registrare una geometria con cambio di EPSG.

A cura di Giuseppe Guarino  | issue #54 | guida/e Totò Fiandaca


Come crare una geo-tabella 3D con EPSG 6708 a partire da uno shapefile 2D importato in SpatiaLite con campi X, Y e Z.


Introduzione

Dopo aver effettuato un rilievo topografico con un GPS differenziale, spesso abbiamo bisogno di convertire le nostre coordinate geografiche espresse in Latitudine e Longitudine, in coordintate cartografiche piane.

In questa ricetta effettueremo una conversione con SpatiaLite.

Dataset

Step 1 - Avviare SpatiaLite

SpatiaLite non ha bisogno di nessuna installazione, quindi basta scaricare l’eseguibile e avviarlo. Dopo averlo avviato bisogna creare un nuovo database dal Menu a tendina cliccando su Creating a New (empty) SQLiteDB.

Step 2 - Inserire i nostri dati

Dopo aver creato il nostro database dobbiamo caricare i nostri dati (CSV o SHP), dall’apposito tasto di importazione, oppure da Menu - Advanced - Load Shapefile (o csv/txt).

Step 3 - Effettuare la query

Per effettuare la trasformazione basta copiare e incollare la query qui sotto, avendo cura di sostituire:

  • nome tabella (con il nome di una nuova tabella)
  • myTable (con il nome della tabella/shapefile caricato)
CREATE TABLE "nome_tabella" AS
SELECT nome, x, y, z, ST_Transform(geom, SRID) AS geom
FROM "myTable";

la query crea una geo-tabella (nome_tabella) seguendo la geometria dello shapefile importato (myTable) e trasformando solo EPSG, quindi se la geometria era XY rimarrà XY.

La seguente query effettua la trasformazione:

CREATE TABLE "nome_tabella_new" AS
SELECT nome, x, y, z, makepointz(ST_x(geom), ST_y(geom), cast(z as double),6708) as geom
FROM "nome_tabella";

a partire dalla precedente geo-tabella (nome_tabella) con EPSG trasformato, crea una nuova geo-tabella aggiungendo la terza coordinata alla geometria XY trasformandola in XYZ; infine occorre registrare la geometria tramite questa query:

SELECT RecoverGeometryColumn('nome_tabella_new', 'geom',6708, 'POINT', 'XYZ');

Riferimenti utili

Ultima modifica 19/07/2020: close #50 (a1365d8)