QGIS Il n'y a pas d'entrée dans geometry_columns!

8

Dans PostgreSQL v9.3 avec les extensions PostGIS v2.1, j'ai créé une vue à partir de deux tables (sites et visites). La table de site contenait une colonne de géométrie de point (the_geom), qui était incluse dans la vue créée. En vérifiant la vue du tableau, il contenait les informations attendues.

Dans QGIS v2.4 fonctionnant sous Windows 8.1, la table des sites contenant la colonne de géométrie peut être ajoutée en tant que couche. Cependant, lorsque vous regardez la table de vue créée dans DB Manager, elle indique:

PostGIS

Colonne: the_geom Géométrie: GÉOMÉTRIE Dimension: 2 Étendue: 482350.00000, 132750.00000 - 538750.00000, 177150.00000

 Il n'y a pas d'entrée dans geometry_columns!

L'onglet tableau montre le contenu du tableau comme prévu et l'aperçu montre les points qui semblent raisonnables. L'icône de la table de visualisation est représentée par un point d'interrogation.

Lorsque la vue a été créée pour la première fois, elle ne pouvait pas être ajoutée en tant que couche à la carte. Cependant, le redémarrage de mon ordinateur a permis d'ajouter la vue en tant que couche à la carte.

Deux questions:

  1. Que signifie le message d'erreur et comment puis-je m'en débarrasser?
  2. Pourquoi ai-je dû redémarrer mon ordinateur pour ajouter la table de visualisation à la carte?
Harry
la source

Réponses:

10

Je viens donc de rencontrer ce problème exact - et posé les mêmes questions. Je ne suis pas sûr de la question numéro 2, à part un pressentiment que le serveur a dû redémarrer pour enregistrer les types de données sans les contraintes PostGIS appliquées (la colonne geometry_column est manquante et tout).

J'ai trouvé ce post, qui fonctionnait sur mes tables qui avaient exactement les mêmes points d'interrogation et les mêmes erreurs que les vôtres. J'ai réussi cela:

WITH
t AS (SELECT table_schema, table_name
                FROM information_schema.tables
                WHERE table_schema = 'public' AND table_type = 'BASE TABLE')
SELECT Populate_Geometry_Columns((table_schema::text || '.' || table_name::text)::regclass) FROM t;

Les tables sont enregistrées avec leurs contraintes spatiales de manière appropriée, donc tout est beau et propre!

Sam
la source