Une console SQL dans QGIS

22

Je sais que QGIS est livré avec sa calculatrice de terrain, ce qui n'est pas mal. Il est également livré avec ftools qui permet plusieurs opérations sur la géométrie et les attributs. Mais nous avons souvent besoin de plus de contrôle et je n'ai vu aucun outil pratique dans QGIS pour effectuer de telles opérations (où vous pouvez sélectionner des champs dont vous avez besoin par exemple ou effectuer des opérations arithmétiques sur eux tout en faisant une requête spatiale).

En gros, je voudrais savoir si une console SQL (une sorte de fenêtre Mapinfo mapbasic) est sur la feuille de route de QGIS et si ce n'est pas le cas, il serait difficile de la coder en plugin. S'il existe encore, faites-le moi savoir, je l'ai manqué! ;-)

simo
la source
4
Cela ne semble pas vraiment être une bonne question pour ce site. Il serait préférable de mettre les développeurs QGIS sur l'une de leurs listes de diffusion. Une meilleure question pourrait demander comment faire une chose spécifique ou obtenir un certain résultat avec QGIS. Les questions sur les fonctionnalités prévues deviendront inutiles et inutiles ou même erronées avec le temps.
Sean
1
FastSQL est génial! Surtout que vous pouvez remplacer immédiatement le calque que vous regardez. Cela ajoute une puissance extraordinaire à QGIS connecté à PostGRES. Cependant, j'ai trouvé un problème, c'est l'utilisation des opérateurs spatiaux. Je peux effectuer des requêtes SQL de base dans FastSQL, mais aucune des requêtes spatiales pour. Par exemple, cette requête fonctionne simplement dans le plugin DB Manager: sélectionnez * dans les zones humides, les bassins versants où st_intersects (wetlands.geom, watersheds.geom) mais, lorsque je l'essaye dans FastSQL, il dit que ce n'est pas une couche valide et ne peut pas être ajouté à la carte. Je pense qu'il y a quelque chose de pr
J'ai passé beaucoup de temps à trouver le moyen de le faire dans QGIS 2.0. La plupart des réponses ici et sur Google sont obsolètes. @Simo: Pouvez-vous vérifier la réponse de HeyOverThere comme la meilleure réponse? Il sera plus facile pour les prochains lecteurs de trouver la nouvelle réponse correcte.
Nicolas Boisteault
Ceci est fait (avec un commentaire supplémentaire)
simo
Pouvez-vous nous dire pourquoi la réponse ne vous satisfait pas complètement?
Nicolas Boisteault

Réponses:

10

Le nouveau plugin DB Manager est désormais une partie standard de QGIS à partir de la version 1.8. Il a la saisie semi-automatique, la coloration syntaxique et vous pouvez ajouter des couches créées à partir d'une requête spatiale à votre carte.

Dans 1.9 (la version de développement pour 2.0) DB Manager ajoute des fonctions d'import / export qui sont assez pratiques.

HeyOverThere
la source
Je ne suis pas satisfait de cette réponse parce que je cherchais un intégré outil qui fonctionne quel que soit le format de données est, mais comme @ Nicolas-Boisteault dit, accepter cette réponse peut mettre d' autres personnes dans la bonne direction. J'espere!
simo
10

Le plugin RT Sql Layer peut faire ce que vous voulez (mais ce n'est pas une console).

entrez la description de l'image ici

Vous pouvez également utiliser la console python: 'PostGIS' select 'instruction as vector layer in QGIS'

obscur
la source
Merci underdark. Je connais également ce plugin mais il repose sur l'utilisation de la couche Postgis. En fait, j'aimerais avoir un outil qui ne dépend pas du format d'entrée (comme le propose orbisgis, voir agemen post)
simo
3
Je vois. Je n'ai pas entendu parler de tels plans. Peut-être qu'un plugin qui utilise spatialite en arrière-plan pourrait être une approche. Cela pourrait être un sujet pour Google Summer of Code.
underdark
Dois-je ajouter moi-même une demande sur qgis.org/wiki/Google_Summer_of_Code_2011 ? Je ne suis pas sûr de ne pas pouvoir créer de compte sur la page wiki de gqis.
simo
Vous pouvez demander sur la liste de diffusion des utilisateurs un compte wiki. (Nous avons eu des problèmes de spam.) En même temps, vous pouvez demander l'avis d'autres utilisateurs / développeurs sur le sujet.
underdark
1
@Nathan> Nice, vous suivez ce post. Je devrais vraiment soumettre l'idée sur la liste des développeurs qgis (sauf si vous l'avez déjà fait?). L'utilisation d'un SQL standard pour interroger n'importe quel type de données est tout simplement fantastique (voir orbisgis ).
simo
7

un nouveau plugin est disponible: Fast SQL Layer.
Il ouvre une console SQL ancrée avec surlignage de code.

Pablo
la source
1
très cool, un bon début! Remarque: dépend des pygments (donc pour les utilisateurs d'OSGeo4W, il y a quelques étapes manuelles pour construire / installer cela)
Mike T
1
Oui, pour l'instant la solution est de copier les pygments dans le dossier site-packages des instalations osgeo4w. Ça a marché pour moi. Bientôt, je publierai une version mise à jour pour résoudre ce problème.
Pablo
1
J'ai téléchargé et extrait Pygments-1.4.tar.gz, puis dans un shell OSGeo4W dans le Pygments-1.4répertoire, tapez python setup.py buildalorspython setup.py install
Mike T
2

Je ne connais pas un tel outil dans QGIS. Un autre logiciel SIG open source offre cependant de telles capacités, nommé OrbisGIS: http://www.orbisgis.org

Malheureusement, comme l'un est écrit en C ++ et l'autre en Java, il serait certainement difficile de les lier ... :-(

Agemen
la source
En fait, je suis aussi un utilisateur orbisgis (je suis un ancien étudiant STEU) ;-) -passer de l'un à l'autre ... et je pense que votre console SQL est si efficace que j'aimerais avoir la même chose sur qgis ( J'ai mentionné mapbasic dans ma question car c'est plus connu!). Orbisgis permet un contrôle complet via la console SQL mais cela peut prendre du temps pour effectuer certaines opérations de base. À l'opposé, Qgis est conçu pour effectuer facilement certaines opérations de base mais rend plus difficile les opérations de contrôle complet.
simo
Je comprends ce que vous voulez dire ... Heureusement, la dernière version d'OrbisGIS ajoute la saisie semi-automatique dans la console SQL. Et nous travaillons pour ajouter la possibilité d'effectuer des opérations de base en dehors de la console SQL.
Agemen