Як автоматично побудувати проміжні контури за допомогою QGIS, GRASS GIS або SAGA GIS?


10

Я малюю крутий гірський хребет. Мій основний інтервал контуру - 50 м, а мій проміжний контур - 10 м. У крутих районах інтервал 10 м занадто малий, тому мені потрібно залишити інтервал 10 м і замість цього використовувати 20 м або 25 м.

Чи є спосіб зробити це автоматизованим у QGIS , SAGA GIS або GRASS GIS ?

Відповіді:


7

Ви можете спробувати зробити накладку контурних ліній сіткою нахилу та показати лише певні контурні лінії залежно від середнього значення нахилу нижче цієї лінії контуру.


Цікаве рішення! Ви б зробили просторове з'єднання, щоб зв’язати середнє значення схилу з контурними лініями?
Сімбамангу

@Simba Використовуйте зональну статистику. Можливо, буде ще краще видалити контурні лінії, максимальний зональний нахил яких занадто крутий.
whuber

2

Наскільки мені відомо, в QGIS для цієї проблеми немає автоматичного рішення. Однак слід використовувати можливість візуалізації на основі правил, щоб вказати, які контури повинні бути нанесені, а які слід опустити.


2

Якщо я правильно зрозумів проблему, ви працюєте з Shapefile, у якого вже створені всі контури. У вас повинно бути таблиця атрибутів зі значеннями контуру в якості одного з полів, наприклад, "контур":

ID      contour
 1         1000
 2         1010
 3         1020
 4         1030

У QGIS ви могли б зробити кілька речей. Можна створити копію Shapefile, а потім видалити контури, які вам не потрібні:

  1. Почніть сеанс редагування, відкрийте таблицю атрибутів та відкрийте калькулятор поля.
  2. Виберіть «створити нове поле» та зробіть це полем цілого числа; називаємо це "тримати".
  3. Введіть у поле "вираз" вираз, який дасть вам число 1, якщо дотримані правильні умови - ви хочете зберегти всі контури, кратні 20. Отож: contour LIKE '%00' OR contour LIKE '%20' OR contour LIKE '%40' OR contour LIKE '%60' OR contour LIKE '%80'(ця різновид функції "узгодження" не дуже , але QGIS бракує функції модульної математики, яка зробила б це приємніше - я думаю).
  4. Клацніть "ОК", і у вас з'явиться новий стовпчик з 1, де контури кратні 20, а нулі, де ні.
  5. Шукайте (виберіть) усі рядки, де зберігається = 0, і видаліть їх. Ваш новий Shapefile тепер виключив усі інші контури.

Варіант другий - просто не відображати контури, які ви не бажаєте показувати. Це трохи елегантніше.

  1. Відкрийте діалогове вікно Властивості та виберіть вкладку Стиль.
  2. Виберіть "На основі правил" у верхньому лівому куті.
  3. Додайте правило (натисніть кнопку "Додати") для контурів, які відповідають потрібним умовам.
    • У діалоговому вікні "Властивості правила" введіть мітку, наприклад "20";
    • У поле Фільтр введіть вираз, який відповідає, як і вказаний вище: contour LIKE '%00' OR contour LIKE '%20' OR contour LIKE '%40' OR contour LIKE '%60' OR contour LIKE '%80'
    • Виберіть стиль символу, який ви хочете використовувати, потім натисніть кнопку ОК і застосуйте стиль.

На даний момент єдиними відображеними контурами будуть ті, які відповідають виразу.

Чудова річ у другому варіанті полягає в тому, що ви можете створювати правила для різних масштабів - у вас може бути одне правило, коли ви зменшуєте масштаб повз певну шкалу, яка показує, мабуть, лише 100-метрові контури ("% 00" лише в вираз), а потім ще одне правило, яке показує 20-метрові контури при збільшенні масштабу тощо.

Якщо ви шукаєте спосіб створити новий 25-метровий контур між 100 м контурами, вам, мабуть, було б краще створити новий контурний файл із цифрової моделі висоти. Я не впевнений, чи існують якісь методи, які б надійно і правильно інтерполювали новий 25 м контур між іншими контурами.


0

Ось як я це роблю, коли у мене є контурний файл форми (або база даних просторового простору), що містить контури з вертикальними інтервалами 10 метрів, і я хочу накреслити лише контури, які виникають з (скажімо) 50-метровими інтервалами.

Завантажте файл форми і запитайте його за допомогою цього фрагмента SQL: '(ELEV% 50) = 0'. Де "ELEV" - атрибут, що містить дані про висоту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.