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 Mon 25 June 2007 17:48

Yohm
Juste Inscrit !
Date d'inscription: 24 Jun 2007
Messages: 2

Techniques et méthodes de calculs dans les SIG

Bonjour,

Je suis étudiant, et suis actuellement des cours de géo-localisation.
Mon sujet est le suivant : 'Gestion de la topologie et algorithme implémenté'.

Ce sujet est vaste, et nous aimerions avoir confirmation de certains choses, et si possible de nouvelles informations.

Il s'agit  "de topologie dans le cadre de la cartographie. Il s'agit de pouvoir effectuer des calculs à partir des différents modèles." (raster, vectoriel)
Nous pensons qu'il s'agit donc d'exposer les algorithmes derrière le  calcul de longueurs, surfaces, distances entre points, points polylignes, points polygones,  ...

Nous avons donc essayé de décomposer le problème selon les objets élémentaires : points, lignes/polylignes, polygônes
En termes de calculs :
    * Pour les longueurs :
Est-ce que c'est possible de le faire en raster ? Par exemple la longueur d'un fleuve, d'une route, ...

En vectoriel, on calcule juste la distance ou somme des distances des segments élémentaires de la droite ou l'arc (pas d'arc à base de courbes genre bézier ou splines dans les SIG, juste des polylignes=ensemble de segments ?)

    * Pour les surfaces :
En raster, cela semble possible de le faire.
Si j'ai bien compris, il suffirait de faire la somme des pixels de la surface, en connaissant la "superficie" d'un pixel (résolution de la rasterisation).
http://www.star.ait.ac.th/~souris/publi … nalyse.pdf (p19)

Apparemment, il existe des algos qui permettent de minimiser l'erreur d'incertitude quand à l'appartenance des pixels de contour à la surface ou non.
La seule référence qu'on ait trouvé à ce sujet pour l'instant est la suivante :
http://www.fao.org/docrep/W7320B/w7320b28.htm

D'autres propositions ?

En vectoriel, nous avons bien trouvé des infos :
http://marques.patrice.free.fr/Projets/ … olret.html
http://www.davidchandler.com/AreaOfAGeneralPolygon.pdf
http://peyo.lost-oasis.net/geomatique.php
http://www.star.ait.ac.th/~souris/publi … nalyse.pdf (p19)
Mais est-ce la seule technique utilisée dans les SIG ?
En connaitriez-vous le nom ?
Nous avons entendu parler d'une méthode à base de segments decrivant le contour à partir du centroïde, mais pas moyen de retrouver le nom. Cela vous dirait-il quelque chose ?


Il y a apparemment aussi une histoire de calcul de plus court chemin.
Pour cela, nous avons entendu parler des interpolations genre Floyd, Djikstra (Mappy) et graphes en général.
http://www.nimbustier.net/publications/ … index.html
http://www.forumsig.org/showthread.php?t=1394
http://www.apprendre-en-ligne.net/graphes/
Une idée de ceux qui sont les plus utilisés dans les SIG ?

Nous avons vaguement entendu parler de Delaunay, Voronoi et de "tampons", de jointures, unions, intersections, mais nous avons du mal à nous rendre compte de leur utilisation concrète dans les SIG pour les calculs (à part peut-être les tampons : dénombrement d'objets dans une zone). Et au niveau algorithmique, savez-vous ce que cela donne globalement ? Est-ce utilisable à la fois pour des raster et du vectoriel ?

Merci d'avoir pris la peine de lire ce message.

Guillaume

Hors ligne

 

#2 Mon 25 June 2007 18:07

Cartosig
Participant assidu
Date d'inscription: 16 Oct 2006
Messages: 222

Re: Techniques et méthodes de calculs dans les SIG

* Pour les longueurs :
Est-ce que c'est possible de le faire en raster ? Par exemple la longueur d'un fleuve, d'une route, ...


En théorie oui ça doit être possible, maintenant je n'ai pas connaissance que personne ne l'ai jamais tenté. Il faudrait un algo qui progresse dans le raster en cherchant des valeurs très proches... Ensuite il faut trouver la distance, si on la rapporte en nombre de pixels il y aura une marge d'erreur importante, donc il faut trouver un système de pondération. En bref l'intérêt d'une telle méthode est plus que discutable.

Hors ligne

 

#3 Mon 25 June 2007 18:34

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3197
Site web

Re: Techniques et méthodes de calculs dans les SIG

Bonjour,

La topologie dans un SIG peut-être vue sous l'angle Arc, Face, Noeud. (pour l'aspect vectoriel).
Une face est composée d'arcs (avec le noeud final de l'arc final qui le noeud initial du premier arc)
Un arc est composé de deux noeuds (initial et final) et éventuellement n sommets.
Un noeud est le point d'intersection d'au moins trois arcs.
En utilisant des fonctions de type EstaGaucheDe, Intersection  il est facile d'implanter des algorithmes pour déterminer par exemple quel est le nombre de "polygone" traversés par une "polyligne". De plus cette méthode de stockage permet d'accélérer l'affichage et de minimiser la taille des données.

Concernant les calculs sur un raster, ceci correspond aux études de vectorisation automatique en cours actuellement.

Christophe


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#4 Mon 25 June 2007 19:06

Yohm
Juste Inscrit !
Date d'inscription: 24 Jun 2007
Messages: 2

Re: Techniques et méthodes de calculs dans les SIG

OK pour les rasters, ça confirme donc bien le peu que nous avions lu sur le sujet.

En ce qui concerne l'explication sur l'intersection, je ne comprend pas vraiment ce que vous voulez dire. Vous faites des opérations ensemblistes sur une face et une ligne !? S'agit-il de la fameuse méthode des "buffers" ?
Comment dans ce cas dénombrer le nombre de polygones, y-a-t-il un algorithme particulier ? Est-ce un ensemble d'opérations 'SQL bas niveau' (jointures, ...) sur les coordonnées dans les tables de points/table des arcs ?

Hors ligne

 

#5 Tue 26 June 2007 10:35

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3197
Site web

Re: Techniques et méthodes de calculs dans les SIG

Bonjour,

Je ne suis pas un spécialiste, je ne sais donc pas si j'emploie la méthode nommé "buffer" ou autre. Je vous livre mon sentiment au regard des solutions que j'ai adoptées ou étudiées pour ma propre application.

Pour l'instant l'application gére les éléments vectoriels de base (pour les rasters un rectangle):
point (vertex)
Ligne
Polyligne
Polygone (polyligne fermée)
Le rectangle (windows)

Ces objets possèdent des méthodes permettant des opérations sur eux même et entre eux. Ce à l'aide de la géomètrie analytique.

L'élément de base en matière de surface et d'affichage est le rectangle:
Intersection de deux rectangles = un rectangle
Union idem

L'élément de base en "linéaire" : le point
Function
Point est dans Rectangle

Mis à part le point chaque objet est contenu dans un rectangle encadrant. Donc tous les algorithmes cherchant à calculer le résultat de l'intersection de deux objets ou savoir si un objet est contenu dans un autre pourront être optimisés.

Exemple : Point est dans Polygone ?
Si P(x,y) est dans Polygone.RectangleEncadrant Alors
Cherche une solution
Si Non
Solution = Nothing
Fin Si

Cherche une Solution :
Calcul l'intersection de Y=y et de polygone :
Obtient une liste ordonnée des segments(orienté) de polyligne ayant une intersection avec y de P.
Observe la parité de "P est à gauche de segment", les segment étant parcouru selon les X croissant.

Un exemple VB de EstaGaucheDe:
C'est une fonction de l'objet Ligne.

Code:

Public Function VertexEstAGauche(v As Vertex) As Boolean
Dim m1 As Double
Dim k1 As Double
Dim Y As Double

If Not mVerticale Then
m1 = (mb.Y - ma.Y) / (mb.X - ma.X)
k1 = mb.Y - m1 * mb.X
Y = v.Y - m1 * v.X - k1
    
Else

If ma.Y <= mb.Y Then
Y = v.X - ma.X
Else
Y = -v.X + ma.X
End If

If Y < 0 Then
VertexEstAGauche = True
Else
VertexEstAGauche = False
End If

End If
End Function

Lorsque l'on passe à une structuration topologique type arc face noeud l'intérêt est de structurer ces données dans une BD.
Par exemple:
Un arc contiendra 2 champs contenant respectivement le numéro de la parcelle à gauche, le numéro de la parcelle à droite.

Donc l'algo pour calculer les parcelles traversées par un polyligne utilisera la combinaison de la géomètrie et des relations entre objets dans la BD.

Polyligne PL,

Code:

Dans quel polygone est PL.sommet(0) ? 
         On effectue une requete: Quelles Polylignes ont un rectangle encadrant contenant PL.sommet(0)
          On utilise ensuite l'algo géomètrique sur le résultat (réduit) de la requête.

     Tant que PL.sommet(i&) => PL.sommet.count
     Tant que PL.sommet(i&) appartient au polygone résultat
     i&=i&+1
     Boucle

   Calcul quel arc intersecte PL.sommet(i&-1), PL.sommet(i&)
   En fonction de l'arc obtient le polygone voisin (si PL.sommet(i&-1) est à droite le polygone voisin est à gauche) par une requête

Boucle avec polygone voisin

A+

Christophe


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#6 Tue 26 June 2007 10:48

Cartosig
Participant assidu
Date d'inscription: 16 Oct 2006
Messages: 222

Re: Techniques et méthodes de calculs dans les SIG

L'élément de base en matière de surface et d'affichage est le rectangle:
Intersection de deux rectangles = un rectangle
...
Mis à part le point chaque objet est contenu dans un rectangle encadrant. Donc tous les algorithmes cherchant à calculer le résultat de l'intersection de deux objets ou savoir si un objet est contenu dans un autre pourront être optimisés.


C'est ce que l'on appelle la méthode d'indexation spatiale par R-Tree (à la différence des Quad-Tree), qui est utilisée par Oracle Spatial par exemple.
En effet ce type d'indexation permet une accélération importante des requêtes spatiales.

Dernière modification par Cartosig (Tue 26 June 2007 10:48)

Hors ligne

 

Pied de page des forums

Powered by FluxBB