Comment tracer automatiquement des contours intermédiaires avec QGIS, GRASS GIS ou SAGA GIS?

10

Je cartographie une chaîne de montagnes escarpée. Mon intervalle de contour principal est de 50 m et mon intervalle de contour intermédiaire est de 10 m. Dans les zones escarpées, l'intervalle de 10 m est trop petit, je dois donc quitter l'intervalle de 10 m et utiliser 20 m ou 25 m à la place.

Existe-t-il un moyen de le faire automatisé dans QGIS , SAGA GIS ou GRASS GIS ?

CARTE
la source

Réponses:

7

Vous pouvez essayer de superposer vos courbes de niveau avec la grille de pente et d'afficher uniquement certaines courbes de niveau en fonction de la valeur moyenne de la pente en dessous de cette courbe de niveau.

johanvdw
la source
Solution intéressante! Feriez-vous une jointure spatiale pour relier la valeur moyenne de la pente aux courbes de niveau?
Simbamangu
@Simba Utilisez les statistiques zonales. Il pourrait être encore plus efficace de supprimer les courbes de niveau dont la pente maximale zonale est trop abrupte.
whuber
2

Pour autant que je sache, il n'y a pas de solution automatique dans QGIS pour ce problème. Cependant, il devrait être possible d'utiliser le moteur de rendu basé sur des règles pour spécifier les contours à tracer et ceux à laisser de côté.

obscur
la source
2

Si je comprends bien le problème, vous travaillez avec un fichier de formes qui a déjà généré tous les contours. Vous devriez avoir une table attributaire avec les valeurs de contour comme l'un des champs - par exemple, 'contour':

ID      contour
 1         1000
 2         1010
 3         1020
 4         1030

Dans QGIS, vous pouvez faire deux ou trois choses. L'une consiste à créer une copie du Shapefile, puis à supprimer les contours dont vous ne voulez pas:

  1. Démarrez une session d'édition, ouvrez la table des attributs et ouvrez la calculatrice de champ.
  2. Sélectionnez «créer un nouveau champ» et en faire un champ de nombre entier; appelons ça «garder».
  3. Entrez dans le champ «expression» une expression qui vous donnera le numéro 1 si les bonnes conditions sont remplies - vous voulez garder tous les contours qui sont des multiples de 20. Ainsi: contour LIKE '%00' OR contour LIKE '%20' OR contour LIKE '%40' OR contour LIKE '%60' OR contour LIKE '%80'(ce type de fonction «d'appariement» n'est pas joli , mais QGIS n'a pas la fonction mathématique modulo qui rendrait cela plus agréable - je pense).
  4. Cliquez sur 'OK' et vous aurez une nouvelle colonne avec 1 où les contours sont des multiples de 20 et des zéros dans le cas contraire.
  5. Recherchez (sélectionnez) toutes les lignes où garder = 0 et supprimez-les. Votre nouveau Shapefile a désormais exclu tous les autres contours.

La deuxième option consisterait simplement à ne pas afficher les contours que vous ne souhaitez pas afficher. C'est un peu plus élégant.

  1. Ouvrez la boîte de dialogue Propriétés et sélectionnez l'onglet Style.
  2. Sélectionnez «Basé sur des règles» dans le coin supérieur gauche.
  3. Ajoutez une règle (appuyez sur le bouton «Ajouter») pour les contours qui correspondent aux conditions souhaitées.
    • Dans la boîte de dialogue Propriétés de la règle, entrez une étiquette, comme «20»;
    • Dans la zone Filtre, entrez une expression à faire correspondre, tout comme celle ci-dessus: contour LIKE '%00' OR contour LIKE '%20' OR contour LIKE '%40' OR contour LIKE '%60' OR contour LIKE '%80'
    • Sélectionnez un style de symbole que vous souhaitez utiliser, puis cliquez sur OK et appliquez le style.

À ce stade, les seuls contours affichés seront ceux qui correspondent à l'expression.

La grande chose à propos de la deuxième option est que vous pouvez créer des règles pour différentes échelles - vous pouvez avoir une règle lorsque vous effectuez un zoom arrière au-delà d'une certaine échelle qui montre, peut-être, uniquement les contours de 100 mètres ('% 00' uniquement dans le expression), puis une autre règle qui affiche les contours de 20 mètres lors d'un zoom avant, etc.

Si vous cherchez une méthode pour créer un nouveau contour de 25 m entre les contours de 100 m, vous feriez probablement mieux de créer un nouveau fichier de contour à partir d'un modèle d'élévation numérique. Je ne sais pas s'il existe des méthodes permettant d' interpoler de manière fiable et correcte un nouveau contour de 25 m entre d'autres contours.

Simbamangu
la source
0

Voici comment je fais cela lorsque j'ai un fichier de formes de contour (ou une base de données Spatialite) contenant des contours à des intervalles verticaux de 10 mètres et que je souhaite tracer uniquement les contours qui se produisent à (disons) des intervalles de 50 mètres.

Chargez le fichier de formes et interrogez-le à l'aide de ce fragment de SQL: '(ELEV% 50) = 0'. Où 'ELEV' est l'attribut contenant les données d'élévation.

nhopton
la source