Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Wed 21 January 2009 06:35

tta
Participant occasionnel
Lieu: Montréal
Date d'inscription: 4 Oct 2005
Messages: 39

QGIS : Jointure spatiale et requête entre deux tables

Bonjour,

J'aimerai savoir s'il est possible de faire une jointure spatiale de deux tables (couches) ou faire une requête sur deux tables en utilisant QGIS ??? Je cherche désespérément à accomplir ces deux actions sous QGIS version 1.0 Kore sous Ubuntu, mais en vain. J'ai  essayé de regarder une solution du côté du trio Qgis, PostgreSQL/PostGIS, je n'ai malheureusement pas trouvé d'exemples.

Quelqu'un pourrait-il m'aiguiller vers des pistes??? Existent-ils des solutions par rapport à cette problématique???

Merci d'avance

Cordialement.

Hors ligne

 

#2 Wed 21 January 2009 09:25

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9853
Site web

Re: QGIS : Jointure spatiale et requête entre deux tables

Bonjour,

As tu testé le plugin "tools" (ancien fTools). Celui-ci permet de faire beaucoup de chose dont des jointures spatiales wink

http://georezo.net/wiki/main:geolibre:q … ins:ftools

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Wed 21 January 2009 10:10

jmz
Participant actif
Lieu: Anthon
Date d'inscription: 5 Sep 2005
Messages: 142

Re: QGIS : Jointure spatiale et requête entre deux tables

Bonjour tout le monde,

Yves, pour compléter, j'ai testé cette fonction du plugin FTools avec succès.

-> On peut même faire une jointure entre 1 layer postGIS et 1 layer Shape ou MapInfo
-> Le résultat est exporté dans un nouveau Shapefile

Autre solution, requêter PostGIS via SQL (console SQL standard) pour créer ta jointure (on peut faire un CREATE TABLE AS ... pour obtenir une table résultante), et ensuite afficher la table de manière classique dans Qgis.

Jmz.

Hors ligne

 

#4 Wed 21 January 2009 19:54

tta
Participant occasionnel
Lieu: Montréal
Date d'inscription: 4 Oct 2005
Messages: 39

Re: QGIS : Jointure spatiale et requête entre deux tables

Bonjour à vous deux,

Merci pour vos deux réponses respectives, rapides de surcroît, je vous avoue que je suis soulagé de savoir que des solutions existent à mon problème, car j'étais un peu inquiet à l'idée de savoir qu'il n'existait pas de solution à mon problème, car j'ai proposé une solution alternative à une petite municipalité qui voulait implanter un mini SIG bureautique basé sur les solutions Open Source.  En fait, comme le dit bien l'adage "il y a toujours une solution à tout problème..." big_smile J'ai alors proposé le tryptique QGIS PostgreSQL_PostGIS. Et lorsque la question m'était posée à savoir la possibilité de créer des requêtes et des jointures spatiales entre plusieurs tables, je ne trouvais pas la façon de le réaliser sous QGIS. Cependant, je ne doutais pas qu'il devrait avoir une solution du côté serveur entre PostgreSQL/PostGIS et le client QGIS, malheureusement je n'arrivais pas à le faire.

Ceci étant, JMZ pouvez-vous me fournir un exemble de syntaxe sql complète qui permet de créer une jointure entre deux tables à partir du requêteur PostGIS via la console SQL sous QGIS ??? J'ai consulté la doc de QGIS, mais je ne trouve pas d'exemple relié à la jointure spatiales entre deux tables en utilisant le requêteur PostGIS via la console SQL.

Yves, j'ai chargé le plugin Tools qui est maintenant accessible via le gestionnaire de plugin dans QGIS, par contre, il ne me restev qu'à le tester avec mes jeux de données et je vous en donnerai des nouvelles...

Merci encore à vous pour vos pistes.

Cordialement

Tahir

Hors ligne

 

#5 Thu 22 January 2009 09:50

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9853
Site web

Re: QGIS : Jointure spatiale et requête entre deux tables

Tahir

tta a écrit:

En fait, comme le dit bien l'adage "il y a toujours une solution à tout problème..." big_smile


Moi je préfère dire : "S'il n'y a pas de solution, c'est qu'il n'y a pas deproblème" Les Shadocks.

Bon travail sur QGIS,

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#6 Thu 22 January 2009 10:33

jmz
Participant actif
Lieu: Anthon
Date d'inscription: 5 Sep 2005
Messages: 142

Re: QGIS : Jointure spatiale et requête entre deux tables

Bonjour,

Tout dépend de ce que vous voulez faire comme requête ? Le principal est de lancer la requête SQL à postGIS (soit directement dans une console de PostGIs ou via l'interface PgAdmin, ou un autre client, ou encore via un plugin Qgis qui permet d'attaquer PostGIs avec du SQL : PyPostGIS, ...).

exemple :

J'ai une table PostGIS des bâtiments, et une table des piétons qui se promènent. A un moment T je veux savoir quel est le nombre de piétons à l'intérieur de chacun des bâtiments. Je lance donc la requête qui me ramène le noms des bâtiments (champs data) sur une colonne et le nombre de piéton sur une seconde colonne :

Code:

select (select COUNT(*) FROM pietons)-count(p.data) AS nombre_de_personnes,b.data AS batiment
from batiments b, pietons p 
where not contains(b.the_geom,p.geom)
group by b.data order by b.data;

Je peux également créer une nouvelle table résultante en ajoutant CREATE TABLE AS avant mon ordre SQL :

Code:

create table resultat as 
select (select COUNT(*) FROM pietons)-count(p.data) AS nombre_de_personnes,b.data AS batiment
from batiments b, pietons p 
where not contains(b.the_geom,p.geom)
group by b.data order by b.data;

Ou encore, je peux mettre à jour un champs 'nb_pietons' de ma table des bâtiment :

Code:

update batiments bat set nb_pietons = 
( 
select (select COUNT(*) FROM pietons)-count(p.data) from pietons p,batiments b where 
not contains(b.the_geom,p.geom)
and
bat.data = b.data
group by b.data
)

Si vous voulez d'autres exemples adaptés à votre problématique, allez plutôt chercher dans la doc de PostGIS, ou encore les tutoriels PostGIS de Mr Techer disponibles sur le web - desquels j'ai tiré l'exemple ci-dessus.

Cordialement

Jmz

Hors ligne

 

#7 Thu 22 January 2009 17:36

tta
Participant occasionnel
Lieu: Montréal
Date d'inscription: 4 Oct 2005
Messages: 39

Re: QGIS : Jointure spatiale et requête entre deux tables

Bonjour à vous,

Yves, j'ai testé la jointure des deux couches en shapefile en utilisant l'extension Tools et ça marche nickel... Merci

Je remercie également JMZ pour ses trois exemples de commandes que j'ai hâte de tester et merci `également pour les références reliés aux exemples de jointure spatiales entre deux couches.

Merci encore


Cordialement

Hors ligne

 

Pied de page des forums

Powered by FluxBB