กำลังคำนวณดัชนีความทนทานของภูมิประเทศใน ArcGIS Desktop หรือไม่


15

ไม่มีใครรู้วิธีคำนวณดัชนีความทนทานของ Topographicในเดสก์ท็อป ArcGIS โดยไม่ต้องเข้าถึงบรรทัดคำสั่ง ArcInfo Workstation?

"ดัชนีความทนทานต่อภูมิประเทศ (TRI) คือการวัดที่พัฒนาโดย Riley, et al. (1999) เพื่อแสดงจำนวนความแตกต่างของการยกระดับระหว่างเซลล์ที่อยู่ติดกันของตารางระดับความสูงแบบดิจิตอลกระบวนการคำนวณความแตกต่างของค่าระดับความสูงจากเซลล์กลาง และเซลล์แปดเซลล์ที่ล้อมรอบมันทันทีจากนั้นมันยกกำลังสองค่าความแตกต่างของระดับความสูงเพื่อให้พวกมันทั้งหมดเป็นบวกและหาค่าเฉลี่ยกำลังสองดัชนีความทนทานต่อภูมิประเทศนั้นได้มาจากการหาค่ารากที่สองของค่าเฉลี่ยนี้ ระหว่างจุดใด ๆ บนกริดกับพื้นที่โดยรอบ " - จากบทเพลง aml ของ Jeffrey Evans


ขึ้นอยู่กับรุ่นของ ArcGIS arcscripts.esri.com/details.asp?dbid=12646การสนทนาบางส่วนจากฟอรัมก่อนหน้าฟอรัม. esri.com/Thread.asp?c=93&f=982&t=145448ไม่ได้ทำเครื่องหมาย แต่การค้นหามีคำว่าjennessent.com /arcgis/surface_area.htm

คำตอบ:


18

ฉันอยากจะแนะนำให้ดูนอก ArcGIS) ง่ายมากโดยใช้ซอฟต์แวร์ gdal ฟรี: http://www.gdal.org/gdaldem.html

gdaldem TRI input_dem output_TRI_map

หรือถ้าคุณต้องการมันใน saga gis: http://www.saga-gis.org/saga_modules_doc/ta_morphometry/ta_morphometry_16.html


11
+1 ฉันรู้สึกซาบซึ้งที่ได้เห็นการแก้ปัญหาที่ไม่ใช่ของ ArcGIS ต่อปัญหา ArcGIS :-) นี่เป็นเรื่องของหลักการไม่ใช่เป็นปฏิปักษ์ต่อ ArcGIS โดยเฉพาะ สิ่งหนึ่งที่ควรหลีกเลี่ยงการถูกล็อคไว้ในโซลูชันซอฟต์แวร์เดียว: ไม่เพียง แต่จะมีความเสี่ยงอย่างมืออาชีพ แต่ยังยับยั้งสติปัญญา
whuber

ฉันรู้ว่าฉันขอวิธีแก้ปัญหาเฉพาะของ arcgis แต่ฉันยอมรับสิ่งนี้เพราะมันเป็นความตรง สาธารณูปโภคของ GDAL นั้นหาได้ง่ายและติดตั้งได้รับการยอมรับในระดับสากลว่าดีที่สุดในชั้นเรียนและคำสั่งในการสร้างผลิตภัณฑ์นี้คือคำจำกัดความของความเรียบง่าย
matt wilkie

18

ลองทำพีชคณิตนิดหน่อย

ให้ x เป็นค่าในจตุรัสกลาง ให้ x_i, i = 1, .. , 8 จัดทำดัชนีค่าในพื้นที่ใกล้เคียง และปล่อยให้ r เป็นดัชนีความทนทานของภูมิประเทศ สูตรนี้บอกว่า r ^ 2 เท่ากับผลรวมของ (x_i - x) ^ 2 สองสิ่งที่เราสามารถคำนวณได้อย่างง่ายดายคือ (i) ผลรวมของค่าในย่านใกล้เคียงเท่ากับ s = Sum {x_i} + x; และ (ii) ผลรวมของกำลังสองของค่าเท่ากับ t = Sum {x_i ^ 2} + x ^ 2 (นี่คือสถิติโฟกัสสำหรับกริดดั้งเดิมและสแควร์)

การขยายกำลังสองให้

r ^ 2 = ผลรวม {(x_i - x) ^ 2}

= ผลรวม {x_i ^ 2 + x ^ 2 - 2 * x * x_i}

= ผลรวม {x_i ^ 2} + 8 * x ^ 2 - 2 * x * รวม {x_i}

= [รวม {x_i ^ 2} + x ^ 2] + 7 * x ^ 2 - 2 * x * [รวม {x_i} + x - x]

= t + 7 * x ^ 2 - 2 * x * [รวม {x_i} + x] + 2 * x ^ 2

= T + 9 * x ^ 2 - 2 * x * s

ตัวอย่างเช่นพิจารณาพื้นที่ใกล้เคียง

1 2 3
4 5 6
7 8 9

ที่นี่ x = 5, s = 1 + 2 + ... + 9 = 45 และ t = 1 + 4 + 9 + ... + 81 = 285 จากนั้น

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

และความเท่าเทียมกันของพีชคณิตบอกว่า

60 = r ^ 2 = 285 + 9 * 5 ^ 2 -2 * 5 * 45 = 285 + 225 - 450 = 60 ซึ่งตรวจสอบ

เวิร์กโฟลว์จึงเป็น:

ได้รับ DEM

  • คำนวณ s = ผลรวมของจุดโฟกัส (พื้นที่ละแวกใกล้เคียง 3 x 3 ตาราง) ของ [DEM]

  • คำนวณ DEM2 = [DEM] * [DEM]

  • คำนวณ t = ผลรวมโฟกัส (พื้นที่ใกล้เคียง 3 x 3 ตร.) ของ [DEM2]

  • คำนวณ r2 = [t] + 9 * [DEM2] - 2 * [DEM] * [s]

ส่งคืน r = Sqrt ([r2])

ประกอบด้วยการทำงานของกริด 9 รายการในโตโต้ซึ่งทั้งหมดนั้นรวดเร็ว พวกมันจะถูกนำไปใช้ในเครื่องคิดเลขแบบแรสเตอร์ (ArcGIS 9.3 และรุ่นก่อนหน้า) บรรทัดคำสั่ง (ทุกรุ่น) และตัวสร้างแบบจำลอง (ทุกรุ่น)

BTW นี่ไม่ใช่ "การเปลี่ยนแปลงระดับความสูงโดยเฉลี่ย" (เนื่องจากการเปลี่ยนแปลงระดับความสูงสามารถเป็นค่าบวกและค่าลบ): มันเป็นค่าเฉลี่ยของการเปลี่ยนแปลงระดับความสูงแบบจัตุรัส มันเป็นเรื่องที่ไม่เท่ากับ "ดัชนีภูมิประเทศตำแหน่ง" อธิบายไว้ที่http://arcscripts.esri.com/details.asp?dbid=14156ซึ่ง (ตามเอกสาร) เท่ากับ x - (s - x) / 8 ในตัวอย่างข้างต้น TPI เท่ากับ 5 - (45-5) / 8 = 0 ในขณะที่ TRI ที่เราเห็นคือ Sqrt (60)


1
ขอบคุณบิล ฉันซาบซึ้งที่ได้เห็นเฉพาะของเครื่องมือหรือการทำงาน จากใครก็ตามที่มีการลงทุนที่เหมาะสมกับเวลาและพลังงานทางปัญญาสามารถสร้างอุปกรณ์ใหม่เพื่อทำงานนี้โดยใช้เครื่องมือที่พวกเขามีอยู่ในมือ มันเป็นข้อมูลเช่นนี้ซึ่งจะทำให้ GIS.se เป็นบริการที่มีประโยชน์ในระยะยาว
matt wilkie

1
+1 คำอธิบายที่ดี ฉันเดาว่านี่หมายถึงพื้นผิวที่สูงชัน แต่เรียบเนียนอาจมี TRI ที่สูงกว่าพื้นผิวที่เรียบ
Kirk Kuykendall

1
@ เคิร์กนั่นถูกต้อง มีวิธีที่จะลบผลกระทบของความชันในพื้นที่เพื่อให้ได้ดัชนีของความทนทาน "ญาติ" หากคุณต้องการ แม้ว่าฉันจะไม่ได้ทำรายละเอียดออกมา แต่ฉันเชื่อว่าการลบตัวคูณสากลจำนวนหนึ่งของ (c * a) ^ 2 จาก r2 - โดยที่cคือเซลล์ขนาดใหญ่และaคือความลาดเอียง (เพิ่มขึ้น / เรียกใช้ไม่ใช่มุมหรือ ร้อยละ) - ควรจะทำเคล็ดลับ
whuber

@whuber คำตอบของคุณมีจำนวนความรู้ที่น่าอัศจรรย์เสมอ !! ขอเพียงหนึ่งคำถาม: นั่นหมายความว่าเป็นไปไม่ได้ที่จะคำนวณ TRI ของเซลล์ซึ่งตั้งอยู่ที่ขอบของแรสเตอร์หรือไม่? เนื่องจากพวกมันไม่ได้ถูกล้อมรอบด้วยเซลล์ข้างเคียงเลยเหรอ?
marco

1
@marco TRI สามารถประมาณได้แม้ในเซลล์ขอบเขต ตามที่ระบุในคำถามมันควรจะแสดงเป็นค่าเฉลี่ยมากกว่าผลรวมโดยการหารค่าที่ฉันให้ที่นี่ด้วย 9 ที่เซลล์เขตแดนค่า "9" ในสูตรและในตัวหารต้องถูกแทนที่ด้วย จำนวนของค่าที่ไม่ใช่ศูนย์ภายใน 3X3 Neighborhood: 6 สำหรับเซลล์ขอบ, 4 สำหรับเซลล์มุม กริดของค่าดังกล่าวสามารถหาได้จากผลรวมโฟกัสของกริดตัวบ่งชี้ของค่าดั้งเดิม (มันมี 1 ในเซลล์ที่ไม่ใช่ NoData ทั้งหมดและ 0 ของที่อื่น ๆ ) ใช้กริดนั้นแทนค่าคงที่ "9" ในสูตร
whuber

3

Riley et al., (1999) TRI คือสแควร์รูทของการเบี่ยงเบนผลรวมกำลังสอง นี่ใกล้เคียงกับความแปรปรวนที่ไม่ลดสัดส่วนมาก หากคุณต้องการการนำ TRI ของ Riley มาใช้โปรดทำตามวิธีการที่ระบุโดย @whuber (วิธีการที่ให้บริการโดย @ user3338736 ทำให้ตัวชี้วัดทั่วไปมีค่าสูงสุดในหน้าต่างและไม่ได้เป็นตัวแทนของเซลล์ตามการเปลี่ยนแปลงของเซลล์)

ฉันมีรูปแบบของ TRI ในกล่องเครื่องมือ Geomorphometry & Gradient Metric ArcGISซึ่งเป็นความแปรปรวนของหน้าต่างที่ระบุ ฉันพบว่ามันมีความยืดหยุ่นและสมเหตุสมผลมากกว่านี้ นอกจากนี้ยังมีเมตริกการกำหนดค่าพื้นผิวอื่น ๆ รวมถึง rugosity และ dissection


ขอบคุณเจฟฟรีย์ ด้วยเหตุผลบางอย่างที่หน้านั้นว่างเปล่ายกเว้นชื่อใน Firefox คิดว่ามันใช้ได้ใน Chrome อาจเป็นหนึ่งในส่วนขยายของฉัน ฉันยินดีที่จะรายงานอย่างน้อยว่าสคริปต์ทำงานไม่เปลี่ยนแปลงใน 10.2.2 (สคริปต์ที่ฉันทดสอบอยู่แล้ว)
matt wilkie

1

- แก้ไข: ข้อมูลด้านล่างไม่ถูกต้อง โปรดดูโพสต์โดย whuber อธิบายกระบวนการที่ถูกต้อง .....

TRI (Riley 1999) และ TPI (Jenness 2002) มีความคล้ายคลึง แต่ต่างกัน

ในการคำนวณ TRI และ TPI โดยใช้ ArcGIS 10.x ...

ขั้นตอนที่ 1:ใช้เครื่องมือ Focal Statistics เพื่อสร้างชุดข้อมูลแรสเตอร์ใหม่ 2 ชุดจาก DEM

Raster 1 "MAX") พื้นที่ใกล้เคียง: สี่เหลี่ยมผืนผ้าความสูง: 3 ความกว้าง: 3 หน่วย: เซลล์ประเภทสถิติ: สูงสุด

Raster 2 "MIN") พื้นที่ใกล้เคียง: สี่เหลี่ยมผืนผ้าความสูง: 3 ความกว้าง: 3 หน่วย: เซลล์ประเภทสถิติ: ต่ำสุด

ขั้นตอนที่ 2:ใช้ Raster Calculator เพื่อทำหน้าที่ต่อไปนี้ใน 2 ชุดข้อมูลแรสเตอร์ที่คุณเพิ่งสร้างขึ้น

สำหรับ TRI: SquareRoot (Abs ((สแควร์ ("% MAX%") - สแควร์ ("% MIN%"))))

สำหรับ TPI: ("% อินพุต DEM%" - "% MIN%") / ("% MAX%" - "% MIN%")

นี่คือตัวอย่างโค้ดไพ ธ อนที่ส่งออกจากแบบจำลองที่ฉันสร้างขึ้นสำหรับ 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)

นี่ไม่ใช่ TRI ที่อธิบายไว้ในคำถาม ที่จริงแล้วมันไม่สามารถคิดได้ว่าเป็นการวัด "ความทนทาน" เลยเพราะมันจะเปลี่ยนเมื่อคุณเพียงแค่เปลี่ยนตัวเลขแนวตั้ง ตัวอย่างเช่น TRI ของคุณในละแวกใกล้เคียง 3x3 ที่มีค่า (1,2, ... , 9) จะเป็น sqrt (9 ^ 2-1 ^ 2) = 8.9 แต่เพิ่ม 100 ให้กับค่า (ซึ่งเพิ่งเปลี่ยนตัวเลขโดยไม่ต้อง การเปลี่ยนรูปร่างของพื้นผิวทั้งหมด) ให้ sqrt (109 ^ 2-101 ^ 2) = 41
whuber

0

ฟังดูเหมือนดัชนีตำแหน่งทางภูมิศาสตร์ซึ่งเป็นกระบวนการที่ฉันใช้เมื่อเร็ว ๆ นี้สำหรับหนึ่งในโครงการของฉัน มีความเป็นArcScriptบนหน้าสนับสนุน ESRI เป็นกล่องภูมิประเทศบนหน้า ESRI ศูนย์วิทยบริการและบางข้อมูลเพิ่มเติมเกี่ยวกับกระบวนการในJenness รัฐวิสาหกิจหน้า


2
TPI เป็นตัวชี้วัดที่แตกต่างจากความหยาบ โปรดอย่าลงไปตามทางที่จะใช้มันแทนกันได้ ฉันเชื่อว่าดัชนีตำแหน่งทางภูมิประเทศถูกคำนวณแบบดั้งเดิมเป็น [dem - focalmean (dem)]
Jeffrey Evans
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.