File sqlite dari NE adalah dalam format FDO-OGR, bukan geometri spasial asli. Jika Anda bersedia melakukan kerja kasar, berikut ini cara untuk mengonversi ke spatialite db:
Pertama buat database spatialite baru yang kosong (saya menyebutnya "nev.sqlite"), kemudian dalam sesi terminal terpisah buka natural_earth_vector.sqlite asli dengan spatialite. (Saya menggunakan versi yang lebih baru 4.1. Tidak yakin apakah ini akan berfungsi dengan versi yang lebih lama). Gunakan attach
fungsi sqlite untuk terhubung ke tabel nev.sqlite baru Anda, dan buat salinan tabel yang Anda inginkan ke dalam database baru.
Begitu:
micha@Wheezy:~$ spatialite natural_earth_vector.sqlite
SpatiaLite version ..: 3.0.0-beta Supported Extensions:
- 'VirtualShape' [direct Shapefile access]
- 'VirtualDbf' [direct DBF access]
- 'VirtualXL' [direct XLS access]
- 'VirtualText' [direct CSV/TXT access]
- 'VirtualNetwork' [Dijkstra shortest path]
- 'RTree' [Spatial Index - R*Tree]
- 'MbrCache' [Spatial Index - MBR cache]
- 'VirtualSpatialIndex' [R*Tree metahandler]
- 'VirtualFDO' [FDO-OGR interoperability]
- 'SpatiaLite' [Spatial SQL - OGC]
PROJ.4 version ......: Rel. 4.7.1, 23 September 2009
GEOS version ........: 3.3.3-CAPI-1.7.4
SQLite version ......: 3.7.13
================ FDO-OGR Spatial Metadata detected ===============
.....
created VirtualFDO table 'fdo_ne_110m_geography_regions_points'
created VirtualFDO table 'fdo_ne_110m_geography_regions_polys'
created VirtualFDO table 'fdo_ne_110m_glaciated_areas'
created VirtualFDO table 'fdo_ne_110m_lakes'
created VirtualFDO table 'fdo_ne_110m_land'
created VirtualFDO table 'fdo_ne_110m_ocean'
created VirtualFDO table 'fdo_ne_110m_rivers_lake_centerlines'
Accessing these fdo_XX tables you can take full advantage of
FDO-OGR auto-wrapping facility
This allows you to access any specific FDO-OGR Geometry as if it
where native SpatiaLite ones in a completely transparent way
==================================================================
Enter ".help" for instructions
spatialite> attach "nev.sqlite" AS nev;
spatialite>
spatialite> CREATE TABLE nev.countries AS SELECT * from fdo_ne_10m_admin_0_countries;
spatialite> CREATE TABLE nev.populated_places AS SELECT * FROM fdo_ne_10m_populated_places;
spatialite> CREATE TABLE nev.railroads AS SELECT * FROM fdo_ne_10m_railroads;
spatialite> .q
*** FDO-OGR auto-wrapping shutdown done ***
Semua baris "dibuat VirtualFDO ..." menunjukkan bahwa Spatialite mengenali data sebagai FDO diformat, dan membuat tabel virtual untuk masing-masing dengan GEOMETRI yang dikonversi ke format spatialite. Saya attach
ke database "nev" baru saya dan membuat tabel baru untuk setiap layer yang saya minati dengan CREATE TABLE ... AS SELECT * FROM ...
pernyataan.
Sekarang saya beralih kembali ke database spasial baru . Dan jalankan RecoverGeometryColumn()
di setiap tabel untuk mendapatkan database spasial yang tepat, dengan semua metadata, dll. Perhatikan bahwa format FDO memungkinkan untuk jenis geometri campuran MULTI dan TUNGGAL, jadi saya pertama-tama memeriksa jenis geometri mana yang berisi setiap tabel, dan memastikan bahwa semua fitur sama. Saya menggunakan di CastToMulti()
mana pun diperlukan, seperti:
micha@Wheezy:~/GIS/World/naturalearthdata.com$ spatialite nev.sqlite
SpatiaLite version ..: 4.1.1 Supported Extensions:
- 'VirtualShape' [direct Shapefile access]
- 'VirtualDbf' [direct DBF access]
- 'VirtualXL' [direct XLS access]
- 'VirtualText' [direct CSV/TXT access]
- 'VirtualNetwork' [Dijkstra shortest path]
- 'RTree' [Spatial Index - R*Tree]
- 'MbrCache' [Spatial Index - MBR cache]
- 'VirtualSpatialIndex' [R*Tree metahandler]
- 'VirtualFDO' [FDO-OGR interoperability]
- 'SpatiaLite' [Spatial SQL - OGC]
PROJ.4 version ......: Rel. 4.7.1, 23 September 2009
GEOS version ........: 3.3.3-CAPI-1.7.4
SQLite version ......: 3.7.13
Enter ".help" for instructions
SQLite version 3.7.13 2012-06-11 02:05:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
spatialite> .tables
SpatialIndex geometry_columns_auth spatialite_history
countries populated_places sql_statements_log
geom_cols_ref_sys railroads views_geometry_columns
geometry_columns spatial_ref_sys virts_geometry_columns
spatialite>
spatialite> SELECT GeometryType(GEOMETRY) FROM countries;
POLYGON
POLYGON
MULTIPOLYGON
MULTIPOLYGON
POLYGON
MULTIPOLYGON
POLYGON
MULTIPOLYGON
MULTIPOLYGON
.....
Geometri dicampur, jadi atur semuanya MULTI, lalu lakukan RecoverGeometryColumn ():
spatialite> UPDATE countries SET GEOMETRY=CastToMulti(GEOMETRY);
spatialite> SELECT RecoverGeometryColumn('countries','GEOMETRY',4326,'MULTIPOLYGON',2);
1
spatialite>
Dan seterusnya untuk setiap meja yang Anda butuhkan. Sekarang tabel tersedia di QGIS.
Anda dapat menambahkan data dari database dengan
Add vector layer ...
di QGIS 2.0.1.Tapi bersabarlah, ini banyak data.
Plugin Qspatialite sayangnya tidak dapat menangani data, maupun dialog layer Add Spatialite.
sumber