#1 Fri 05 February 2016 18:45
- Nico.bastien
- Juste Inscrit !
- Date d'inscription: 5 Feb 2016
- Messages: 9
QGIS : Interpolation linéaire
Amis Sigistes bonsoir,
Je viens vers vous avec une problématique que je pense nouvelle (après avoir épluché le forum). La voici :
Nous avons :
- un calque avec un réseau composé de polylignes;
- un calque avec des nœuds composés de points;
Toutes les polylignes sont raccrochées à des points. Nous avons sur certains points (pas tous), une information altimétrique (il s'agit de la côte fil d'eau).
Hélas, il a des points où nous n'avons pas d'information (trop cher paraît-il!).
Aussi je souhaiterais interpoler l'information des points afin que chacun d'eaux possède l'information altimétrique.
Facile en apparence me direz vous : "il suffit de faire un raster et d'interpoler sur les points sans infos!"
Oui mais non, l'hydraulique urbaine ne répond pas à cette logique : les points se trouvant à proximité mais pas sur le même réseau ont un impact sur les points qui sont interpolés...
Ce qu'il faudrait faire comprendre à QGis, c'est que sur une même branche de réseau, je vais interpoler le nœud où l'information est manquante en me basant sur le nœud à l'aval et le nœud à l'amont où l'information est disponible (rappelons que les nœuds sont attachés à des polylignes permettant justement d'indiquer l'amont et l'aval). Et c'est tout... en ignorant les autres nœuds. C'est ce que j’appellerai une interpolation linéaire...
Comment faire?
Toutes informations, idées, encouragements ou même témoignages d’amitiés sont les bienvenus sur cette problématique.
Cdt,
Hors ligne
#2 Sun 07 February 2016 10:32
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: QGIS : Interpolation linéaire
Bonjour,
Je ne vois pas d'autre solution que de passer par un script Python, mais ça ne fonctionnera que si les polylignes du réseau ont été tracées de l'amont vers l'aval ou bien si l'on dispose d'une information pour les noeuds permettant de les ordonner sur leur réseau respectif.
en gros pour l'algo:
Pour chaque polyligne du réseau:
pour chaque point de la polyligne:
chercher s'il existe un noeud à cette position
si oui, vérifier si ce noeud dispose d'une côte
si non, calculer sa côte par interpolation > ce qui implique ici de pouvoir déterminer le noeud précédent et le suivant
Dernière modification par dominique.lys (Sun 07 February 2016 10:33)
Hors ligne
#3 Mon 08 February 2016 08:57
- Nico.bastien
- Juste Inscrit !
- Date d'inscription: 5 Feb 2016
- Messages: 9
Re: QGIS : Interpolation linéaire
Bonjour Dominique,
Merci pour ton retour.
Pas de solution simple donc....
Hors ligne
#4 Mon 08 February 2016 13:54
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: QGIS : Interpolation linéaire
Pas de solution simple donc....
oui et non, si on peut ordonner les noeuds alors c'est une solution facile. Après si c'est l'utilisation de python qui pose problème, on est là pour aider !
Hors ligne
#5 Mon 08 February 2016 17:07
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3179
- Site web
Re: QGIS : Interpolation linéaire
Bonjour,
Il existe d'autres solutions en ne passant pas par QGIS mais par posgresql et postgis.
Première solution : intégrer les polylignes dans un schéma topologique. Ce qui permettra de connaître l'orientation (arcs orientés).
Les points ne sont pas forcement des noeuds au sens topologique mais des sommets de polyligne. L'interpolation de l'altitude entre deux sommets connus en z peut ensuite se faire via une requête calculée.
Si A et C sont connus en Z et que B € [AC] alors Distance(AC)/Zb-Za* distance(AB) + Za = Zb. (interpolation simple). On notera qu'il n'est pas vraiment nécessaire de connaître le sens de parcours de la polyligne.
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#6 Fri 19 February 2016 16:48
- Nico.bastien
- Juste Inscrit !
- Date d'inscription: 5 Feb 2016
- Messages: 9
Re: QGIS : Interpolation linéaire
Bonjour,
Merci pour vos retours respectifs. N'étant pas sigiste à l'origine, les solutions me semblaient difficile à mettre en oeuvre (je pensais que le python était un serpent...)
Au final, puisqu'il s'agissait d'hydraulique, nous sommes passés par un import sous Mike Urban qui propose simplement un module d'extrapolation des données.
Aussi simple que cela...
Encore merci pour vos suggestions.
Hors ligne