Suite

QGIS Ajouter une couche PostGIS : restreindre à un seul schéma ?


Ma base de données PostGIS principale a 12 schémas (schéma? TNIRN… ), dont certaines ont des tables de mauvaise taille. La base de données est sur localhost, sur ma propre machine.

Pour la plupart, les tables de travail réelles sont dans un schéma ('aa') - et sont au moins 1, et souvent 2 ou 3, ordre[s] de grandeur plus petit que les tables de mauvaise taille.

Chaque fois que je souhaite ajouter une couche PostGIS, leCouche->Ajouter une couche->Ajouter des couches PostGISl'outil me fait attendre pendant (10 minutes) il ajoute chaque.schéma et chaque.colonne.de.géométrie à l'univers de sélection, quand je veux vraiment qu'il s'arrête quand il a fini de charger le schéma 'aa'.

Les meilleures notes à QGIS pour avoir trouvé toutes les géométries dans une base de données assez massive, mais dans le cours normal des choses, je ne m'intéresse qu'à « aa ».

Le nom « aa » est choisi spécifiquement parce qu'il ne chevauche en aucune façon les noms des « gros-moches » shema (schéma? TNIRN). Lorsque j'utilise « Options de recherche » et que je lui dis « Rechercher dans les colonnes » = Schéma pour le terme de recherche « aa », il charge toujours chaque table.

Est-il possible de restreindre le domaine « Ajouter des couches PostGIS » à un seul schéma ? J'ai R'd TFD en vain.

inb4 "avoir une base de données différente pour votre schéma de travail". Pas possible, car il y a beaucoup interaction entre 'aa' et d'autres schémas (schéma? TNIRN) lorsque le travail réel SQL doit être effectué.

Versions : PostgreSQL 9.3.5, PostGIS 2.1.3, QGIS 2.6.1-Brighton.


MISE À JOUR (20170419)

Ici, à l'avenir, la plupart des tâches de complexité relativement faible peuvent être résolues en PENTE (Plusieurs lignes de Python) dans la console Python plutôt que de copier de manière piratée des tables versPublique.

Gardez à l'esprit que si vous copiez des tables, vous devez vous rappeler de copier la table modifiée arrière à son schéma d'origine : plus de choses à retenir toujours une mauvaise chose.

Parce que c'est maintenant le futur, j'obtiens la couche exacte que je veux - quel que soit le schéma - en ouvrant la console Python et en entrant les bons paramètres dansGetArbitraryPostGIS.py, qui ressemble

schema="{schema_name}" table="{table_name}" geom="{geom}" pk="{pk}" where="{filters}" uri = QgsDataSourceURI() uri.setConnection("[h]", "[p]", "[db]", "[u]", "[pw]") uri.setDataSource(schema,table, geom, where,pk_field) uri.setSrid("[4283]") vlayer = QgsVectorLayer(uri.uri(), "{Nom de couche pour QGIS}", "[postgres]") QgsMapLayerRegistry.instance().addMapLayer(vlayer) sinon vlayer.isValid() : affiche 'Couche non chargée', uri. héberger()

{}indique un paramètre spécifique à la couche, et[]indique une variable codée en dur.

Une douzaine de lignes : je peux obtenir une couche dePubliqueplus vite que leAjouter PostGISitinéraire, par

  • ouverture de la console,
  • entrer le requis{}paramètres dans le script, et
  • en appuyant sur « Aller ».

-- Lemalakisdans ma réponse de l'époque des dinosaures tient toujours, lorsque l'on considère la fonctionnalité « native » de QGIS, je vais donc la laisser intacte ci-dessous --

Il semble qu'il ne soit pas possible de restreindreCouche->Ajouter une couche->Ajouter des couches PostGISà un sous-ensemble des schémas (schéma? TNIRN) sauf si ce sous-ensemble estschéma = public. La restriction de ne charger que les tables dans le schéma public, se trouve dans les informations de connexion ("ne regarde que dans le schéma public" case à cocher).

La solution que j'ai trouvée consiste à copier la ou les tables que je souhaite ajouter auPubliqueschéma et restreignez le processus d'ajout de couche à la couche publique.

C'est bien pour mes besoins, car les tables avec les géométries cibles souhaitées sont temporaires… généralement, lorsque je veux ajouter et supprimer des couches rapidement, c'est parce que je veux « glober » les résultats d'un filtrage aspatial avant de l'implémenter sur le plus grand ensembles de données.

Évidemment, pour les tables qui vont être permanentes, ce n'est pas une très bonne option - mais pour un regard rapide et sale, c'est assez bon : réduit le temps de chargement de ~7 minutes à ~8 sec (je n'ai presque rien d'autre que spatial_ref_sys dans monPubliqueschéma).


Voir la vidéo: Qgis: Importer une couche shapefile (Octobre 2021).