CREATE TABLE AS com geometria em SpatiaLite

Oct 28 2020

Eu gostaria de criar uma nova tabela SpatiaLite baseada em um comando.

Por exemplo, eu gostaria de transformar uma mesa em um sistema de coordenadas diferente:

SELECT Transform(Geometry, 3068) FROM points_berlin;

Para criar uma nova tabela, eu faria isso no PostGIS:

CREATE TABLE points_berlin_3068 AS
SELECT Transform(Geometry, 3068) FROM points_berlin;

Embora isso crie a tabela e a tabela tenha tantas linhas quanto a tabela de entrada, não é uma tabela espacial. Como faço para que a geometria apareça na nova tabela?

Respostas

8 geozelot Oct 28 2020 at 09:27

SpatiaLite requer que você registre explicitamente colunas de geometria em seu ecossistema (atualizando metadados, adicionando gatilhos) usando as funções de gerenciamento fornecidas ; O SQLite não suporta detecção automática como o sistema modificador de tipo PostgreSQLs .

Tendo criado uma nova tabela conforme especificou, você deve ser capaz de 'habilitá-la espacialmente' com

SELECT RecoverGeometryColumn('points_berlin_3068', 'geometry', 3068, 'POINT', 'XY');