SpatiaLite: Porovnání verzí

Z GeoWikiCZ
mBez shrnutí editace
 
(Není zobrazeno 43 mezilehlých verzí od stejného uživatele.)
Řádek 1: Řádek 1:
[[Image:spatialite-logo.png|175px|right]]
{{freegiswiki|SpatiaLite}}
Prostorové rozšíření [http://www.gaia-gis.it/spatialite/ SpatiaLite] umožňuje ukládat v databázi [[SQLite]] geoprostorová data - podobně jako např. [[PostGIS]] pro databázový systém [[PostgreSQL]].
__TOC__
=== Založení databáze ===
 
Nejprve stáhneme inicializační soubor, např.
 
wget  http://www.gaia-gis.it/spatialite/init_spatialite-2.3.sql.gz
gzip -d init_spatialite-2.3.sql.gz
 
Vytvoříme a inicializujeme databázi (metadatové tabulky <tt>geometry_columns</tt> a <tt>spatial_ref_sys</tt>).
 
spatialite gisdb.sqlite < init_spatialite-2.3.sql
 
Na serveru josef
 
spatialite gisdb.sqlite < /usr/local/share/init_spatialite-2.3.sql
 
Nyní je databáze připravena pro práci s geoprostorovými daty.
 
spatialite gisdb.sqlite
spatialite> .tables
geom_cols_ref_sys  geometry_columns  spatial_ref_sys 
spatialite> .exit
 
== Import dat ==
 
Pro tento účel můžeme vyexportovat data např. z [[Cvičná databáze PostGIS|cvičné databáze PostGIS]] do formátu ESRI ShapeFile.
 
pgsql2shp pgis_student gis1.obce
 
Data ve formátu ESRI Shapefile naimportujeme
 
spatialite_tool -i -shp obce -d gisdb.sqlite -t obce -c UTF-8 -s 2065 -g the_geom
 
anebo přímo z interpretu SpatiaLite
 
spatialite> .loadshp ./obce obce UTF-8 2065 the_geom
 
Ukázka jednoduchého dotazu
 
<source lang="sql">
spatialite> SELECT nazev,Area(the_geom)/1e6 AS plocha FROM obce ORDER BY plocha DESC LIMIT 5;
Praha|496.077202708984
Hradiště|328.857295861328
Brdy|259.774799202647
Libavá|238.31301229512
Brno|230.03067746875
</source>
 
=== OGR ===
 
Pro import/export dat lze využít i knihovnu [[GDAL/OGR|OGR]], která volitelně SQLite podporuje.
 
Příklad konverze dat z PostGIS do SpatiaLite.
 
ogr2ogr -append -f SQLite gisdb.sqlite pg:dbname=pgis_student gis1.obce
 
Poznámka: Před importem dat je nutné vložit [[PostGIS#Definice S-JTSK (ESRI:102067)|SRID 102067]] do tabulky 'spatial_ref_sys'.
 
<source lang="sql">
INSERT into spatial_ref_sys (srid, auth_name, auth_srid, ref_sys_name, proj4text) values
(9102067, 'esri', 102067, 'S-JTSK', '+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333
+alpha=30.28813975277778 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs');
</source>
 
=== Replikace [[Cvičná databáze PostGIS|cvičné databáze PostGIS]] ===
 
Příklad importu dat z [[Cvičná databáze PostGIS|cvičné databáze PostGIS]], schéma [[Cvičná databáze PostGIS#gis1|gis1]].
 
ogr2ogr -f SQLite -dsco "SPATIALITE=yes" gis1.sqlite PG:'dbname=pgis_student schemas=gis1'
 
==== Test časové náročnosti dotazu ====
 
<source lang="bash">
time spatialite gis1.sqlite \
"SELECT COUNT(DISTINCT kodob) FROM obce JOIN zeleznice AS \
zelez ON intersects(zelez.geometry, obce.geometry);"
</source>
 
* Bez prostorového indexu
 
* S prostorových indexem
 
spatialite gis1.sqlite
 
<source lang="sql">
SELECT CreateSpatialIndex('obce');
SELECT CreateSpatialIndex('zeleznice');
</source>
 
== Virtuální tabulky ==
 
Příklad přípojení dat ve formátu Shapefile jako virtuální tabulku.
 
<source lang="sql">
CREATE VIRTUAL TABLE obce USING VirtualShape(obce, UTF-8, 2065);
</source>
 
== Vizualizace dat v [[QGIS|QGISu]] ==
 
[[QGIS]] nabízí od verze 1.1.0 zásuvný modul pro SpatialLite.
 
[[Image:qgis-spatialite.png|center|frame|Přidání SpatiaLite vrstvy v QGISu (1)]]
 
[[Image:qgis-spatialite-2.png|center|frame|Přidání SpatiaLite vrstvy v QGISu (2)]]
 
Poznámka: V současné době neumožňuje QGIS vizualizovat data připojené jako virtuální tabulky.
 
== Související články ==
 
* [[SQLite]]
* [[PostGIS]]
 
== Externí odkazy ==
 
* [http://www.gaia-gis.it/spatialite/spatialite-tutorial-2.3.0.html Tutoriál] SpatiaLite (angličtina)
* [http://www.scribd.com/doc/15063620/Spatialite-CGS-2009 SpatiaLite CGS 2009] by Alex Mandel
* [http://grass.osgeo.org/wiki/Spatial_SQL Spatial SQL at GRASSWiki]
 
{{Databáze}}
{{GIS}}
{{GFOSS}}

Aktuální verze z 8. 1. 2013, 14:22

Stránky přesunuty na Free GIS Portál: http://geo.fsv.cvut.cz/freegis/SpatiaLite