Algorithme de point d'échantillonnage de profil d'élévation

10

Lors de la génération d'un profil d'élévation, des échantillons du raster sous-jacent doivent être prélevés. Si l'objectif est de créer un profil de qualité maximale, comment déterminer l'emplacement des points d'échantillonnage? Quelle approche adopter pour interpoler ces points d'échantillonnage?

Matthew Snape
la source

Réponses:

6

Si vous souhaitez créer un profil de qualité maximale , votre algorithme doit essentiellement inclure chaque cellule qui est coupée par votre chemin de requête, puis cela devient un simple problème d'ajustement de courbe 2D . Cependant, si vous souhaitez simplement échantillonner un sous-ensemble de ces points et créer un profil plus agréable visuellement, vous constaterez peut-être que ce document de géocomputation a beaucoup de techniques d'interpolation différentes pour échantillonner l'altitude ainsi que les mathématiques derrière.

Ragi Yaser Burhum
la source
7

Un profil d'élévation calcule l'intersection de deux surfaces . L'un d'eux est une feuille verticale déterminée par un chemin. (C'est-à-dire qu'il se compose de toutes les coordonnées (x, y, z) où (x, y) est sur le chemin et z est n'importe quel nombre.) L'autre est la surface représentée par le raster DEM. À ce titre, cela revient à trouver les valeurs z situées au-dessus des points de la courbe. Cela le rend identique au problème d'interpolation des valeurs du raster. En particulier, bien qu'il partage de nombreuses caractéristiques du problème unidimensionnel plus simple de l'ajustement d'une courbe (distance, élévation) aux données, il n'est pasla même situation. L'affichage en tant que tel risque de produire des profils d'élévation sous-optimaux car vous n'aurez pas tiré parti des informations dans toute l'étendue 2D des données raster de chaque côté de la courbe.

Évidemment, toutes les considérations qui s'attachent aux surfaces d'interpolation sont pertinentes ici . Il existe de nombreuses méthodes concurrentes, chacune avec des avantages et des inconvénients, chacune appropriée pour des utilisations variées, et chacune avec sa propre «qualité». Ils comprennent (mais ne sont pas limités à):

Ce sont tous des algorithmes pour estimer une valeur z (x, y) à partir des données, étant donné un emplacement arbitraire (x, y) qui ne coïncide pas nécessairement avec un point de données. Voici comment un jeu de données raster est dessiné , soit dit en passant: pour déterminer la couleur à un pixel particulier (u, v) sur l'écran ou le papier (la carte), les coordonnées mondiales (x, y) du pixel sont calculées, la valeur z (x, y) est calculée à l'aide de l'interpolateur, et cette valeur est convertie en une couleur à l'aide d'une rampe ou d'une table de correspondance. (Pour plus d'efficacité, je soupçonne que de nombreux SIG n'effectuent pas cette procédure à chaque pixel: à la place, ils prennent un sous-échantillon régulier des pixels, déterminent leurs couleurs, puis effectuent une simple interpolation de la couleur sur l'écran ou le papier.)

Nous pouvons penser aux pixels comme déterminant un échantillon régulier d'emplacements plans pour l'interpolation. La création d'un profil d'élévation implique une considération similaire: où localiser les "pixels" le long du chemin? La réponse est développée de la même manière que nous répondrions à la question correspondante pour la cartographie: de quelle échelle avez-vous besoin? À grande échelle (zoom avant), vous avez besoin d'un échantillonnage beaucoup plus précis; à petite échelle, vous pouvez échantillonner avec un espacement plus grand. Si vous êtes intelligent, vous pouvez même utiliser des méthodes adaptatives ou récursives pour concentrer l'échantillonnage là où les valeurs z varient le plus rapidement, ont la plus grande courbure ou atteignent des valeurs extrêmes. Si vous n'êtes pas aussi intelligent ou n'avez pas besoin de la meilleure représentation, vous pouvez créer un ensemble de valeurs également espacées le long du chemin à des distances d (0) <d (1) <... <d (n) le long du chemin et, à partir des valeurs de trame proches, interpoler les élévations correspondantes z (0), z (1), ..., z (n). Vous traceriez alors les paires (d (0), z (0)), ..., (d (n), z (n)) et juste dans une sorte de courbe autour d'eux - généralement une spline - en supposant que les variations z (i + 1) - z (i) sont suffisamment petites pour que la façon dont la courbe est ajustée n'a pas d'importance. (Les méthodes adaptatives inspectent ces variations et obtiennent des valeurs plus interpolées à des distances intermédiaires où il apparaît qu'il y a une grande variation.)

Cela nous amène au cœur de la question: quelles devraient être les distances initiales de l'échantillon? La réponse dépend de l'échelle prévue du profil d'élévation, de la précision des valeurs du DEM, de la précision avec laquelle la courbe est enregistrée aux emplacements du DEM et du taux de variation des élévations le long et à proximité du profil. En général, des échelles plus grandes (c.-à-d. Un zoom avant), de meilleures précisions dans les élévations et le géoréférencement et des taux de variation plus élevés exigent des espacements plus étroits. Parce que ceux-ci interagissent de manière complexe, il n'y a pas de règle générale pour le meilleur espacement . Cependant, vous pouvez vous attendre à ce que tout espacement plus fin que la taille de cellule raster ne vous rapporte pas grand-chose. Donc,si vous pouvez vous permettre de calculer le profil d'élévation en utilisant cet espacement relativement serré, vous pourriez aussi bien aller de l'avant et le faire . C'est peut-être exagéré, mais alors quoi?

Notez que ces méthodes reproduiront au mieux avec précision les valeurs d'altitude interpolées . Ce sont presque toujours une version dégradée des élévations que le raster représente. Par exemple, de nombreux DEM dans les zones montagneuses n'atteignent pas les hauteurs des pics, car les pics se situent généralement entre les cellules raster. Lorsque vous interpolez entre les élévations sous-pic, vous obtenez généralement une sorte de moyenne pondérée, qui sera toujours inférieure à la hauteur du pic. Ainsi, le profil d'élévation d'un chemin passant exactement au-dessus d'un sommet de montagne atteindra rarement l'élévation maximale. (Convolution cubique et certaines formes de krigeage (y compris simulation stochastique avec krigeage) peut surmonter les formes légères de ce problème. Regardez-les si vous voulez reproduire les caractéristiques statistiques du profil d'élévation plutôt que de vous contenter d'un «meilleur ajustement» qui fait la moyenne des extrêmes.

whuber
la source
merci whuber. L'espacement doit-il être fixé du tout?
Matthew Snape
1
@Matthew L'espacement peut être adapté aux élévations et à leurs changements, comme je l'ai mentionné. La qualité d'autres espacements, tels que les espacements aléatoires ou les espacements arbitraires, est difficile à évaluer. Cependant, il n'y a rien de mal à utiliser des informations externes pour placer certains des points d'échantillonnage. Par exemple, si vous avez une couche de cours d'eau, vous pouvez inclure tous les croisements de cours d'eau dans vos points pour vous assurer que vous échantillonnez les minima locaux de l'élévation le long du chemin. Pour certaines applications spécialisées, les espacements d' égale élévation fonctionnent bien.
whuber
Mais à certains moments, la ligne de profil traversera plusieurs cellules sur une courte distance. À d'autres, la ligne de profil passera par moins (si vous voyagez avec l'axe). Certes, un intervalle fixe ne tiendra pas compte de cela?
Matthew Snape
@Matt Le fait est que le simple passage à travers les cellules n'est pas pertinent. Toute procédure d'interpolation spatiale peut fournir une estimation de l'élévation à l'infiniment de points sur le trajet. Cela réduit votre problème d'une dimension: l'interpolateur fournit l'altitude en fonction de la distance (vous pouvez le représenter graphiquement en coordonnées cartésiennes) et le problème est celui de l'échantillonnage de ce graphique. En d'autres termes, une fois que vous avez choisi un interpolateur, vous pouvez tout aussi bien demander "J'ai une fonction y = f (x). Comment puis-je le représenter graphiquement?" Mon conseil est (a) de choisir un bon interpolateur et (b) de bien tracer le graphe!
whuber