[Gfoss] Geoprocessing "virtuale" in QGIS

Stefano Iacovella stefano.iacovella a gmail.com
Lun 22 Dic 2014 09:45:03 CET


Il giorno 19 dicembre 2014 09:09, Roberto Marzocchi <
roberto.marzocchi a gter.it> ha scritto:

> Grazie della segnalazione Stefano!
> Cerco di approfondire, francamente ignoravo questa possibilità. In ogni
> caso ad oggi non ci sono plugin di QGIS che sfruttino questo formato? E'
> corretto?
>
> Grazie ancora e cari saluti,
>

Ciao Roberto,

Onestamente non avevo mai provato ad utilizzare il formato VRt con QGIS,
l'ho utilizzato varie volte con OGR e sapendo che QGIS utilizza le librerie
GDAL/OGR ero convinto lo leggesse senza problemi.
In realtà ho fatto una piccola prova con QGIS 2.6.0 sotto Windows e ci sono
dei problemi in visualizzazione, almeno nella mia installazione. Riconosce
correttamente i file .vrt come layer e li aggiunge in mappa, ma non si
visualizzano ne le geometrie ne gli attributi.

La flessibilità del formato VRT ti permette di utilizzare tutti i formati
vettoriali supportati dalle librerie GDAL/OGR, e di inserire trasformazioni
direttamente nel file XML che definisce il dato virtuale. Così eviti di
dover creare copie intermedie dei dati. Insomma hai la flessibilità di un
db spaziale anche quando non ne hai uno a portata di mano.
Ad esempio per il buffer dinamico puoi partire da un dato in formato csv:

ID;LATITUDINE;LONGITUDINE
123;42.10;12.35

Ti crei il tuo datasource VRT creando un file XML come questo:

<OGRVRTDataSource>
    <OGRVRTLayer name="point">
        <SrcDataSource>CSV:point.csv</SrcDataSource>
        <GeometryType>wkbPoint</GeometryType>
        <LayerSRS>WGS84</LayerSRS>
        <GeometryField encoding="PointFromColumns" x="LONGITUDINE"
y="LATITUDINE"/>
    </OGRVRTLayer>
</OGRVRTDataSource>


Se dalla console esegui il comando ogrinfo -al point.vrt ottieni le info
sul dato:

INFO: Open of `point.vrt'
      using driver `VRT' successful.

Layer name: point
Geometry: Point
Feature Count: 1
Extent: (12.350000, 42.100000) - (12.350000, 42.100000)
Layer SRS WKT:
GEOGCS["WGS 84",
    DATUM["WGS_1984",
        SPHEROID["WGS 84",6378137,298.257223563,
            AUTHORITY["EPSG","7030"]],
        TOWGS84[0,0,0,0,0,0,0],
        AUTHORITY["EPSG","6326"]],
    PRIMEM["Greenwich",0,
        AUTHORITY["EPSG","8901"]],
    UNIT["degree",0.0174532925199433,
        AUTHORITY["EPSG","9108"]],
    AUTHORITY["EPSG","4326"]]
ID: String (0.0)
LATITUDINE: String (0.0)
LONGITUDINE: String (0.0)
OGRFeature(point):1
  ID (String) = 123
  LATITUDINE (String) = 42.10
  LONGITUDINE (String) = 12.35
  POINT (12.35 42.1)

Per creare il buffer dinamico crei un altro file .vrt come questo:

<OGRVRTDataSource>
    <OGRVRTLayer name="buffer">
        <SrcDataSource>point.vrt</SrcDataSource>
        <SrcSQL dialect="sqlite">SELECT ST_BUFFER(geometry,0.00001) from
point</SrcSQL>
    </OGRVRTLayer>
</OGRVRTDataSource>

E interrogandolo con ogrinfo -al buffer.vrt ti da le info sulla geometria
derivata:

INFO: Open of `buffer.vrt'
      using driver `VRT' successful.

Layer name: buffer
Geometry: Unknown (any)
Feature Count: 1
Extent: (12.349990, 42.099990) - (12.350010, 42.100010)
Layer SRS WKT:
GEOGCS["WGS 84",
    DATUM["WGS_1984",
        SPHEROID["WGS 84",6378137,298.257223563,
            AUTHORITY["EPSG","7030"]],
        TOWGS84[0,0,0,0,0,0,0],
        AUTHORITY["EPSG","6326"]],
    PRIMEM["Greenwich",0,
        AUTHORITY["EPSG","8901"]],
    UNIT["degree",0.0174532925199433,
        AUTHORITY["EPSG","9108"]],
    AUTHORITY["EPSG","4326"]]
OGRFeature(buffer):0
  POLYGON ((12.35001 42.1,12.350009986295348 ... 12.350009986295348
42.100000523359562,12.35001 42.1))

Ovviamente cambiando i valori dentro il file csv il buffer cambia
dinamicamente.

Stefano

---------------------------------------------------
41.95581N 12.52854E


http://www.linkedin.com/in/stefanoiacovella

http://twitter.com/#!/Iacovellas
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.gfoss.it/pipermail/gfoss/attachments/20141222/a8378e01/attachment.html>


Maggiori informazioni sulla lista Gfoss