Jak wyodrębnić linie nieciągłości z danego DEM?


10

Linie nieciągłości są bardzo przydatne do opisu terenu - na przykład do zbudowania dokładnego numeru TIN.

Moje pytanie brzmi: jak wyodrębnić te linie przerwania z danego DEM?

Obliczyłem krzywiznę (pion) - raster (używając arcgis 10), gdzie widać linie nieciągłości (min / max-krzywizna), ale nie wymyśliłem, jak je wyodrębnić, aby uzyskać polilinie na końcu.

Jaki jest przepływ pracy, aby uzyskać te linie przerwania z DEM?

Czy ktoś ma pojęcie o przepływie pracy, „narzędziu” lub skrypcie, które mogą pomóc?

Myślę, że nie jestem pierwszym / ostatnim człowiekiem, który chce wykonać to zadanie :)

... w międzyczasie znalazłem artykuł na ten temat, który wydaje się być dobrym rozwiązaniem, ale pozostaje duże pytanie: jak ograniczyć to do praktyki?

Czy może ktoś ma inne (łatwiejsze?) Podejście do jakiegoś oprogramowania?


O ile pamiętam, QuikGrid bardzo dobrze wykrywa linie nieciągłości , chociaż działa głównie z punktami masy.
Jan Šimbera

Jakie granice chcesz wydobyć? Najbardziej powszechne byłoby hydro-spłaszczanie, ale linie nieciągłości można stosować na drogach. Nie rozumiem pytania, ponieważ linie nieciągłości są potrzebne przed utworzeniem DEM. Możesz wyjaśnić?
geomatix

Odpowiedzi:


2

Wypróbowałbym to w ten sposób: wyszukaj wartość krytyczną w pliku rastrowym krzywizny. Powyżej tej wartości można spodziewać się progu.

Następnie użyłbym instrukcji warunkowych w kalkulatorze rastrowym, aby użyć „1” dla pikseli powyżej wartości krytycznej i 0 poniżej wartości krytycznej. Użyj tego binarnego rastra do konwersji rastra na wielokąt w przyborniku. znajdziesz odpowiedź w jaki sposób dostać się do linii wielokąta tutaj

w końcu możesz zbudować model z tych kroków.


być może będę musiał użyć skubania lub jakiejś funkcji przerzedzania w oparciu o to, co wyjdzie, ale myślę, że odpowiedź @ butchera jest na znaku.
Roland

2

Conrec to robi. Został on pierwotnie napisany w fortranie, więc został przeniesiony kilka razy.

Biblioteka, nad którą pracowałem w node.js, turf , wykorzystuje ten algorytm do tworzenia tych konturów na podstawie danych wektora punktowego. Skrypt do wykonania tego jest dość prosty i zasadniczo byłby to:

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)
  })
})

Możesz także generować naturalne szarpnięcia, jeśli nie masz na myśli określonych przerw:

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

Jeśli pójdziesz do mojego LIDAR VA miejscu i spojrzeć na projekt z linii nieciągłości. Mamy wiele.

Na przykład 2010/2011 Eleven County Coastal VA Lidar. Zobaczysz linki do wszystkich raportów i innych dokumentów, a to wyjaśnia, w jaki sposób ustalono linie przerwania zwykle w ArcGIS. Wypróbuj kilka różnych projektów dla różnych metod, ale mogę powiedzieć, że NHD jest często używany, podobnie jak grzbiety pochodzące z DEM. Najczęściej raporty są w metadanych. Oto jeden z powyżej. CTRL F Wartości graniczne w pliku pdf.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.