Как извлечь строки из заданной матрицы высот?

10

Линии разрыва очень полезны для описания местности - например, для построения точного TIN.

Мой вопрос заключается в том, как извлечь эти разрывы из данной ЦМР?

Я рассчитал кривизну (вертикальную) - растр (используя arcgis 10), где вы можете видеть линии разрыва (минимальная / максимальная кривизна), но я не понял, как извлечь их, чтобы получить полилинии в конце.

Каков рабочий процесс, чтобы получить эти линии из DEM?

У кого-нибудь есть идея рабочего процесса, или «инструмента», или скрипта, который может помочь?

Я думаю, что я не первый / последний человек, который хочет выполнить эту задачу :)

... тем временем я нашел статью на эту тему, которая кажется хорошим решением, но остается большой вопрос: как это сделать на практике?

Или у кого-то другой (более легкий?) Подход с некоторым программным обеспечением?

sampler72
источник
Насколько я помню, QuikGrid может очень хорошо определять линии разрыва , хотя в основном он работает с точками массы.
Ян Шимбера
Какие виды разрывов вы заинтересованы в извлечении? Наиболее распространенным может быть гидропрямление, но для дорог могут использоваться линии разрыва. Я не понимаю вопроса, поскольку линии разрыва необходимы до создания ЦМР. Вы можете уточнить?
Geomatix

Ответы:

2

Я бы попробовал это так: поиск критического значения в растровом файле кривизны. Выше этого значения вы будете ожидать разрыв.

Тогда я использовал бы условные операторы в растровом калькуляторе, чтобы использовать «1» для пикселей выше критического и 0 ниже критического значения. Используйте этот двоичный растр для преобразования растра в полигон на панели инструментов. Вы можете найти ответ на то, как получить полигон для линии здесь

В конце концов, вы можете построить модель из этих шагов.

Riccardo
источник
возможно, придется использовать клев или некоторую функцию прореживания в зависимости от того, что выходит, но я думаю, что ответ @ butcher на высоте.
Роланд
2

Конрек делает это. Первоначально он был написан на Фортране, поэтому он был портирован несколько раз.

Библиотека, над которой я работал в файле node.js turf , использует этот алгоритм для создания этих контуров на основе данных точечных векторов. Сценарий для этого довольно прост и в основном будет:

var t = require('turf')
var fs = require('fs')
var z = 'elevation'
var resolution = 15
var breaks = [.1, 22, 45, 55, 65, 85,  95, 105, 120, 180]

t.load('./path/to/points.geojson', function(err, points){
  t.contour(points, z, resolution, breaks, function(err, contours){
    if(err) throw err
    fs.writeFileSync('.path/to/output.geojson', contours)
  })
})

Вы также можете генерировать естественные разрывы jenks, если у вас нет особых ограничений:

var t = require('turf')
var propertyName = 'elevation'
var num = 10

t.load('./path/to/points.geojson', function(err, pts){
  if(err) throw err
  t.jenks(pts, 'elevation', num, function(err, breaks){
    if(err) throw err
    console.log(breaks) // [ 11, 12, 18, 25, 29, 41, 50, 55, 76, 90, 143 ]
  })
})
Морган Херлокер
источник
1

Если вы зайдете на мой лидара VA сайт и ищет проект с линии разрыва. У нас их много.

Например, 2010/2011 Одиннадцатый округ Прибрежный В. А. Лидар. Вы увидите ссылки на все отчеты и другие документы, и это объясняет, как они обычно делали разрывы в ArcGIS. Попробуйте несколько разных проектов для разных методов, но я могу сказать, что часто используется NHD, а также гребни, полученные из матрицы высот. В основном отчеты находятся в метаданных. Вот тот, что выше. CTRL F Breaklines в формате PDF.


источник