Tính chỉ số độ bền địa hình trong máy tính để bàn ArcGIS?


15

Có ai biết cách tính chỉ số độ bền địa hình trong ArcGIS Desktop mà không cần truy cập vào dòng lệnh ArcInfo Workstation không?

"Chỉ số độ chắc chắn địa hình (TRI) là một phép đo được phát triển bởi Riley, et al. (1999) để biểu thị mức độ chênh lệch độ cao giữa các ô liền kề của lưới độ cao kỹ thuật số. Quá trình này tính toán sự khác biệt về giá trị độ cao từ một ô trung tâm và tám ô ngay lập tức bao quanh nó. Sau đó, nó bình phương mỗi tám giá trị chênh lệch độ cao để làm cho tất cả chúng dương và tính trung bình bình phương. Chỉ số độ chắc chắn địa hình được lấy bằng cách lấy căn bậc hai của trung bình này, và tương ứng với thay đổi độ cao trung bình giữa bất kỳ điểm nào trên lưới và khu vực xung quanh nó. " - từ một bản arl của Jeffrey Evans


phụ thuộc vào phiên bản ArcGIS arcscripts.esri.com/details.asp?dbid=12646 số cuộc thảo luận từ các diễn đàn trước forums.esri.com/Thread.asp?c=93&f=982&t=145448 không được kiểm soát nhưng tìm kiếm chứa thuật ngữ jennessent.com /arcgis/surface_area.htm

Câu trả lời:


18

Tôi khuyên bạn nên tìm bên ngoài ArcGIS) Rất dễ dàng bằng phần mềm gdal miễn phí: http://www.gdal.org/gdaldem.html

gdaldem TRI input_dem output_TRI_map

Hoặc nếu bạn thích nó trong saga gis: http://www.saga-gis.org/saga_modules_doc/ta_morphometry/ta_morphometry_16.html


11
+1 Tôi luôn đánh giá cao việc xem các giải pháp không phải ArcGIS cho các vấn đề của ArcGIS :-). Đây là vấn đề nguyên tắc, không phải là sự đối kháng đối với ArcGIS nói riêng. Mọi người nên tránh bị khóa trong một giải pháp phần mềm duy nhất: không chỉ rủi ro về mặt chuyên môn, mà còn là sự ngột ngạt về mặt trí tuệ.
whuber

Tôi biết tôi đã yêu cầu một giải pháp cụ thể của arcgis, nhưng tôi chấp nhận giải pháp này vì tính trực tiếp của nó. Tiện ích GDAL dễ dàng có được và cài đặt, được thừa nhận toàn cầu là tốt nhất trong lớp và lệnh để tạo ra sản phẩm cụ thể này là định nghĩa về tính đơn giản.
matt wilkie

18

Chúng ta hãy làm một ít (chỉ một chút) đại số.

Gọi x là giá trị trong hình vuông trung tâm; Đặt x_i, i = 1, .., 8 lập chỉ mục các giá trị trong các ô vuông lân cận; và gọi r là chỉ số độ chắc chắn địa hình. Công thức này cho biết r ^ 2 bằng tổng của (x_i - x) ^ 2. Hai thứ chúng ta có thể tính toán dễ dàng là (i) tổng các giá trị trong vùng lân cận, bằng s = Sum {x_i} + x; và (ii) tổng bình phương của các giá trị, bằng t = Sum {x_i ^ 2} + x ^ 2. (Đây là các thống kê đầu mối cho lưới ban đầu và cho hình vuông của nó.)

Mở rộng hình vuông cho

r ^ 2 = Tổng {(x_i - x) ^ 2}

= Tổng {x_i ^ 2 + x ^ 2 - 2 * x * x_i}

= Tổng {x_i ^ 2} + 8 * x ^ 2 - 2 * x * Tổng {x_i}

= [Tổng {x_i ^ 2} + x ^ 2] + 7 * x ^ 2 - 2 * x * [Tổng {x_i} + x - x]

= t + 7 * x ^ 2 - 2 * x * [Tổng {x_i} + x] + 2 * x ^ 2

= t + 9 * x ^ 2 - 2 * x * s .

Ví dụ, hãy xem xét một khu phố

1 2 3
4 5 6
7 8 9

Ở đây, x = 5, s = 1 + 2 + ... + 9 = 45 và t = 1 + 4 + 9 + ... + 81 = 285. Sau đó

(1-5) ^ 2 + (2-5) ^ 2 + ... + (9-5) ^ 2 = 16 + 9 + 4 + 1 + 1 + 4 + 9 + 16 = 60 = r ^ 2

và tương đương đại số nói

60 = r ^ 2 = 285 + 9 * 5 ^ 2 -2 * 5 * 45 = 285 + 225 - 450 = 60, sẽ kiểm tra.

Các quy trình làm việc do đó là:

Đưa ra một DEM.

  • Tính s = Tổng tiêu điểm (trên 3 x 3 vùng lân cận) của [DEM].

  • Tính toán DEM2 = [DEM] * [DEM].

  • Tính t = Tổng tiêu điểm (trên 3 x 3 vùng lân cận) của [DEM2].

  • Tính r2 = [t] + 9 * [DEM2] - 2 * [DEM] * [s].

Trở về r = Sqrt ([r2]).

Điều này bao gồm 9 hoạt động lưới trong toto , tất cả đều nhanh chóng. Chúng dễ dàng được thực hiện trong máy tính raster (ArcGIS 9.3 trở về trước), dòng lệnh (tất cả các phiên bản) và Model Builder (tất cả các phiên bản).

BTW, đây không phải là "thay đổi độ cao trung bình" (vì thay đổi độ cao có thể là dương và âm): đó là thay đổi độ cao bình phương gốc. Nó không bằng "chỉ số vị trí địa hình" được mô tả tại http://arcscripts.esri.com/details.asp?dbid=14156 , mà (theo tài liệu) bằng x - (s - x) / 8. Trong ví dụ trên, TPI bằng 5 - (45-5) / 8 = 0 trong khi TRI, như chúng ta đã thấy, là Sqrt (60).


1
Cảm ơn Bill. Tôi đánh giá cao việc xem chi tiết cụ thể về cách thức hoạt động của một công cụ hoặc hoạt động. Từ điều này, bất cứ ai có sự đầu tư thích hợp về thời gian và năng lượng trí tuệ đều có thể xây dựng một bộ máy mới để thực hiện công việc này bằng cách sử dụng các công cụ họ có trong tay. Đó là thông tin như thế này sẽ làm cho GIS.se trở thành một dịch vụ hữu ích trong một thời gian dài.
matt wilkie

1
+1 Giải thích tuyệt vời. Tôi đoán điều này có nghĩa là một bề mặt dốc nhưng nhẵn có thể có TRI cao hơn bề mặt phẳng nhưng gập ghềnh.
Kirk Kuykendall

1
@Kirk Đúng vậy. Có nhiều cách để loại bỏ ảnh hưởng của độ dốc cục bộ để có được chỉ số về độ chắc chắn "tương đối" nếu bạn muốn. Mặc dù tôi chưa tìm ra chi tiết, tôi tin rằng việc trừ một số bội số chung của (c * a) ^ 2 từ r2 - trong đó c là các ô và a là độ dốc (như tăng / chạy, không phải là một góc hoặc phần trăm) - nên thực hiện các mẹo.
whuber

@whuber như mọi khi câu trả lời của bạn chứa lượng kiến ​​thức đáng kinh ngạc !! Chỉ cần một câu hỏi: điều này có nghĩa là không thể tính TRI của các ô nằm ở rìa của raster? Do chúng không được bao quanh bởi các tế bào lân cận xung quanh?
marco

1
@marco TRI có thể được ước tính ngay cả tại các ô biên. Như đã nêu trong câu hỏi, nó nên được biểu thị dưới dạng trung bình, thay vì tổng, bằng cách chia các giá trị tôi đưa ra ở đây cho 9. Tại các ô biên, giá trị "9" trong công thức và mẫu số cần được thay thế bằng số giá trị không null trong vùng lân cận 3X3 của chúng: 6 cho các ô cạnh, 4 cho các ô góc. Một lưới các giá trị như vậy có thể được lấy từ tổng tiêu cự của lưới chỉ báo của các giá trị ban đầu (nó có 1 tại tất cả các ô không NoData và 0 ở nơi khác). Sử dụng lưới đó thay cho hằng số "9" trong các công thức.
whuber

3

Riley et al., (1999) TRI là căn bậc hai của độ lệch bình phương tổng. Điều này rất gần với phương sai không được tính. Nếu bạn muốn triển khai TRI của Riley, vui lòng làm theo phương pháp được nêu bởi @whuber (phương pháp được cung cấp bởi @ user3338736 đã khái quát hóa số liệu đến mức tối đa trong cửa sổ và không biểu thị ô theo biến thể của ô).

Tôi có một biến thể của TRI trong Hộp công cụ Geom định hình & Gradient Metrics ArcGIS của chúng tôi , đó là phương sai của một cửa sổ được chỉ định. Tôi thấy điều này linh hoạt và chính đáng hơn. Ngoài ra còn có một số số liệu cấu hình bề mặt khác bao gồm độ đục và độ phân giải.


cảm ơn Jeffrey. Vì một số lý do, trang đó trống, ngoại trừ tiêu đề trong Firefox, nghĩ rằng nó ổn trong Chrome; có thể là một trong những phần mở rộng của tôi. Tôi rất vui khi báo cáo ít nhất là các tập lệnh hoạt động không thay đổi trong 10.2.2 (dù sao tôi cũng đã kiểm tra).
matt wilkie

1

-Chỉnh sửa: thông tin bên dưới không chính xác. Xin vui lòng xem bài viết của whuber giải thích quá trình chính xác .....

TRI (Riley 1999) và TPI (Jenness 2002) tương tự nhau, nhưng khác nhau.

Để tính TRI và TPI bằng ArcGIS 10.x ...

Bước 1: Sử dụng công cụ Thống kê tiêu điểm để tạo 2 bộ dữ liệu raster mới từ DEM.

Raster 1 "MAX") Vùng lân cận: Hình chữ nhật, Chiều cao: 3, Chiều rộng: 3, Đơn vị: Ô, Loại thống kê: Tối đa

Raster 2 "MIN") Vùng lân cận: Hình chữ nhật, Chiều cao: 3, Chiều rộng: 3, Đơn vị: Ô, Loại thống kê: Tối thiểu

Bước 2: Sử dụng Máy tính raster để thực hiện các chức năng sau trên 2 bộ dữ liệu raster bạn vừa tạo.

Đối với TRI: SquareRoot (abs ((Square ("% MAX%") - Square ("% MIN%"))))

Đối với TPI: ("% DEM đầu vào%" - "% MIN%") / ("% MAX%" - "% MIN%")

Đây là mã Python mẫu được xuất từ ​​mô hình tôi đã tạo cho TRI ....

# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------
# script.py
# Created on: 2014-03-06 08:56:13.00000
#   (generated by ArcGIS/ModelBuilder)
# Usage: script <Input_raster> <TRI_Raster> 
# Description: 
# ---------------------------------------------------------------------------

# Import arcpy module
import arcpy

# Check out any necessary licenses
arcpy.CheckOutExtension("spatial")

# Script arguments
Input_raster = arcpy.GetParameterAsText(0)

TRI_Raster = arcpy.GetParameterAsText(1)
if TRI_Raster == '#' or not TRI_Raster:
    TRI_Raster = "C:\\Users\\Documents\\ArcGIS\\Default.gdb\\rastercalc1" # provide a default value if unspecified

# Local variables:
MIN = Input_raster
MAX = Input_raster

# Process: 3x3Max
arcpy.gp.FocalStatistics_sa(Input_raster, MAX, "Rectangle 3 3 CELL", "MAXIMUM", "DATA")

# Process: 3x3Min
arcpy.gp.FocalStatistics_sa(Input_raster, MIN, "Rectangle 3 3 CELL", "MINIMUM", "DATA")

# Process: Raster Calculator
arcpy.gp.RasterCalculator_sa("SquareRoot(Abs((Square(\"%MAX%\") - Square(\"%MIN%\"))))", TRI_Raster)

Đây không phải là TRI được mô tả trong câu hỏi. Trong thực tế, nó không thể được coi là đo lường "độ chắc chắn", bởi vì nó thay đổi khi bạn chỉ thay đổi mốc thời gian dọc. Chẳng hạn, TRI của một vùng lân cận 3x3 có các giá trị (1,2, ..., 9) sẽ là sqrt (9 ^ 2-1 ^ 2) = 8,9, nhưng thêm 100 vào các giá trị (chỉ thay đổi mốc thời gian mà không cần thay đổi hình dạng của bề mặt) sẽ cho sqrt (109 ^ 2-101 ^ 2) = 41.
whuber

0

Điều này nghe có vẻ rất giống với Chỉ số vị trí địa hình, một quá trình tôi đã sử dụng gần đây cho một trong các dự án của mình. Có một ArcScript trên trang hỗ trợ ESRI, hộp công cụ Địa hình trên trang Trung tâm tài nguyên ESRI và một số thông tin khác về quy trình trên trang Jenness Enterprises .


2
TPI là một số liệu rất khác so với độ nhám. Xin vui lòng, không đi vào con đường sử dụng chúng thay thế cho nhau. Tôi tin rằng Chỉ số vị trí địa hình là truyền thống được tính là [dem - focalmean (dem)].
Jeffrey Evans
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.