bonjour,
je voulais savoir quand lorsque je créé une vue dans PostGIS, je peux automatiquement la référencer dans la table 'geometry columns' ??
merci beaucoup,
cordialement,
Nicolas.
Version imprimable
bonjour,
je voulais savoir quand lorsque je créé une vue dans PostGIS, je peux automatiquement la référencer dans la table 'geometry columns' ??
merci beaucoup,
cordialement,
Nicolas.
bonjour, il me semble que seules les tables sont referencées, à condition d'utiliser la fonction AddGeometryColumn lors de la creation
Bonjour Xavier-Pierre
il est possible de référencer des vues à la main en remplissant tous les champs de la table "geometry_colums" notament le champ "name" correspondant au titre de la vue et dont les type est adéquat (points, lignes polygones).
cela permet d'afficher le résultat de la requête dans n'importe quel SIGclient
(a condition qu'il permette la connexion avec PostGIS)
cependant, il faut le faire à chaque fois à la main (copier coller du nom dans le champs)
une autre possibilité m'a été communiquée pour automatiser cela :
c'est exactement ce que je veux faire, mais je n'ai pas encore testé la solution.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 Ce que tu veux faire c'est à chaque création de vue ajouter dans geometry_columns une nouvelle entrée. C'est-à-dire :Pour faire des insertions automatique on utilise en général des triggers ou le système de «rule» de postgres. Cependant pour ces deux derniers, ce n'est possible que sur des select/insert/update/delete. Donc pas sur les create view. Il reste deux méthodes. A chaque création de view exécuter le insert ci-dessus. deux cas : - la creation de la vue est dans un script, et un copier coller de la ligne ne coute pas grand-chose. - la creation de la vue est faite de façon interactive. Dans ce cas si pgadmin est utilisé, une bonne astuce est de créer trois macros (pour les trois types de geometrie) telles que :Code:
1234 insert into geometry_columns (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type") values('', 'public', 'tablename', 'the_geom', 2, 27582, 'POINT');
Il suffit ensuite de sélectionner dans la fenêtre de requête le nom de la table/vue et de lancer la macro. La seconde méthode est de créer un trigger sur l'insert dans la table système des vues (pg_views), qui appellera une procédure stockée réalisant l'insertion ci-dessus. mais je doute que ce soit une bonne idée, car cela s'appliquera dans tous les cas de création de vue. Rarement une bonne chose que de toucher aux tables système autrement qu'en lecture seule. Bon courage, VincentCode:
1234 insert into geometry_columns (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type") values ('', 'public', '$SELECTION$', 'the_geom', 2, 27582, 'POINT');
il y a cependant quelque chose qui me chiffonne, $SELECTION$ est bien une variable ?
faut-il la déclarer? comment faire?
merci beaucoup,
cordialement,
Nicolas
Bonjour à tous,
Je reviens à ce post car ça faisait un petit moment que je ne travaillais plus sur le problème.
Pour référencer la vue automatiquement, l'explication de Vincent doit être claire pour les connaisseurs. cependant pour "ceux qui s'y mettent" comme moi, je vais préciser un peu la manipulation que propose Vincent.
Avec PgAdmin, il suffit d'aller dans le panneau SQL
et dans le menu "macros", cliquez "gérer les macros".
Choisir les touches de raccourcis que vous préférez et donner un nom.
ensuite il faut mettre la requête que propose Vincent :
si les géométries des objets de la vue sont des points, comme le dit Vincent, on peut en enregistrer plusieurs selon le type de géométrie des vues que l'on référencera dans la table "geometry columns"Code:
1
2
3
4 insert into geometry_columns (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type") values ('', 'public', '$SELECTION$', 'the_geom', 2, 27572, 'POINT');
1 fois que la macro est enregistrée, on créé notre vue :
Une fois la vue réalisée avec succès, rester dans le panneau SQL et sélectionner simplement le titre de la vue soit "test" dans notre et dans le menu "macros", cliquer sur la macro correspondant aux géométries de la vue.Code:create view test as select...
c'est le texte que l'on sélectionne qui vient remplacer la variable $SELECTION$ de la macro.
il y a normalement un message qui confirme la création d'un identifiant auto incrémenté.
voilà,
j'espère que ça éclaire les novices.
encore merci à Vincent et tous les retours qu'on à sur les forums.
à bientôt,
cordialement,
Nicolas