首页 文章

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

提问于
浏览
5

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

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

但是,这会返回一个“普通”表,因此当我尝试在GIS程序(QGIS)中加载它时,它不会显示几何图形 . 如何声明几何体列包含几何体?

1 回答

  • 9

    您需要创建"non-spatial"表,然后将 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');
    

相关问题