SQL / SpatiaLite:如何将列声明为几何?

时间:2015-04-20 10:09:15

标签: geometry spatialite

我正在通过空间表中的SQL查询创建一个新表:

CREATE TABLE SomeShapes AS
SELECT ash.id, ash.Geometry
FROM AllShapes ash
WHERE ash.id = 30

然而,这会返回"正常" table,所以当我尝试在GIS程序(QGIS)中加载它时,它不会显示几何体。如何声明几何体列包含几何体?

1 个答案:

答案 0 :(得分:10)

您需要创建一个“非空间”表格,然后将Geometry列添加到其中。

然后,您可以在表格中插入数据。

无法一步完成(create table as select)。来自the documentation

  

在相应的表的同时创建Geometry类型   不允许创建。你总是必须首先创建表   第二次添加Geometry-column并作为单独的步骤。

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');

另外,请考虑您可能希望使用spatial indexes来提高效果

SELECT CreateSpatialIndex('test_geom', 'Geometry');