我正在通过空间表中的 SQL 查询创建一个新表:
CREATE TABLE SomeShapes AS
SELECT ash.id, ash.Geometry
FROM AllShapes ash
WHERE ash.id = 30
但是,这会返回一个“正常”表,因此当我尝试将其加载到 GIS 程序 (QGIS) 中时,它不会显示几何图形。我如何声明几何列包含几何?
我正在通过空间表中的 SQL 查询创建一个新表:
CREATE TABLE SomeShapes AS
SELECT ash.id, ash.Geometry
FROM AllShapes ash
WHERE ash.id = 30
但是,这会返回一个“正常”表,因此当我尝试将其加载到 GIS 程序 (QGIS) 中时,它不会显示几何图形。我如何声明几何列包含几何?
您需要创建一个“非空间”表,然后将Geometry
列添加到其中。
然后,您可以将数据插入表中。
它不能一步完成(create table as select
)。从文档中:
不允许在创建相应表的同时创建几何类型。您始终必须首先创建表,然后第二次添加几何列并作为单独的步骤。
CREATE TABLE test_geom (
id INTEGER NOT NULL
PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
measured_value DOUBLE NOT NULL);
SELECT AddGeometryColumn('test_geom', 'Geometry', 4326, 'POINT', 'XY');
另外,考虑到您可能希望使用空间索引来提高性能
SELECT CreateSpatialIndex('test_geom', 'Geometry');