Re: [Gfoss] spatialite - vista con linee virtuali da tabella punti

2018-09-07 Per discussione a . furieri
On Fri, 7 Sep 2018 13:26:53 +0200 (CEST), falcerisim...@inwind.it 
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

___
Gfoss@lists.gfoss.it
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

[Gfoss] spatialite - vista con linee virtuali da tabella punti

2018-09-07 Per discussione falcerisimone
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
___
Gfoss@lists.gfoss.it
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