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

State Of The Map 2024

#1 Mon 06 March 2017 12:51

fnixou
Participant actif
Date d'inscription: 22 Feb 2017
Messages: 82

QGIS: Plantage pendant la création d'une couche virtuelle

Salut à tous je me retrouve face à un problème un peu gênant, en effet quand j'essaye d’exécuter une requête pour créer une couche virtuelle mon QGIS plante ( minidump )
et le message dans le rapport de bug est le suivant : "Le thread a tenté de lire à partir d'une adresse virtuelle ou d'écrire vers une adresse virtuelle pour laquelle il ne dispose pas d'un accès appropriés".

Cela provient surement de la requête que je vous poste également.
J'espère que quelqu'un aura une idée car pour le moment c'est sacrément vide de mon côté

SELECT t3.label ,
SUM(t3.NBHAB) AS TOTHAB
FROM (SELECT t1.label,
area(intersection(t1.geometry, t2.geometry))/area(t2.geometry)*t2.DONNEESP10 as NBHAB
FROM test_fusion AS t1,
test_iris AS t2
WHERE st_intersects(t2.geometry, t1.geometry)) t3
GROUP BY t3.label

Merci d'avance.

Hors ligne

 

#2 Mon 06 March 2017 16:07

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS: Plantage pendant la création d'une couche virtuelle

Bonjour,

pour la fonction st_intersects il faut mettre un alias

WHERE st_intersects(alias1, alias2)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#3 Mon 06 March 2017 16:14

fnixou
Participant actif
Date d'inscription: 22 Feb 2017
Messages: 82

Re: QGIS: Plantage pendant la création d'une couche virtuelle

a moins que je n ai pas bien compris votre réponse mais t1 et t2 sont bien des alias dans ma requête . Si vous pouviez préciser du coup ce que vous souhaitiez  pointer dans la requête je vous en serai gré , car la je suis un poil perdu .

Hors ligne

 

#4 Mon 06 March 2017 17:52

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS: Plantage pendant la création d'une couche virtuelle

OUI OK

mets juste l'alias

Code:

WHERE st_intersects(t2, t1)

et tu es sur que intersection() est une fonction?

Le deuxième SELECT ne serait pas plutôt dans la clause where

Tu devrais utiliser le gestionnaire de base de données pour faire ta requête, la fenêtre sql et l'assistant.

Une requête sur deux tables c'est déjà compliqué mais sur 3 bon courage.

Une requête sur deux tables qui fonctionne si ça peut t'aider.

Code:

SELECT "CouchePoints"."geometry" AS G_CouchePoints,
"CouchePoints"."annee",
"CouchePolygones"."geometry" AS G_CouchePolygones,
"CouchePolygones"."NomCommunes",
Sum("CouchePoints"."Nb") AS SumCouchePoints,
Count("CouchePoints"."geometry") AS CountCouchePoints 
FROM "CouchePoints", "CouchePolygones"
WHERE ST_Within("G_CouchePoints","G_CouchePolygones")
GROUP BY "CouchePoints"."annee", "CouchePolygones"."NomCommunes"
ORDER BY "CouchePoints"."annee" ASC, "CouchePolygones"."NomCommunes" ASC

Dernière modification par michel56 (Mon 06 March 2017 18:58)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#5 Tue 07 March 2017 10:16

fnixou
Participant actif
Date d'inscription: 22 Feb 2017
Messages: 82

Re: QGIS: Plantage pendant la création d'une couche virtuelle

la fonction intersection existe belle et bien elle permet de créer un nouvelle objet a partir de l intersection des objets 1 et 2 si je ne me trompe pas.

A priori non le select est bien dans le from l'idée étant de créer une table 3 à partir de 1 et 2 et d'en extraire la donnée nbhab pour chaque label.

Pour faire simple j'ai 2 couches qui se superposent et j'aimerai calculer la quantité d'habitants dans la seconde couche à partir de mes données dans la première couche.

Merci en tout cas du coup de main.

Dernière modification par fnixou (Tue 07 March 2017 10:16)

Hors ligne

 

#6 Tue 07 March 2017 10:55

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS: Plantage pendant la création d'une couche virtuelle

Bonjour,

intersection() c'est une fonction QGIS qui fonctionne dans une expression.

Dans une requête SQL ?.

Pour tes deux couches, quelle est la relation entre les deux tables.

Dernière modification par michel56 (Tue 07 March 2017 10:56)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#7 Tue 07 March 2017 12:38

fnixou
Participant actif
Date d'inscription: 22 Feb 2017
Messages: 82

Re: QGIS: Plantage pendant la création d'une couche virtuelle

J'utilise l'ajout de couche virtuelle de QGIS mes 2 couches sont des shp donc non contenu dans une quelconque base ( je peux éventuellement les ajouter à un postgre+postgis si nécessaire mais je doute que ça change la donne )

Pour ce qui est de intersection l'ajout de couche virtuelle de Qgis utilise SQLite et spatialite comme moteur et cette fonction est incluse dans Spatialite.

Voilà pour le petit topo j'espère que ça t'aidera.

Hors ligne

 

#8 Tue 07 March 2017 12:58

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS: Plantage pendant la création d'une couche virtuelle

Bonjour

Tu as essayé avec le gestionnaire de base de données et l'assistant.
Dans la liste des fonctions il y bien ST_intersection()


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#9 Tue 07 March 2017 15:07

fnixou
Participant actif
Date d'inscription: 22 Feb 2017
Messages: 82

Re: QGIS: Plantage pendant la création d'une couche virtuelle

C'est ce sur quoi je planche actuellement et j'ai également décomposé ma requête en 2 étapes.
Dans un premier temps je crée ma table T3 et je vais la requêter ensuite (le traitement était surement trop lourd pour QGIS )

Hors ligne

 

#10 Tue 07 March 2017 18:06

fnixou
Participant actif
Date d'inscription: 22 Feb 2017
Messages: 82

Re: QGIS: Plantage pendant la création d'une couche virtuelle

Finalement je suis passé sur postgre j'ai créé mes tables et ma requête ne me fait plus planter qgis mais je me retrouve avec une erreur de topologie sur mes données j'avance mais j'ai vraiment l'impression d'y aller à pas d'escargots.
Enfin bon je finirai bien par réussir :p

Hors ligne

 

Pied de page des forums

Powered by FluxBB