Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Thu 04 February 2021 18:54
- Sram
- Participant occasionnel
- Lieu: NIORT
- Date d'inscription: 12 Jan 2009
- Messages: 49
[MI 12.5] Problème découpe de lignes par des polygones
Bonjour tout le monde,
Je n'avais pas posté ici depuis un paquet d'années mais je me retrouve devant un problème insoluble qui monopolise mon cerveau depuis plusieurs jours alors me revoilà à faire appel à cette sympathique communauté qui m'a beaucoup aidé pendant mes premières années de pratique des SIG
Je vous expose mon problème :
Je suis en possession de 2 tables :
- une table composée de lignes représentant des haies
- une table composée de polygone représentant un tampon de 10 mètres autour de parcellaires agricoles (à noter : ces polygones peuvent parfois se chevaucher)
Ce que je veux faire semble très simple : découper mes haies en fonction de tous mes polygones. Le but final étant de pouvoir sélectionner chacun des tronçons de haies présents dans chaque polygone, et notamment dans le cas de superposition de polygone (parcellaire d'un exploitant A et parcellaire d'un exploitant B), pouvoir sélectionner le tronçon uniquement dans le polygone de l'exploitant A + le tronçon à la fois dans le polygone de l'exploitant A et dans le polygone de l'exploitant B afin d'avoir la longueur totale de la haie présente dans le polygone de l'exploitant A, et pouvoir sélectionner le tronçon uniquement dans le polygone de l'exploitant B + le tronçon en commun avec l'exploitant A, afin d'avoir la longueur totale de la haie présente dans le polygone de l'exploitant B.
Ce que j'ai tenté pour le moment c'est tout simplement de sélectionner ma table "haies" -> définir cible -> sélectionner ma table "parcellaires" -> Découper.
Cela paraissait assez simple et le résultat semblait bon à première vue mais en y regardant de plus près je me suis rendue compte que dans le cas d'une superposition de 2 polygones, la découpe se faisait bien (youpi !), mais dans le cas d'une superposition de plus de 2 polygones (3, 4 voir 5 dans certains cas rares) ça ne suit plus (catastrophe...) : la haie se découpe bien selon certains polygones, mais pas selon tous... ce qui fait qu'ensuite quand je sélectionne mes tronçons en fonction de mes polygones je me retrouve parfois avec des longueurs en trop. A l'échelle de toutes mes données haies, cela concerne peu de cas donc ça pourrait éventuellement être négligé mais quand même ça me rend dingue de ne pas arriver simplement à découper des (foutues) lignes selon des (foutus) polygones...
Est-ce que j'ai loupé qqchose dans ma procédure ? Y'a t'il une autre manipulation à faire pour contourner ce problème et arriver au résultat voulu ?
Je vous remercie d'avance de toutes les aides/suggestions que vous pourrez m'apporter à ce sujet et vous souhaite une bonne soirée
Marceline
Hors ligne
#2 Thu 04 February 2021 19:07
- Pascal Boulerie
- Participant assidu
- Lieu: France
- Date d'inscription: 12 Sep 2005
- Messages: 2951
- Site web
Re: [MI 12.5] Problème découpe de lignes par des polygones
Une idée comme ça, avez-vous un QGis installé sur votre poste ??
« L'État est désormais quasi déliquescent. » (José Cohen-Aknine, ingénieur X-Ponts, IGPEF, dans Déliquescence et renaissance de l'État.)
Hors ligne
#3 Thu 04 February 2021 23:46
- Sram
- Participant occasionnel
- Lieu: NIORT
- Date d'inscription: 12 Jan 2009
- Messages: 49
Re: [MI 12.5] Problème découpe de lignes par des polygones
Mon collègue a QGis sur son poste, on a testé plusieurs trucs mais on est arrivé à rien de concluant non plus... du coup si vous avez une idée de comment faire sur QGis je suis preneuse aussi !
Hors ligne
#4 Fri 05 February 2021 07:45
- Pascal Boulerie
- Participant assidu
- Lieu: France
- Date d'inscription: 12 Sep 2005
- Messages: 2951
- Site web
Re: [MI 12.5] Problème découpe de lignes par des polygones
Je suis encore dans mon lit, je n’ai pas de logiciel sous la main.
Si vous pouvez poster un schéma, ce sera plus facile à comprendre.
C’est une problématique de trame verte ou trame bleue ?
ou de BCAE ?
(ne connais pas le domaine)
Ça me semble un calcul classique d’intersection entre 2 couches SIG.
Peut-être déjà d’autres personnes ont traité ce genre de situation ?
https://georezo.net/forum/search.php
« L'État est désormais quasi déliquescent. » (José Cohen-Aknine, ingénieur X-Ponts, IGPEF, dans Déliquescence et renaissance de l'État.)
Hors ligne
#5 Fri 05 February 2021 07:48
- Pascal Boulerie
- Participant assidu
- Lieu: France
- Date d'inscription: 12 Sep 2005
- Messages: 2951
- Site web
Re: [MI 12.5] Problème découpe de lignes par des polygones
Autre idée :
Faire les zones tampons autour des haies ? (au lieu des parcelles de champs)
Dit autrement : quel est le problème qui se pose ? Quel est le résultat recherché ? À quoi servira cette statistique ?
(et : le problème est-il bien posé ?)
Dernière modification par Pascal Boulerie (Fri 05 February 2021 07:51)
« L'État est désormais quasi déliquescent. » (José Cohen-Aknine, ingénieur X-Ponts, IGPEF, dans Déliquescence et renaissance de l'État.)
Hors ligne
#6 Fri 05 February 2021 08:30
- nicoboud
- Membre
- Lieu: Nantes
- Date d'inscription: 12 Oct 2007
- Messages: 860
Re: [MI 12.5] Problème découpe de lignes par des polygones
Bonjour,
Plutôt que découper, ne serait-il pas plus facile de faire la somme des longueurs de polylignes (haies) intersectant chaque polygone (parcelle avec tampon).
Une sélection SQL devrait faire cela facilement, du type :
Code:
SELECT parcelle_numéro, sum(proportionoverlap(haie.obj,parcelle.obj)*longueur_haie) FROM parcelle,haie WHERE parcelle.obj intersects haie.obj GROUP BY parcelle_numero
Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS
Hors ligne
#7 Fri 05 February 2021 11:14
- Sram
- Participant occasionnel
- Lieu: NIORT
- Date d'inscription: 12 Jan 2009
- Messages: 49
Re: [MI 12.5] Problème découpe de lignes par des polygones
Je suis encore dans mon lit, je n’ai pas de logiciel sous la main.
Si vous pouvez poster un schéma, ce sera plus facile à comprendre.
C’est une problématique de trame verte ou trame bleue ?
ou de BCAE ?
(ne connais pas le domaine)
Ça me semble un calcul classique d’intersection entre 2 couches SIG.
Peut-être déjà d’autres personnes ont traité ce genre de situation ?
https://georezo.net/forum/search.php
Je viens de faire un petit schéma vite fait pour exposer la problématique (cf pièce jointe), effectivement ça sera peut-être plus clair que de longues explications... du coup dans la situation présentée dans le schéma, j'ai ma haie en noir au milieu et je veux la découper en plusieurs tronçons selon le polygone bleu et le polygone violet (là où j'ai mis les croix en rouge), pas de découpe selon le polygone orange vu que la haie y est entièrement incluse. Et donc le problème c'est que quand je fais ma découpe en faisant : sélection "table haies" -> définir cible -> sélection "table parcellaires" -> découper, le résultat est que ma haie est découpée à certains endroits mais pas à d'autres : dans le cas du schéma présentée ma haie est découpée seulement à un des 2 endroits prévus.
Effectivement ça semble être un problème classique d'intersection entre 2 couches SIG et je pensais vraiment pas que ça serait aussi compliqué d'arriver à un résultat satisfaisant. J'ai fait une recherche sur le forum avant de poster et je n'ai malheureusement pas trouvé de problématique similaire ayant déjà été traité.
Concernant la finalité de ce travail : il s'agit de calculer une densité de haie par parcellaire. Ma première idée avait été de tout simplement calculer les longueurs de haies en intersection avec chaque parcellaire, avec une sélection SQL dans le genre de celle proposée par nicoboud dans le message précédent. ça avait très bien fonctionné comme ça. Ensuite je divisais la longueur totale de haies présente dans chaque parcellaire par la surface du parcellaire et ça me donnait ma densité.
Cependant le protocole établi par l'AFAC demande de traiter différemment les haies intraparcellaires (à l'intérieur du parcellaire d'un exploitant donc présente dans un seul polygone) et les haies interparcellaires (entre 2 parcellaires ou plus donc présentes dans 2 polygones ou plus). Du coup, j'ai procédé ainsi :
- découpe de mes lignes haies selon tous les polygones parcellaires
- ajout d'une colonne "longueur tronçons" et mise à jour de cette colonne
- requête SQL pour sélectionner les tronçons de haies présents dans chaque parcellaire
- enregistrement de la table obtenue, ajout d'une colonne "id_pac" compilant l'identifiant de la haie + l'identifiant du parcellaire.
- regroupement selon cette colonne "id_pac" afin de regrouper les lignes concernant une même haie (une haie qui sort du parcellaire, puis y rentre à nouveau apparait dans ce cas sur 2 lignes différentes, l'idée est que chaque haie n'apparaisse qu'une seule fois dans chaque parcellaire) et en faisant la somme de la colonne "longueur tronçon"
- je me retrouve avec une table comportant bien des identifiants "id_pac" uniques mais où l'identifiant de la haie peut apparaitre plusieurs fois en fonction du nombre de parcellaires qu'elle recoupe
- à partir de là j'exporte sur excel afin de caractériser chaque haie selon si elle est intra ou interpacellaire. Pour ce faire, je regarde si chaque identifiant haie apparait une seule fois (présent dans un seul parcellaire = haie intraparcellaire) ou 2 fois ou plus (présent dans plusieurs parcellaires = haie interparcellaire), ensuite à l'aide d'un tableau croisé dynamique je calcule la longueur de chacun des 2 types de haies pour chaque parcellaire. Et pour finir il y a une formule à appliquer pour calculer la densité de haies par parcellaire avec des coefficients qui interviennent différemment selon le type de haie.
Du coup, comme il y a un problème avec le découpage de mes tronçons et que certains ne sont pas découpés convenablement, certaines longueurs de mes haies interparcellaires sont sur-évaluées et cela fausse donc mon calcul. Il semblerait que ce problème de découpe arrive à partir du moment où il y a plus de 2 parcellaires qui se superposent donc dans une faible proportion à l'échelle globale des données donc ça pourrait éventuellement être négligeable si le problème reste insoluble... mais j'aimerai mieux que ça fonctionne !
Voilà j'espère que j'ai été assez claire dans mes explications pour mieux vous exposer le problème
Dernière modification par Sram (Mon 08 February 2021 14:41)
Hors ligne