【问题标题】:SQL/SpatiaLite: how to declare a column as geometry?SQL/SpatiaLite:如何将列声明为几何?
【发布时间】:2015-04-20 10:09:14
【问题描述】:

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

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

但是,这会返回一个“正常”表,因此当我尝试将其加载到 GIS 程序 (QGIS) 中时,它不会显示几何图形。如何声明几何列包含几何?

【问题讨论】:

    标签: geometry spatialite


    【解决方案1】:

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

    然后,您可以将数据插入到您的表中。

    不可能一步完成 (create table as select)。来自the documentation

    创建几何类型的同时对应的表是 不允许创建。你总是必须先创建表,然后 再次添加几何列,并作为单独的步骤。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多