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 Tue 17 March 2009 13:01

snaileater
Participant actif
Date d'inscription: 5 Nov 2008
Messages: 121

"Overlap" linéaire sur surfacique ...

Bonjour,

j'ai une question Mapinfo sur un besoin a priori "basique" mais que je n'arrive pas à résoudre pour le moment : Je cherche à calculer la façon dont un linéaire (par ex. "cours d'eau"...) se répartit par rapport à une couche surfacique (par ex. "communes" de mon département) ...

Cela est-il possible facilement ?

Je voulais utiliser les fonction ProportionOverlap de Mapinfo mais manifestement cela ne semble applicable que pour des objets surfaciques.

Comment procéder dans mon cas de figure ?

Merci d'avance.

Hors ligne

 

#2 Tue 17 March 2009 13:54

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: "Overlap" linéaire sur surfacique ...

Bonjour
Pas de surface pour les lignes, polylignes et points...et ce dans n'importe quel SIG !!
Donc il faut soit se cantonner aux longueurs, soit, si on tient aux surfaces, transformer le cours d'eau en polygone (en créant un tampon)
A vous de voir en fonction de votre besoin précis

Hors ligne

 

#3 Tue 17 March 2009 14:57

olivier Ad
Juste Inscrit !
Date d'inscription: 3 Jan 2006
Messages: 5

Re: "Overlap" linéaire sur surfacique ...

Pour avoir la longueur de chaque portion du cours d'eau traversant chaque commune :
1- utiliser l'outil "découper" pour l'objet cours d'eau avec l'ensemble des polygones représentant les communes
2- affecter l'identifiant de chaque commune (nom, n°INSEE) dans une nouvelle colonne de la table du cours d'eau (Mise à jour Table avec une jointure de type géographique)
3- mettre à jour un champ longueur avec la fonction CartesianObjectLen
Puis calculer la proportion si c'est ce qui vous intéresse.

Hors ligne

 

#4 Tue 17 March 2009 18:24

snaileater
Participant actif
Date d'inscription: 5 Nov 2008
Messages: 121

Re: "Overlap" linéaire sur surfacique ...

Je ne m'attendais pas à ce qu'une ligne ait jamais une surface ... mais aucun logiciel de SIG n'est capable de répondre rapidement à cette question ... qui parait si basique d'un point de vue géométrique ?
ça m'interpelle un peu ...

Dernière modification par snaileater (Tue 17 March 2009 18:31)

Hors ligne

 

#5 Tue 17 March 2009 18:31

snaileater
Participant actif
Date d'inscription: 5 Nov 2008
Messages: 121

Re: "Overlap" linéaire sur surfacique ...

Si je fais un tout petit tampon autour du réseau hydrographique ... le ratio que va me retourner ProportionOverlap sera quasiment ce que je veux trouver (proportion du linéaire traversant chaque commune) ... ? La seule source d'erreur sera les extrémités des tronçons ... je suppose ?

Et par contre si je teste l'autre méthode ... ou trouve-t-on l'outil "découper" ?

Hors ligne

 

#6 Tue 17 March 2009 19:50

hanczyk
Participant assidu
Lieu: Châlons-en-Champagne
Date d'inscription: 21 Apr 2006
Messages: 596

Re: "Overlap" linéaire sur surfacique ...

Bonjour,

vous pouvez entre autre essayer cet outil


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Jean-Marc Hanczyk

Hors ligne

 

#7 Tue 17 March 2009 20:03

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: "Overlap" linéaire sur surfacique ...

Puisqu'on sait qu'une ligne n'a pas de surface...intéressons nous à sa longueur:
- soit en découpant: menu Objets->Découper
- soit directement par une requête (ici au format FMB):

select communes.code, objectlen(overlap(coursdeaux.obj, communes.obj), "km") "longueur" from coursdeaux, communes where coursdeaux.obj intersects communes.obj


Affiche une table des codes communes avec la longueur en km de chaque intersection avec coursdeaux

select communes.code, coursdeaux.ID, sum(objectlen(overlap(coursdeaux.obj, communes.obj), "km")) "longueur" from coursdeaux, communes where coursdeaux.obj intersects communes.obj order by communes.code group by communes.code, coursdeaux.ID


Affiche une table avec le code commune, l'identifiant du cours d'eau, la longueur cumulée par commune et identifiant du cours d'eau

Le tout, à lire impérativement (!), ... se trouve ici, en particulier dans l'Addendum du 17 décembre 2002

Dernière modification par Maurice (Tue 17 March 2009 20:04)

Hors ligne

 

#8 Tue 17 March 2009 20:31

Daniel
Membre
Lieu: Victoriaville, Québec
Date d'inscription: 6 Sep 2005
Messages: 2028

Re: "Overlap" linéaire sur surfacique ...

snaileater a écrit:

Je ne m'attendais pas à ce qu'une ligne ait jamais une surface ... mais aucun logiciel de SIG n'est capable de répondre rapidement à cette question ... qui parait si basique d'un point de vue géométrique ?
ça m'interpelle un peu ...


Salut
Pour ajouter à la compréhension, est-ce qu'un point a une superficie?  D'un point de vue géographique, NON.  Mais un point peut très bien être une tête d'épingle, un poteau électrique, une piscine...  Là, la notion d'échelle entre en jeu.
Une ligne.  D'un point de vue géographique, c'est un segment relié par 2 points.  Donc, il n'y a pas de superficie.  Seulement, encore avec la notion d'échelle, votre cours d'eau a une superficie sur le terrain mais la cartographie à une certaine échelle il n'y en a pas.  Votre solution est donc bonne mais ne reflète pas la réalité.

Daniel


De retour à la géomatique

Hors ligne

 

#9 Wed 18 March 2009 18:44

snaileater
Participant actif
Date d'inscription: 5 Nov 2008
Messages: 121

Re: "Overlap" linéaire sur surfacique ...

Maurice a écrit:

Puisqu'on sait qu'une ligne n'a pas de surface...intéressons nous à sa longueur:
- soit en découpant: menu Objets->Découper
- soit directement par une requête (ici au format FMB):

select communes.code, objectlen(overlap(coursdeaux.obj, communes.obj), "km") "longueur" from coursdeaux, communes where coursdeaux.obj intersects communes.obj


Affiche une table des codes communes avec la longueur en km de chaque intersection avec coursdeaux

select communes.code, coursdeaux.ID, sum(objectlen(overlap(coursdeaux.obj, communes.obj), "km")) "longueur" from coursdeaux, communes where coursdeaux.obj intersects communes.obj order by communes.code group by communes.code, coursdeaux.ID


Affiche une table avec le code commune, l'identifiant du cours d'eau, la longueur cumulée par commune et identifiant du cours d'eau

Le tout, à lire impérativement (!), ... se trouve ici, en particulier dans l'Addendum du 17 décembre 2002


Ah ... voila LA réponse à ma question ... je ne connaissais pas cet "overlap" (tout court) ... qui donc apparemment retourne un objet ...

Si on peut faire cela directement par requête pourquoi commencer à découper les objets ... hein ?

Et donc en interne Mapinfo est donc bien capable de nous retourner la résultat d'une intersection entre un objet linéaire et un objet surfacique ... ce qui est bien utile ... mais n'a pas de "vrai" sens géométrique ...

;-p

Hors ligne

 

Pied de page des forums

Powered by FluxBB