Ekstrakcja max wartości z rastra w obrębie poligonów

Problem

Mamy NMT oraz poligonową klasę mezoregionów fizycznogeograficznych (FizGeo_mezoregiony). Chcemy dla każdego poligonu rozpoznać położenie pikseli maksimów zbioru nmt, czyli tzw. kulminacje.

Rozwiązanie

Skorzystamy z rozszerzenia Spatial Analyst. Utworzymy klasę obiektów punktowych stanowiącą kulminacje wysokości w mezoregionach i dla każdego mezoregionu obliczymy jego najwyższy punkt. Procedura będzie wymagała trzech kroków:

  • identyfikacja maksymalnych wartości rzędnych Z w każdym poligonie (mezoregionie),
  • identyfikacja konkretnych komórek w NMT odpowiadających maksymalnym wartościom,
  • przekształcenie tych komórek zbiór klasy obiektów punktowych.
    1. Na początku dla każdego obiektu poligonowego obliczymy wartości najwyższej rzędnej wysokości n.p.m. Z menu ArcToolbox > Spatial Analyst Tools > Zonal > Zonal Statistics otwórz narzędzie Statystyk zonalnych (strefowych) (Fig. 1).

      Zonal Statistics
      Fig. 1. Okno dialogowe narzędzia tworzenia statystyk zonalnych

      Użycie narzędzia Zonal Statistics spowoduje wygenerowanie nowego rastra, który zmienia wszystkie wartości komórek w każdym poligonie na najwyższej wysokości w tym poligonie. Nazwiemy sobie ten nowy zbiór np. MaxElev.

      Dane wejściowe to poligonowa klasa mezoregionów fizycznogeograficznych (FizGeo_mezoregiony) oraz nmt. Pole Zone field zawiera jednoznaczny identyfikator poligonów. W moim przypadku to pole nazwy mezoregionu fizycznogeograficznego. Raster wyjściowy to oczywiście MaxElev. Jako rodzaj statystyki z listy rozwijanej wybierz Maksimum. Upewnij się, że opcja Ignore NoData jest zaznaczona.

      W wyniku działania narzędzia otrzymujemy zbiór rastrowy Fig. 2.

      Maksymalne wysokości w mezoregionach
      Fig. 2. Rastrowa mapa maksymalnych wysokości przypisanych wszystkim pikselom każdego mezoregionu
    2. Aby określić, które komórki w NMT odpowiadają najwyższej rzędnej znalezionej w każdym obiekcie poligonowym porównamy teraz oba rastry nmt oraz właśnie utworzony MaxElev.

      Skorzystamy z Kalkulatora rastrów: ArcToolbox > Spatial Analyst Tools > Map Algebra Raster Calculator. Wykonamy prostą instrukcję warunkową. Wynikiem będzie raster przedstawiający tylko komórki NMT o najwyższych wartościach elewacji. Wszystkie inne komórki będa miały wartości NoData. Użyj następującej instrukcji warunkowej:

      Con("nmt" == "MaxElev","nmt")

      Jeśli komórka w nmt jest równa odpowiadającej komórce w MaxElev, ustaw wartość komórki rastra wyjściowego na wartość w nmt. Jeśli wartość komórki w nmt nie jest równa wartości w MaxElev w rastrze wyjściowym jest ustawiana wartość NoData (Fig. 3).

      Piksele o maksymalnych wysokościach w mezoregionach
      Fig. 3. Fragment mapy z widocznymi pikselami o maksymalnych wysokościach w mezoregionach
    3. Przekształcimy teraz raster MaxElevPxMap w klasę elementów punktowych za pomocą narzędzia Raster to Point: ArcToolbox > Conversion Tools > From Raster > Raster to Point (Fig. 4).

      Konwersja rastra do klasy obiektów punktowych
      Fig. 4. Okno dialogowe narzędzia konwersja rastrów do klas obiektów punktowych

    W wyniku działania procedury otrzymujemy klasę obiektów o geometrii punktowej z przypisaną max wysokością n.p.m. właściwą dla danego poligonu (mezoregionu) (Fig. 5).

    Mapa kulminacji wys. n.p.m.
    Fig. 5. NMT z naniesioną klasą obiektów punktowych kulminacji w mezoregionach

    Źródła

    How To: Create points representing the highest or lowest elevations within polygon features.