9

空間テーブルから SQL クエリを使用して新しいテーブルを作成しています。

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

ただし、これは「通常の」テーブルを返すため、GIS プログラム (QGIS) にロードしようとすると、ジオメトリが表示されません。ジオメトリ列にジオメトリが含まれていることを宣言するにはどうすればよいですか?

4

1 に答える 1

15

「非空間」テーブルを作成してから、Geometry列を追加する必要があります。

次に、テーブルにデータを挿入できます。

1 つのステップ ( create table as select) では実行できません。ドキュメントから:

対応するテーブルの作成と同時にジオメトリ タイプを作成することはできません。常に最初にテーブルを作成し、次に別の手順として Geometry 列を 2 回目に追加する必要があります。

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');
于 2015-04-20T12:31:49.397 に答える