banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 19 February 2018 08:59

tennisfashion
Juste Inscrit !
Date d'inscription: 19 Feb 2018
Messages: 1

QGIS: Vues Virtuelles et vues matérielles

Bonjour,

Je suis entrain d'essayer d'optimiser la création de vues en séries et doit me décider de choisir entre vues virtuelles ou matérielles.
Contexte

Produit : QGIS DESKTOP
Objectif: Création de vues liés à GraceTHD
Source: Des shapes et des CSV (formats obligatoires des livrables GraceTHD)

1) Comment créer en séries des vues virtuelles.
Pour l'instant je peux creer mes vues en prenant l'icônes vues virtuelles et en ecrivant
/*vs_elem_pt_nd*/

SELECT
  *
FROM
  gracethd.t_ptech,
  gracethd.t_noeud
WHERE
  t_ptech.pt_nd_code = t_noeud.nd_code;

Par contre si j'ai 10 vues je suis obligé de les créer une à une  en changeant de nom (vs_element_pt_nd) et le codage associé à chaque fois

2) Dans l'hypothèse de vouloir créer des vues matériels comment faire sans sortir de QgisDesktop ? Est-ce possible. J'aurais biensûr la possibilité de sélectionner tous les enregistrements de chaque vue virtuelles et de les enregistrer dans un shape mais tout cela n'est pas très direct...Pour info,pas de base Postgres/Postgis

Merci pour vos réponses

Dernière modification par tennisfashion (Mon 19 February 2018 13:01)

Hors ligne

 

#2 Wed 28 February 2018 11:04

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: QGIS: Vues Virtuelles et vues matérielles

Bonjour,

Pour scripter ça, il faudra passer par l'API QGIS. Un sujet en parle ici :
https://gis.stackexchange.com/questions … ly-in-qgis

En gros :

Code:

from qgis.core import QgsVectorLayer, QgsMapLayerRegistry

for i in range(10) :
  sql = "SELECT 
    * 
  FROM 
    gracethd.t_ptech, 
    gracethd.t_noeud
  WHERE 
    t_ptech.pt_nd_code = t_noeud.nd_code"
  vlayer = QgsVectorLayer( "?query=%s"%sql, "macouche_%s"%str(i), "virtual" )
  QgsMapLayerRegistry.instance().addMapLayer(vlayer)

Ici, y a la même requête sql. Dans ton cas, elle devra être adaptée. Mais en gros, c'est comme cela que je verrais la chose.


geodata au cerema et petits billets en géomatique

Hors ligne

 

Pied de page des forums

Powered by FluxBB