Porównywanie dwóch cyfrowych modeli wysokości (DEM) z plików LAS?

12

Mam dwa pliki LiDAR (.las), jeden jest oryginalny powiedzmy z X punktami. Drugi to kopia pierwszego pliku .las, ale z punktami Y, gdzie Y jest mniejsze niż X.

Teraz chcę porównać cyfrowe modele wysokości (DEM) tych dwóch plików .las i zwizualizować ich różnice.

Chcę uzyskać informacje takie jak RMSE, odchylenie standardowe i inne rodzaje porównań.

Byłbym wdzięczny, gdyby ktoś mógł mi powiedzieć, jakie oprogramowanie i sposoby uzyskania informacji porównawczych.

Andre Silva
źródło
1
Być może mógłbyś edytować pytanie, aby użyć M i N (zamiast X i Y). Przy pierwszym czytaniu myślałem, że X i Y są wartościami współrzędnych!
Mark Ireland
1
Naprawdę musisz podać więcej informacji, aby otrzymać odpowiednią pomoc. Twoje obecne pytanie stanowi bardzo małą scenę. Które pole w twoim pliku las zawiera wartości. Sposób, w jaki klasyfikowane są grunty w formacie las, to pole klasyfikacji, a nie różne wartości z (wysokości). Sprzedawca musiałby wykorzystać nieprzypisane pola, aby zachować różnicę w wartościach Z.
Jeffrey Evans,

Odpowiedzi:

8

Jak porównać dwa cyfrowe modele wysokościowe (DEM) w R.

#-------------------------------------------------------------------------
#Creating a reproducible example

library(raster)

  #simulating raster_1

  f = system.file("external/test.grd", package="raster")
  DEM_1 = raster(f)

  #simulating raster_2

  DEM_2 = DEM_1
  # replacing values from raster_1 to create a new raster sample (raster_2)
    DEM_2[(DEM_2>500 & DEM_2<900)] = 550
    DEM_2[(DEM_2>200 & DEM_2<300)] = 500

#-------------------------------------------------------------------------
# Comparison 1 (DEM_3 resulted from subtracting DEM_2 from DEM_1)

  DEM_3 = DEM_1 - DEM_2

    par(mfrow=c(1,3))

    plot(DEM_1, main = "DEM_1")
    plot(DEM_2, main = "DEM_2")
    plot(DEM_3, main = "DEM_3 = DEM_1 - DEM_2")

      dev.off()

wprowadź opis zdjęcia tutaj

#-------------------------------------------------------------------------
#Comparison 2 (histogram)

  hist(DEM_1, prob=T, main="DEM_1", xlab="")
  hist(DEM_2, prob=T, main="DEM_2", xlab="")
  hist(DEM_3, prob=T, main="DEM_3 = DEM_1 - DEM_2", xlab="")

    par(mfrow=c(1,1))

  standard_deviation = sd(c(as.matrix(DEM_3)),na.rm=T)

    dev.off()

wprowadź opis zdjęcia tutaj

#-------------------------------------------------------------------------
#comparison 3 (RMSE)

  library(hydroGOF)

  DEM_1_matrix = c(as.matrix(DEM_1))
  DEM_2_matrix = c(as.matrix(DEM_2))

  rmse = rmse(DEM_1_matrix,DEM_2_matrix)
  rmse
  [1] 135.3675 # this is the root mean squared error (RMSE) result.

Zobacz odpowiedź @ Whubera na temat Porównanie dwóch numerów TIN utworzonych za pomocą ArcGIS na komputery? aby uzyskać teoretyczny wgląd w ten problem.

Andre Silva
źródło
2

O ile mi wiadomo, RMSE jest podawany tylko podczas tworzenia DEM, a nie jako atrybut do dalszego odwoływania się, więc będziesz musiał go „złapać” ręcznie podczas tworzenia DEM (to powiedziawszy, nigdy nie stworzyłem DEM z Lidar, tylko z innych danych).

Jeśli chcesz zobaczyć różnice między DANYMI wewnątrz dwóch DEMS, użyłbym wycięcia / wypełnienia, które jest w rozszerzeniu ArcGIS dla Spatial Analyst (w sekcji „Analiza powierzchni”). Wycięcie / wypełnienie pokazuje na prostej mapie tematycznej zmiany między DEM.

jonatr
źródło
3
Cięcie / wypełnienie jest zbyt surowe, ponieważ nie określa ilościowo różnic. RMSE to ogólny sposób porównywania dwóch zestawów danych: nie tylko przydatne jest porównanie DEM z danymi podstawowymi, ale także jeden sposób kwantyfikacji różnic między dwoma DEM.
whuber
2

Zrobiłbym prosty DEM różnicy. DEM2-DEM1. To pokaże wszystkie obszary, które są różne i o ile.

Na mojej stronie głównej jest obraz w wysokiej rozdzielczości. thadwester.com
Spójrz na kolorowy lewy obraz.

Thad
źródło