遇到的問題:Qgis打開含有WKB二進制格式幾何字段的sq3資料時,地理資訊無法顯示,隻能以表的形式加載;
原因:Qgis隻能識别spatialite格式的資料源,sqlite的隻能以表的形式打開;
驗證方式:把shp檔案分别另存為sqlite格式、spatialite格式資料,再用Qgis打開;
1、用加載spatialite格式的方式加載sqlite,顯示Failure getting table metadata...is ** really a SpatiaLite database?
2、用加載矢量檔案的方式加載sqlite,Geometry type顯示為None;
3、用加載spatialite資料的方式加載剛才存儲的spatialite格式資料,地理資訊正确顯示,并且比shp格式多了很多加載圖層;
4、導出時Geometry Type選擇對應的類型,而不是Automatic,再次加載時成功
結果:qgis可以打開WKB格式的sqlite資料,我遇到的是sqlite存儲的是spatialite blob的格式,qgis解析非标準WKB格式的資料失敗,導緻Geomtry Type=None,是以隻能講spatialite blob的資料轉成标準的WKB格式
空間資料庫:
https://blog.csdn.net/gisuuser/article/category/7231661?orderby=UpdateTime
SQLite 與 SpatiaLite的關系
空間資料庫:在幾乎絕大多數資料庫都具有空間資料的存儲和查詢功能後,SQLite說自己是世界上最小的資料庫,為了與時俱進也有了空間資料支援的擴充,利用這個擴充,可以按照OGC的Simple Feature Access标準存取空間資料。
Spatialite: 支援SQLite空間資料功能的這個項目名叫SpatiaLite,與其一同分發的還有一個VirtualShape。前者為SQLite增加空間資料支援,後者可以把一個Shapefile作為SQLite的資料庫;
作用:spatialite能使sqlite具有距離、位置關系判斷等功能函數,具有把shp格式作為sqlite表識别處理的能力,Python等語言加載spatialite包後,能處理簡單的地理運算;
spatialite blob和WKB的差異
https://wenku.baidu.com/view/94dd85480b4c2e3f56276345.html
http://www.gaia-gis.it/gaia-sins/BLOB-Geometry.html
https://www.codetd.com/article/4295374
https://www.itread01.com/content/1543511464.html
https://www.gaia-gis.it/fossil/libspatialite/index
解決方案1:選擇低版本的QGIS
處理spatialite的qgis版本:QGIS-OSGeo4W-2.8.2-1-Setup-x86
解決方案2:
sqlite增加geometry_columns表,在qgis中檢視,修改,讓sqlite成為spatialite ,進而被qgis識别;
CREATE TABLE geometry_columns (f_table_name TEXT NULL, f_geometry_column TEXT NULL, geometry_type INTEGER NOT NULL, coord_dimension INTEGER NOT NULL, srid INTEGER NOT NULL, spatial_index_enabled INTEGER NOT NULL);
INSERT INTO geometry_columns VALUES ('point','geometry',1002,3,4326,0); 點
INSERT INTO geometry_columns VALUES ('line','geometry',1002,3,4326,0); 線
INSERT INTO geometry_columns VALUES ('attr','',0,0,0,0); 屬性
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL5ITN1ADO1UTM1EDOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
qgis資料表geometry_columns表,存放了目前資料庫中所有表的幾何字段資訊
該表各列的含義如下:
- f_table_name表示空間表的表名。
- f_geometry_column表示空間表中幾何字段的名稱。
- geometry_type表示幾何字段的類型。
- coord_dimension表示幾何字段維數。
- srid表示空間表的空間參考。
- spatial_index_enabled表示空間索引是否有效