spatialite - vista con linee virtuali da tabella punti

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

spatialite - vista con linee virtuali da tabella punti

Falz
Ciao a tutti,
pongo un quesito:
Come faccio a visualizzare la geometria virtuale LINEARE generata da una tabella POINT con makeline()?

Ho provato così, manca l'ultimo passo:

"create table punti
(pk integer primary key,
nome text);
select addgeometrycolumn('punti','geom',32632,'POINT',2);

create view virtual_lines as
select
a.rowid as rowid,
st_astext(makeline(a.geom, b.geom)) as wkt,
st_length(makeline(a.geom, b.geom)) as lunghezza,
makeline(a.geom, b.geom) as geom
from punti a, punti b;

select * from virtual_lines;
--fin qui OK finchè è tabellare, ma la geometria in mappa?"


--problema geometria virtuale da visualizzare
insert into views_geometry_columns
 (view_name, view_geometry, view_rowid, f_table_name, f_geometry_column, read_only)
 values ('virtual_lines', 'the_geom', 'rowid', 'QUALE_TABELLA??', 'geom',1);

--con postgis è facile
(st_makeline(a.geom, b.geom))::geometry(LineString,32632) as geom

Ringrazio e buon weekend!
Simone
_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
796 iscritti al 28/12/2017
Reply | Threaded
Open this post in threaded view
|

Re: spatialite - vista con linee virtuali da tabella punti

a.furieri
On Fri, 7 Sep 2018 13:26:53 +0200 (CEST), [hidden email]
wrote:

> Ciao a tutti,
> pongo un quesito:
> Come faccio a visualizzare la geometria virtuale LINEARE generata da
> una tabella POINT con makeline()?
>
> Ho provato così, manca l'ultimo passo:
>
> "create table punti
> (pk integer primary key,
> nome text);
> select addgeometrycolumn('punti','geom',32632,'POINT',2);
>
> create view virtual_lines as
> select
> a.rowid as rowid,
> st_astext(makeline(a.geom, b.geom)) as wkt,
> st_length(makeline(a.geom, b.geom)) as lunghezza,
> makeline(a.geom, b.geom) as geom
> from punti a, punti b;
>
> select * from virtual_lines;
> --fin qui OK finchè è tabellare, ma la geometria in mappa?"
>

Simone,

SpatiaLite non e' PostGIS, e soprattutto SQLite non e' PostgreSQL;
ci sono alcuni punti specifici in cui l'architettura rende
assolutamente impossibili alcune operazioni.

nello specifico, le Spatial Views di SpatiaLite non possono
assolutamente _MAI_ rielaborare in nessun modo le Geometrie,
perche' altrimenti impazzisce letteramente lo Spatial Index
(che su SQLite e' implementato in modo decisamente esotico).

quindi, una View come la tua, che genera "al volo" dei
segmenti a partire da punti tramite la funzione MakeLine()
non potra' mai diventare in nessun modo una Spatial View
visualizzabile su una mappa.


> --problema geometria virtuale da visualizzare
> insert into views_geometry_columns
>  (view_name, view_geometry, view_rowid, f_table_name,
> f_geometry_column, read_only)
>  values ('virtual_lines', 'the_geom', 'rowid', 'QUALE_TABELLA??',
> 'geom',1);
>
> --con postgis è facile
> (st_makeline(a.geom, b.geom))::geometry(LineString,32632) as geom
>

per l'appunto; c'eri gia' arrivato da solo al punto critico.
QUALE TABELLA ??
nel tuo caso non esiste la tavola di origine, proprio perche'
la geometria viene "prodotta al volo"; e quindi non la puoi
assolutamente registrare su views_geometry_columns.

puoi pero' provare una strategia alternativa; invece di
usare una View puoi usare una Table vera e propria: basta
solo che invece di chiamare:

create view virtual_lines as
select ... blah blah ....

tu chiami al suo posto:

create table virtual_lines as
select ... blah blah ....

poi ovviamente dovrai completare l'operazione chiamando:

SELECT RecoverGeometryColumn()

e magari anche:

SELECT CreateSpatialIndex()

e' sicuramente piu' macchinoso, e probabilmente richiede
di cancellare e ricreare la tavola ad intervalli fissi,
ma alla fine in genere e' una metodologia che produce
risultati abbastanza soddisfacenti.

ciao Sandro

_______________________________________________
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.
796 iscritti al 28/12/2017