[Gfoss] Spatialite e relativo supporto su Java

Premetto che non ho mai provato,
pero'.

A quanto ne so', spatialite e' sostanzialmente una estensione su sqlite.
Per cui partendo dal fatto che drivers jdbc per sqlite esistono.
dovrebbe essere possibile ordinare al db sqlite di effettuare il loading della estensione spatialite.

Dopodiche' passando gli appositi comandi via sql si potrebbe interagire in maniera spaziale con sqlite.

O sbaglio ?

> *Io volevo chiedere se qualcuno sa se, in futuro, Spatialite verra' supportata anche sui programmi scritti in Java.*
> *Mi sembra di aver capito che, al momento, cio' non e' possibile in quanto le librerie GDAL non prevedono ancora questa possibilita'.*
> *Non essendo pero' un esperto di programmazione ne', tantomeno, di GIS volevo sapere da voi qualche notizia in piu'.* 
> *Magari la mia affermazione non e' affatto corretta.*

Andrea Peri
. . . . . . . . .
qwerty àèìòù

A quanto ne so', spatialite e' sostanzialmente una estensione su sqlite.
Per cui partendo dal fatto che drivers jdbc per sqlite esistono.
dovrebbe essere possibile ordinare al db sqlite di effettuare il loading
della estensione spatialite.

Dopodiche' passando gli appositi comandi via sql si potrebbe interagire in
maniera spaziale con sqlite.

direi che è molto probabile che si possa fare. Ma qui credo si
richieda il livello di astrazione che ti da ad es GDAL/OGR, ovvero la
possibilità di accedere/manipolare oggetti geografici senza SQL ma con
una astrazione ad oggetti.

--
Paolo Corti
GIS Architect and Developer
mobile: +39 335 7635561
web: http://www.paolocorti.net
twitter: @capooti

A quanto ne so', spatialite e' sostanzialmente una estensione su sqlite.
Per cui partendo dal fatto che drivers jdbc per sqlite esistono.
dovrebbe essere possibile ordinare al db sqlite di effettuare il loading
della estensione spatialite.

Dopodiche' passando gli appositi comandi via sql si potrebbe interagire in
maniera spaziale con sqlite.

direi che è molto probabile che si possa fare. Ma qui credo si
richieda il livello di astrazione che ti da ad es GDAL/OGR, ovvero la
possibilità di accedere/manipolare oggetti geografici senza SQL ma con
una astrazione ad oggetti.

Condivido. Nessuno vieta di passare tramite JDBC, ma si torna al
problema sottolineato da Francesco...
Non ho sotto mano le librerie Java di GDAL/OGR ma immagino sia già
possibile usare spatialite, no?

giovanni

In effetti non posso dire di conoscere gdal a livello di API,
per cui mi interessa esplorare meglio il discorso:

basandomi su quello che avevo capito di gdal/ogr, non ho mai pensato che esso si potesse spingere fino alla elaborazione spaziale.

Per esempio:
se dovessi recuperare gli elementi poligonali che distano meno di 10 metri da uno specifico oggetto delimitato, e fondere (o clippare) tutti gli elementi che sono tra loro in una condizione di “vicinanza” , tanto per citare alcuni esempi di necessita’ che possono capitare,

Spatialite al suo interno con comandi sql ti consentirebbe di fare questi tipi di lavoro, ma se passi attraverso le API di gdal esse non credo che ti diano
funzionalita’ di questo tipo.
E poi dovresti scriverti un applicativo su misura, perche’ non ti fornisce un metalinguaggio atto allo scopo.

Andrea.

Il giorno 18 dicembre 2009 14.31, Paolo Corti <pcorti@gmail.com> ha scritto:

A quanto ne so’, spatialite e’ sostanzialmente una estensione su sqlite.
Per cui partendo dal fatto che drivers jdbc per sqlite esistono.
dovrebbe essere possibile ordinare al db sqlite di effettuare il loading
della estensione spatialite.

Dopodiche’ passando gli appositi comandi via sql si potrebbe interagire in
maniera spaziale con sqlite.

direi che è molto probabile che si possa fare. Ma qui credo si
richieda il livello di astrazione che ti da ad es GDAL/OGR, ovvero la
possibilità di accedere/manipolare oggetti geografici senza SQL ma con
una astrazione ad oggetti.


Paolo Corti
GIS Architect and Developer
mobile: +39 335 7635561
web: http://www.paolocorti.net
twitter: @capooti

Andrea Peri
. . . . . . . . .
qwerty àèìòù

Per esempio:
se dovessi recuperare gli elementi poligonali che distano meno di 10 metri
da uno specifico oggetto delimitato, e fondere (o clippare) tutti gli
elementi che sono tra loro in una condizione di "vicinanza" , tanto per
citare alcuni esempi di necessita' che possono capitare,

Spatialite al suo interno con comandi sql ti consentirebbe di fare questi
tipi di lavoro, ma se passi attraverso le API di gdal esse non credo che ti
diano
funzionalita' di questo tipo.

GDAL/OGR da solo no, però con GEOS [1] si.
Quest'ultima è una libreria concepita proprio per fare questo tipo di
interrogazioni/elaborazioni spaziali, ed è in sostanza l'equivalente
di quella che è la JTS per il mondo Java, e .NET Topological Suite per
.NET.
In effetti è proprio GEOS che abilita le funzionalità spaziali di
PostGis (e anche di Spatialite).
ciao

[1] http://trac.osgeo.org/geos/

--
Paolo Corti
GIS Architect and Developer
mobile: +39 335 7635561
web: http://www.paolocorti.net
twitter: @capooti

Cito:

"The SQLite driver can read and write SpatiaLite databases without
needing to load the SpatiaLite library. But if you configure GDAL/OGR
with explicit linking to SpatiaLite library (version >= 2.3), you can
take advantage of all the extension functions provided by this
library, such as spatial indexes, spatial functions, etc..."

http://www.gdal.org/ogr/drv_sqlite.html

Il 18 dicembre 2009 15.06, Paolo Corti <pcorti@gmail.com> ha scritto:

Per esempio:
se dovessi recuperare gli elementi poligonali che distano meno di 10 metri
da uno specifico oggetto delimitato, e fondere (o clippare) tutti gli
elementi che sono tra loro in una condizione di "vicinanza" , tanto per
citare alcuni esempi di necessita' che possono capitare,

Spatialite al suo interno con comandi sql ti consentirebbe di fare questi
tipi di lavoro, ma se passi attraverso le API di gdal esse non credo che ti
diano
funzionalita' di questo tipo.

GDAL/OGR da solo no, però con GEOS [1] si.
Quest'ultima è una libreria concepita proprio per fare questo tipo di
interrogazioni/elaborazioni spaziali, ed è in sostanza l'equivalente
di quella che è la JTS per il mondo Java, e .NET Topological Suite per
.NET.
In effetti è proprio GEOS che abilita le funzionalità spaziali di
PostGis (e anche di Spatialite).
ciao

[1] http://trac.osgeo.org/geos/

--
Paolo Corti
GIS Architect and Developer
mobile: +39 335 7635561
web: http://www.paolocorti.net
twitter: @capooti
_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss@faunalia.it
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.

Vero,

ma esso serve solo a trasferire dati da un altro formato a sqlite+spatialite.
Non e' poco certamente, ma siccome non deve essere fine a se' stesso,
probabilmente successivamnete all'aver trasfeeito i dati su spatialite ci si dovra' fare qualche elaborazione.spaziale.

Per fare questo e' possibile fare ancora ricorso a gdal/ogr oppure no ?

Io penso di no.
perche' non credo che preveda niente del genere.

E invece, per questo penserei di agganciarmi direttamente a spatialite, tramite un driver jdbc per sqlite e tramite di lui comandare a
sqlite di caricarsi l'estensione per spatialite.
Dopodiche' invierei comandi a spatialite sottoforma di stringhe sql.

Andrea.

G. Allegri ha scritto:

Cito:

"The SQLite driver can read and write SpatiaLite databases without
needing to load the SpatiaLite library. But if you configure GDAL/OGR
with explicit linking to SpatiaLite library (version >= 2.3), you can
take advantage of all the extension functions provided by this
library, such as spatial indexes, spatial functions, etc..."

http://www.gdal.org/ogr/drv_sqlite.html

Il 18 dicembre 2009 15.06, Paolo Corti <pcorti@gmail.com> ha scritto:
  

Per esempio:
se dovessi recuperare gli elementi poligonali che distano meno di 10 metri
da uno specifico oggetto delimitato, e fondere (o clippare) tutti gli
elementi che sono tra loro in una condizione di "vicinanza" , tanto per
citare alcuni esempi di necessita' che possono capitare,

Spatialite al suo interno con comandi sql ti consentirebbe di fare questi
tipi di lavoro, ma se passi attraverso le API di gdal esse non credo che ti
diano
funzionalita' di questo tipo.
      

GDAL/OGR da solo no, però con GEOS [1] si.
Quest'ultima è una libreria concepita proprio per fare questo tipo di
interrogazioni/elaborazioni spaziali, ed è in sostanza l'equivalente
di quella che è la JTS per il mondo Java, e .NET Topological Suite per
.NET.
In effetti è proprio GEOS che abilita le funzionalità spaziali di
PostGis (e anche di Spatialite).
ciao

[1] http://trac.osgeo.org/geos/

--
Paolo Corti
GIS Architect and Developer
mobile: +39 335 7635561
web: http://www.paolocorti.net
twitter: @capooti
_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss@faunalia.it
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.

ma esso serve solo a trasferire dati da un altro formato a
sqlite+spatialite.

Non l'ho ancora testato, però se viene configurato il linking
esplicito a Spatialite credo proprio che tu possa usare l'SQL completo
(invece del subset OGRSQL). Ad esempio puoi settare uno spatial filter
sulle geometrie in base alle funzioni spaziali offerte da SpatiaLite
(vedi l'esempio nella stessa pagina citata) tramite ExecuteSQL [1]

[1] http://www.gdal.org/ogr/classOGRDataSource.html#a6acc228db6513784a56ce12334a8c33

PS: la documentazione del metodo dice che l'sql viene passato
direttamente per i driver di Oracle e Postgis ma, come dicevamo,
questo avviene anche per SpatiaLite se linkato dinamicamente...

Il 18 dicembre 2009 16.22, G. Allegri <giohappy@gmail.com> ha scritto:

ma esso serve solo a trasferire dati da un altro formato a
sqlite+spatialite.

Non l'ho ancora testato, però se viene configurato il linking
esplicito a Spatialite credo proprio che tu possa usare l'SQL completo
(invece del subset OGRSQL). Ad esempio puoi settare uno spatial filter
sulle geometrie in base alle funzioni spaziali offerte da SpatiaLite
(vedi l'esempio nella stessa pagina citata) tramite ExecuteSQL [1]

[1] http://www.gdal.org/ogr/classOGRDataSource.html#a6acc228db6513784a56ce12334a8c33

On Fri, 18 Dec 2009 16:05:08 +0100, Andrea Peri 2007 wrote

Vero,

ma esso serve solo a trasferire dati da un altro formato a
sqlite+spatialite.
Non e' poco certamente, ma siccome non deve essere fine a se' stesso,
probabilmente successivamnete all'aver trasfeeito i dati su
spatialite ci si dovra' fare qualche elaborazione.spaziale.

Per fare questo e' possibile fare ancora ricorso a gdal/ogr oppure
no ?

Io penso di no.
perche' non credo che preveda niente del genere.

E invece, per questo penserei di agganciarmi direttamente a
spatialite, tramite un driver jdbc per sqlite e tramite di lui
comandare a sqlite di caricarsi l'estensione per spatialite.
Dopodiche' invierei comandi a spatialite sottoforma di stringhe sql.

Scusa Andrea,

ma è esattamente identico a quanto succede con le API C
- stabilisci la connessione, crei un cursore e lavori
  tutto a colpi di SQL standard
- ma quando proprio serve, puoi anche lavorare direttamente
  sui singoli vertici etc ... insomma, puoi fare tutto quello
  che ti pare come meglio credi, godendo della potenza di fuoco
  illimitata del C [a tuo richio e pericolo, ovviamente,
  ma se sei ben consapevole di quello che combini ...]

in Java evidentemente non puoi, perchè le API C di SQLite
e di SpatiaLite sono "invisibili"
però puoi ottenere ugualmente un accesso "a livello parecchio
fisico" passando attaverso OGR/GDAL
... che dire ... quantomeno barocco e contorto ...
ma sicuramente efficace :slight_smile:

insomma, perdi un sacco in efficienza (visto gli ennemila
livelli di astrazione che ci metti nel mezzo), ma in
compenso quasi sicuramente puoi fregartene di sapere se
stai lavorando su splite, o su postgis, o magari su shp

ciao Sandro

Ciao a tutti,
è uscita la nuova versione di SpagoBI (2.4) per la quale è stato sviluppato il nuovo motore interno SpagoBIGeoReportEngine.

Qui [1] potete scaricare e testare il prodotto direttamente con la demo.

[1] http://forge.ow2.org/project/showfiles.php?group_id=204

Grazie.

--
Fabio D'Ovidio
Geospatial Solutions

INOVA S.P.A.
Web : http://www.inovaos.it
GeoBI Blog: www.geobi.org
Tel.: 081 197 57 600
mail: fabiodovidio@gmail.com, f.dovidio@inovaos.it
skype: dovidio_fa