../../_images/logo_spatialite.png

SpatiaLite gyorstalpaló

A SpatiLite egy SQLite adatbázis motor hozzáadott térbeli függvényekkel.

Az SQLite egy egyszerű, robusztus, könnyen használható és könnyűsúlyú adatbázis kezelő rendszer (RDBMS). Minden SQLite adatbázis egyszerűen egy fájl. Szabadon másolhatja, tömörítheti átviheti Windows, Linux, MacOs, stb. között.

Ez a gyorstalpaló leírja,hogyan nyithatunk meg egy spatialite adatbázist a grafikus felületről és a parancssorból. Néhány SQL lekérdezést is bemutatunk.

Spatialite elindítása és egy adatbázis betöltése

Spatialite-gui egy grafikus felületet biztosít egy spatialite adatbázis megtekintéséhez és karbantartásához. Könnyen megnézheti az adattáblák szerkezetét és tartalmát egérműveletekkel, melyek közül sok SQL lekérdezést hoz létre vagy készítse el saját SQL lekérdezéseit.

  1. Nyissa meg a Spatialite grafikus felületét Geospatial ‣ Databases ‣ Spatialite GUI

  2. Válassza a menüből File->Connecting an existing SQLite DB

  3. Tallózzon a /home/user/data/spatialite könyvtárba és válassza a trento.sqlite fájlt.

    ../../_images/spatialite-gui-trento.png
  4. Jobb kattintás a MunicipalHallsView táblán és válassza a „Show Columns” opciót

    ../../_images/spatialite-gui-columns.png
  5. Megfigyelheti, hogy a képernyő három részre bomlik:

    • A baloldali panel az adatbázis hierarchiát jeleníti meg, mint a táblák listája és oszlopok a táblában. Jobb gombbal kattintson egy elemre a baloldali panelben az általános adatbázis műveletek listájához.

    • A jobb-felső panel a kiválasztott művelethez tartozó SQL-t mutatja. Beviheti a saját testreszabott SQL utasítását ebbe a panelbe.

    • A jobb-alsó panel az SQL lekérdezés eredményét mutatja.

  6. Jobb kattintás a MunicipalHalls táblán és válassza az „Edit table rows”-t. Vegye észre az SQL lekérdezést, melyet a program létrehozott a jobb-felső panelben és az eredményeket a jobb-alsóban:

    SELECT ROWID, "PK_UID", "AREA", "PERIMETER", "COMU", "Geometry"
        FROM "MunicipalHalls"
        ORDER BY ROWID
    

SQL lekérdezés futtatása

  1. Most csavarjunk egyet az SQL mondatunkon, hogy a NOME és (hosszúság, szélesség) adatokat kapjuk csak akkor, ha a NOME_PROV mező tartalmazza a „BRESCIA”-t, most a MunicipalHallsView-t használva. A jobb-felső SQL panelba írja be:

    SELECT NOME, X(Geometry) AS Longitude, Y(Geometry) AS Latitude
        FROM "MunicipalHallsView"
        WHERE NOME_PROV LIKE "BRESCIA";
    
  2. Kattintson az „Execute SQL” gombra a jobb oldalon és az eredményt jobb alsó részen láthatja.

    ../../_images/spatialite-gui-select.png

Spatialite futtatása a parancssorból

Azok a felhasználók,akiknek szkriptekre vagy a lekérdezések automatizálására van szüksége, felismerhetik a parancs sori interfész előnyeit a spatilite-vel való munkában. Ebben a példában betöltünk egy shape fájlt és a 42-es autópálya közelében lévő iskolákat keresi ki.

  1. A parancssori munka megkezdése előtt egy terminál ablakot kell nyitnunk: System Tools -> LXTerminal.

  2. A következők beírásával nyissa meg a minta adatbázis a spatialitte-tal:

    spatialite /home/user/data/spatialite/trento.sqlite
    

    Hasznos parancsok a parancssorból:

    .help
    .tables
    .quit
    

Új spatialite adatbázis létrehozása és shape fájl betöltése

  1. Hozzunk létre egy új, üres spatialite adatbázist és töltsünk be két shape fájlt a north_carolina adatokból:

    user@osgeo-6:~$ spatialite test.sqlite
    SpatiaLite version ..: 5.0.0    Supported Extensions:
        - 'VirtualShape'        [direct Shapefile access]
        - 'VirtualDbf'          [direct DBF access]
        - 'VirtualText'         [direct CSV/TXT access]
        - 'VirtualGeoJSON'              [direct GeoJSON access]
        - 'VirtualXL'           [direct XLS access]
        - 'VirtualNetwork'      [Dijkstra shortest path - obsolete]
        - 'RTree'               [Spatial Index - R*Tree]
        - 'MbrCache'            [Spatial Index - MBR cache]
        - 'VirtualFDO'          [FDO-OGR interoperability]
        - 'VirtualBBox'         [BoundingBox tables]
        - 'VirtualSpatialIndex' [R*Tree metahandler]
        - 'VirtualElementary'   [ElemGeoms metahandler]
        - 'VirtualRouting'      [Dijkstra shortest path - advanced]
        - 'VirtualKNN'  [K-Nearest Neighbors metahandler]
        - 'VirtualGPKG' [OGC GeoPackage interoperability]
        - 'SpatiaLite'          [Spatial SQL - OGC]
        - 'VirtualXPath'        [XML Path Language - XPath]
    PROJ version ........: Rel. 6.3.1, February 10th, 2020
    GEOS version ........: 3.9.0-CAPI-1.16.2
    RTTOPO version ......: 1.1.0
    TARGET CPU ..........: x86_64-linux-gnu
    the SPATIAL_REF_SYS table already contains some row(s)
    SQLite version ......: 3.31.1
    Enter ".help" for instructions
    SQLite version 3.31.1 2020-01-27 19:55:54
    Enter ".help" for instructions
    Enter SQL statements terminated with a ";"
    spatialite>
    spatialite> .loadshp data/north_carolina/shape/schools_wake schools utf-8 3358
    spatialite> .loadshp data/north_carolina/shape/roadsmajor roads utf-8 3358
    

    Figyelje meg a .loadshp parancsot: először a shape fájl az .shp kiterjesztés nélkül, utána az új spatialite tábla nevet, majd a karakter kódolást és végül a shape fájl referencia rendszerének az EPSG kódját kell megadni.

  2. Most lekérdezzük az iskolákat a 42-es autópálya közelében:

    spatialite> SELECT s.NAMESHORT, s.ADDRNUMBER, s.ADDRROOT
         ...> FROM schools AS s, roads AS r
         ...> WHERE r.ROAD_NAME = "NC-42" AND
         ...> ST_Distance(s.Geometry, r.Geometry) < 1000;
    FUQUAY-VARINA|6600|Johnson Pond Rd
    WILLOW SPRINGS|6800|Dwight Rowland Rd
    FUQUAY-VARINA|109|N Ennis St
    LINCOLN HEIGHTS|307|Bridge St
    
  3. Végül írjuk ki a lekérdezés eredményét a következő paranccsal egy „vesszővel elválasztott értékek” szöveg fájlba „schools_rt42.txt”:

    spatialite> .mode csv
    spatialite> .output "schools_rt42.txt"
    spatialite> SELECT s.NAMESHORT, s.ADDRNUMBER, s.ADDRROOT
        ...> FROM schools AS s, roads AS r
        ...> WHERE r.ROAD_NAME = "NC-42" AND
        ...> ST_Distance(s.Geometry, r.Geometry) < 1000;
    spatialite>.q
    

Kipróbálandó dolgok

Íme néhány további kihívás kipróbálásra:

  • Vizsgáljuk meg a geometriákat a spatialite-GUI-val

  • Nyissa meg és szerkessze a Spatialite rétegeket QGIS-ben

Mi a következő?

A SpatiaLite projekt oldal egy jó kiinduló pont a Statilalite további tanulásához.

Feltétlenül nézze meg a Spatialite cookbook oktatóanyagot