আমি আমার নিজের প্রশ্নের উত্তর দেওয়ার চেষ্টা করব - dun dun dun।
আমি সাগা জিআইএস ব্যবহার করে তাদের প্লাঞ্চন এবং ডারবক্স (পিডি) ভিত্তিক ভরাট সরঞ্জাম (এবং তাদের ওয়াং এবং লিউ (ডাব্লুএল) ভিত্তিক 6 টি পৃথক ওয়াটারশেডের জন্য ভরাট সরঞ্জামটি ব্যবহার করে) ভরাট জলাশয়ের পার্থক্যগুলি পরীক্ষা করে দেখি (এখানে আমি ফলাফলের দুটি সেট দেখাই - এগুলি waters টি ওয়াটারশেড জুড়ে একই রকম ছিল) আমি "ভিত্তিক" বলি, কারণ সর্বদা এই প্রশ্নটি রয়েছে যে আলগোরিদম বা অ্যালগরিদমের নির্দিষ্ট প্রয়োগের কারণে পার্থক্য রয়েছে কিনা।
ওয়াটারশেড শেফফাইলগুলি ইউএসজিএস ব্যবহার করে মোসিকেড এনইডি 30 মিটার ডেটা ক্লিপ করে জলাশয় ডেমগুলি উত্পাদিত হয়েছিল। প্রতিটি বেস ডিএম জন্য, দুটি সরঞ্জাম চালানো হয়েছিল; প্রতিটি সরঞ্জামের জন্য একটিমাত্র বিকল্প রয়েছে, সর্বনিম্ন প্রয়োগকৃত opeাল, যা উভয় সরঞ্জামে 0.01 এ সেট করা হয়েছিল।
ওয়াটারশেডগুলি ভরাট হওয়ার পরে, ফলস্বরূপ গ্রিডগুলির পার্থক্য নির্ধারণ করতে আমি রাস্টার ক্যালকুলেটর ব্যবহার করেছি - এই পার্থক্যগুলি কেবলমাত্র দুটি অ্যালগরিদমের ভিন্ন আচরণের কারণে হওয়া উচিত।
পার্থক্য বা পার্থক্যের অভাব উপস্থাপন করা চিত্রগুলি (মূলত গণনা করা পার্থক্য রাস্টার) নীচে উপস্থাপন করা হয়েছে। পার্থক্যের গণনা করতে ব্যবহৃত সূত্রটি হ'ল: ((PD_Filled - WL_Filled) / PD_Filled) * 100) - কোষের ভিত্তিতে কোষের শতাংশের পার্থক্য দিন। বর্ণের ধূসর কোষগুলি এখন পার্থক্য দেখায়, রঙে কোষগুলিকে লাল করে ফলে পিডি উচ্চতা আরও বেশি ছিল এবং কোষগুলি সবুজ বর্ণের ফলে ডাব্লুএল উচ্চতা আরও ছিল indic
1 ম ওয়াটারশেড: ক্লিয়ার ওয়াটারশেড, ওয়াইমিং
এই চিত্রগুলির জন্য কিংবদন্তি এখানে:
পার্থক্য কেবল -0.0915% থেকে + 0.0910% পর্যন্ত range চ্যানেলগুলিতে ডাব্লুএল অ্যালগরিদম কিছুটা উঁচুতে এবং পিডি স্থানীয়ীকৃত শিখরের চারপাশে কিছুটা উঁচুতে পার্থক্যগুলি শিখর এবং সংকীর্ণ স্ট্রিম চ্যানেলগুলির আশেপাশে নিবদ্ধ বলে মনে হচ্ছে।
ওয়াটারশেড, ওয়াইমিং, জুম 1
ওয়াটারশেড, ওয়াইমিং, জুম 2 সাফ করুন
২ য় জলাশয়: উইনিপেসকি নদী, এনএইচ
এই চিত্রগুলির জন্য কিংবদন্তি এখানে:
উইনিপেসকি নদী, এনএইচ, জুম ১
পার্থক্য কেবল -0.323% থেকে + 0.315% পর্যন্ত range চ্যানেলগুলিতে ডাব্লুএল অ্যালগরিদম কিছুটা উঁচুতে এবং পিডি স্থানীয়ীকৃত শিখরের চারপাশে কিছুটা উঁচুতে পার্থক্যগুলি শিখর এবং সংকীর্ণ স্ট্রিম চ্যানেলের আশেপাশে কেন্দ্রীভূত বলে মনে হয়।
সুউওও, ভাবনা? আমার কাছে, পার্থক্যগুলি তুচ্ছ বলে মনে হচ্ছে সম্ভবত আরও গণনাগুলিকে প্রভাবিত করবে না; কেউ রাজি? এই ছয়টি জলাশয়ের জন্য আমি আমার ওয়ার্কফ্লো সম্পূর্ণ করে পরীক্ষা করছি am
সম্পাদনা করুন: আরও তথ্য। দেখে মনে হয় যে ডাব্লুএল অ্যালগরিদম বিস্তৃত কম স্বতন্ত্র চ্যানেলগুলির দিকে নিয়ে যায় যা উচ্চ টপোগ্রাফিক সূচক মানগুলি (আমার চূড়ান্ত ডেরাইভেটিভ ডেটা সেট) তৈরি করে। নীচে বাম চিত্রটি পিডি অ্যালগরিদম, ডানদিকে চিত্রটি ডাব্লুএল অ্যালগরিদম।
এই চিত্রগুলি একই অবস্থানের টপোগ্রাফিক সূচকে পার্থক্য দেখায় - ডাব্লুএলএল ছবিতে প্রশস্ত জলাবদ্ধ অঞ্চল (আরও চ্যানেল - রেড্ডার, উচ্চতর টিআই); বাম দিকে পিডি ছবিতে সংকীর্ণ চ্যানেলগুলি (কম ভিজা অঞ্চল - কম লাল, সংকীর্ণ লাল অঞ্চল, নিম্নতর টিআই অঞ্চল)
অতিরিক্ত হিসাবে, এখানে পিডি কীভাবে একটি হতাশা (বাম) পরিচালনা করে এবং ডাব্লুএল এটি কীভাবে পরিচালনা করে (ডানদিকে) - ডাব্লুএলএল ভরাট আউটপুটে হতাশার মধ্য দিয়ে উত্থিত কমলা (নিম্ন টপোগ্রাফিক সূচক) বিভাগ / লাইন ক্রসিংয়ের বিষয়টি লক্ষ্য করুন?
সুতরাং, পার্থক্যগুলি যদিও সামান্য, অতিরিক্ত বিশ্লেষণের মাধ্যমে সূচিত হবে বলে মনে হয়।
যদি কেউ আগ্রহী হন তবে এখানে আমার পাইথন লিপিটি রয়েছে:
#! /usr/bin/env python
# ----------------------------------------------------------------------
# Create Fill Algorithm Comparison
# Author: T. Taggart
# ----------------------------------------------------------------------
import os, sys, subprocess, time
# function definitions
def runCommand_logged (cmd, logstd, logerr):
p = subprocess.call(cmd, stdout=logstd, stderr=logerr)
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# environmental variables/paths
if (os.name == "posix"):
os.environ["PATH"] += os.pathsep + "/usr/local/bin"
else:
os.environ["PATH"] += os.pathsep + "C:\program files (x86)\SAGA-GIS"
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# global variables
WORKDIR = "D:\TomTaggart\DepressionFillingTest\Ran_DEMs"
# This directory is the toplevel directoru (i.e. DEM_8)
INPUTDIR = "D:\TomTaggart\DepressionFillingTest\Ran_DEMs"
STDLOG = WORKDIR + os.sep + "processing.log"
ERRLOG = WORKDIR + os.sep + "processing.error.log"
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# open logfiles (append in case files are already existing)
logstd = open(STDLOG, "a")
logerr = open(ERRLOG, "a")
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# initialize
t0 = time.time()
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# loop over files, import them and calculate TWI
# this for loops walks through and identifies all the folder, sub folders, and so on.....and all the files, in the directory
# location that is passed to it - in this case the INPUTDIR
for dirname, dirnames, filenames in os.walk(INPUTDIR):
# print path to all subdirectories first.
#for subdirname in dirnames:
#print os.path.join(dirname, subdirname)
# print path to all filenames.
for filename in filenames:
#print os.path.join(dirname, filename)
filename_front, fileext = os.path.splitext(filename)
#print filename
if filename_front == "w001001":
#if fileext == ".adf":
# Resetting the working directory to the current directory
os.chdir(dirname)
# Outputting the working directory
print "\n\nCurrently in Directory: " + os.getcwd()
# Creating new Outputs directory
os.mkdir("Outputs")
# Checks
#print dirname + os.sep + filename_front
#print dirname + os.sep + "Outputs" + os.sep + ".sgrd"
# IMPORTING Files
# --------------------------------------------------------------
cmd = ['saga_cmd', '-f=q', 'io_gdal', 'GDAL: Import Raster',
'-FILES', filename,
'-GRIDS', dirname + os.sep + "Outputs" + os.sep + filename_front + ".sgrd",
#'-SELECT', '1',
'-TRANSFORM',
'-INTERPOL', '1'
]
print "Beginning to Import Files"
try:
runCommand_logged(cmd, logstd, logerr)
except Exception, e:
logerr.write("Exception thrown while processing file: " + filename + "\n")
logerr.write("ERROR: %s\n" % e)
print "Finished importing Files"
# --------------------------------------------------------------
# Resetting the working directory to the ouputs directory
os.chdir(dirname + os.sep + "Outputs")
# Depression Filling - Wang & Liu
# --------------------------------------------------------------
cmd = ['saga_cmd', '-f=q', 'ta_preprocessor', 'Fill Sinks (Wang & Liu)',
'-ELEV', filename_front + ".sgrd",
'-FILLED', filename_front + "_WL_filled.sgrd", # output - NOT optional grid
'-FDIR', filename_front + "_WL_filled_Dir.sgrd", # output - NOT optional grid
'-WSHED', filename_front + "_WL_filled_Wshed.sgrd", # output - NOT optional grid
'-MINSLOPE', '0.0100000',
]
print "Beginning Depression Filling - Wang & Liu"
try:
runCommand_logged(cmd, logstd, logerr)
except Exception, e:
logerr.write("Exception thrown while processing file: " + filename + "\n")
logerr.write("ERROR: %s\n" % e)
print "Done Depression Filling - Wang & Liu"
# Depression Filling - Planchon & Darboux
# --------------------------------------------------------------
cmd = ['saga_cmd', '-f=q', 'ta_preprocessor', 'Fill Sinks (Planchon/Darboux, 2001)',
'-DEM', filename_front + ".sgrd",
'-RESULT', filename_front + "_PD_filled.sgrd", # output - NOT optional grid
'-MINSLOPE', '0.0100000',
]
print "Beginning Depression Filling - Planchon & Darboux"
try:
runCommand_logged(cmd, logstd, logerr)
except Exception, e:
logerr.write("Exception thrown while processing file: " + filename + "\n")
logerr.write("ERROR: %s\n" % e)
print "Done Depression Filling - Planchon & Darboux"
# Raster Calculator - DIff between Planchon & Darboux and Wang & Liu
# --------------------------------------------------------------
cmd = ['saga_cmd', '-f=q', 'grid_calculus', 'Grid Calculator',
'-GRIDS', filename_front + "_PD_filled.sgrd",
'-XGRIDS', filename_front + "_WL_filled.sgrd",
'-RESULT', filename_front + "_DepFillDiff.sgrd", # output - NOT optional grid
'-FORMULA', "(((g1-h1)/g1)*100)",
'-NAME', 'Calculation',
'-FNAME',
'-TYPE', '8',
]
print "Depression Filling - Diff Calc"
try:
runCommand_logged(cmd, logstd, logerr)
except Exception, e:
logerr.write("Exception thrown while processing file: " + filename + "\n")
logerr.write("ERROR: %s\n" % e)
print "Done Depression Filling - Diff Calc"
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# finalize
logstd.write("\n\nProcessing finished in " + str(int(time.time() - t0)) + " seconds.\n")
logstd.close
logerr.close
# ----------------------------------------------------------------------