খুব বড় ল্যান্ড কভার ডেটাसेटকে কীভাবে পুনরায় শ্রেণিবদ্ধ করবেন?


10

আলাস্কার ( ডাউনলোড লিঙ্ক ) জন্য NLCD2001 ল্যান্ড কভার ডেটাসেট বিবেচনা করুন । আমার এই ডেটাসেটটি পুনরায় শ্রেণিবদ্ধ করা দরকার যাতে 41, 42 এবং 43 মানের পিক্সেলগুলি সংরক্ষণ করা যায়; অন্যান্য সমস্ত পিক্সেল মান নোডাটা (বা 0 প্রয়োজন হলে) হওয়া উচিত।

এটি একটি সাধারণ টাস্কের মতো বলে মনে হচ্ছে, কেবল পুনরায় শ্রেণিবদ্ধকরণ সরঞ্জামটিতে একটি কল প্রয়োজন। দুর্ভাগ্যক্রমে, প্রতিটি কল ফলাফল অস্পষ্ট এবং অসহায় ত্রুটি বার্তায়:

Executing: Reclassify "D:\ak_nlcd_2001_land_cover_3-13-08_se5.img" Value "0 40 0;41 41;42 42;43 43;44 255 0;NODATA 0" "D:\alaska_reclassified.tif" DATA 
Start Time: Thu Jan 03 09:23:13 2013
ERROR 999998: Unexpected Error.
Failed to execute (Reclassify).
Failed at Thu Jan 03 09:23:13 2013 (Elapsed Time: 0.00 seconds)

আমি কীভাবে এই রাস্টার ডেটাসেটটিকে পুনরায় শ্রেণিবদ্ধ করতে পারি? আমি স্পেশিয়াল অ্যানালিস্ট এক্সটেনশন সক্ষম করে আর্কিটেলগ 10.0, বিল্ড 4000 ব্যবহার করছি।


অ্যাট্রিবিউট দ্বারা এক্সট্রাক্ট করা আমার প্রয়োজন অনুসারেও প্রদর্শিত হয় তবে দুর্ভাগ্যক্রমে অন্য একটি "অপ্রত্যাশিত ত্রুটি" ঘটে in
ডগগোডোগল

অন্য একটি ডেটাসেট চেষ্টা করলাম? একই ডেটাসেটে ব্যর্থ দুটি প্রক্রিয়া আপনাকে আশ্চর্য করে তোলে ...
চাদ কুপার

2
সাধারণত, reclassifyএকটি সর্বশেষ অবলম্বন হওয়া উচিত, কারণ এটি সুযোগের দিক থেকে এতটাই সাধারণ যে পুনরায় শ্রেণিবদ্ধকরণটি গাণিতিকভাবে বা যৌক্তিকভাবে প্রকাশ করা সহজ হলে এটি প্রাপ্ত পদ্ধতির তুলনায় কম দক্ষ যেগুলি সম্ভবত ব্যবহার করে। বর্তমান ক্ষেত্রে, পুনঃনির্মাণের মানদণ্ডটি এত সহজ যে আপনার প্রথমে এটি Conসরাসরি বা গাণিতিক ক্রিয়াকলাপগুলির দ্বারা চেষ্টা করা উচিত (কারণ তারা দ্রুত)। উদাহরণস্বরূপ, "grid" * ("grid" >= 41) * ("grid" <= 43)এটি করা উচিত। র‌্যামের সমস্যা হওয়া উচিত নয় - স্থানিক বিশ্লেষক স্বয়ংক্রিয়ভাবে তার রাস্টার আই / ওগুলিকে উইন্ডোজ দেয় এবং এগুলি স্থানীয় ক্রিয়াকলাপ।
whuber

1
Inlistএটি একটি দুর্দান্ত সমাধান (+1)। conঅপারেশন চলাকালীন আমি র‍্যাম ব্যবহার করতে এবং নিরীক্ষণ করতে সক্ষম হয়েছি । এটি কখনই 180 এমবি অতিক্রম করে নি, যা কেবলমাত্র আরক্যাম্যাপ লঞ্চ করতে ব্যবহৃত র্যামের চেয়ে খুব বেশি বড়। আরকজিআইএস-এ টাইলিং স্বয়ংক্রিয় - আপনি এটি নিয়ন্ত্রণ করতেও পাবেন না (আপনি যদি সি / ফোর্টরান ইন্টারফেসে প্রোগ্রামিং না করেন)। দেখা যাচ্ছে যে র‌্যামের সীমাবদ্ধতাগুলি খুব চিন্তার বিষয় নয়।
whuber

1
@ শুভশক্তি, conশর্তটি সহ আমার পক্ষেও কাজ করেছিলেন "Value" >= 41 AND "Value" <= 43। আমি এই সমাধানটি দিয়ে চলেছি, তবে আমি নিশ্চিত নই যে অতিরিক্ত রাস্টার মান ভবিষ্যতে আগ্রহী হবে কিনা। স্পষ্টতই আমি ORযেখানে ক্লজটিতে একটি যুক্ত করতে পারলাম তবে এটি আরও জটিল হতে শুরু করে become InListপঠনযোগ্যতা এবং রক্ষণাবেক্ষণের ক্ষেত্রে সবচেয়ে সোজা-ফরোয়ার্ড সমাধান বলে মনে হচ্ছে।
ডগগোডৌগল

উত্তর:


9

প্রথম সংযুক্ত স্ক্রিপ্টটি আপনার একে এনএলসিডি ডেটা প্রায় 15 মিনিটের (i7, 12 জিবি র‌্যাম মেশিন) সাফল্যের সাথে পুনরায় শ্রেণিবদ্ধ করেছে। মূল ডেটাसेटটি প্রায় 7 গিগাবাইট হওয়ায় আপনি মেমরির সমস্যার মুখোমুখি হতে পারেন। আপনি যদি পুরো ডেটাসেটটি এক অংশে প্রক্রিয়া করতে না পারেন তবে পুনরায় শ্রেণিবদ্ধকরণের আগে এটি দ্বিতীয় স্ক্রিপ্টের সাথে বিভক্ত করার চেষ্টা করুন। আমার সুপারিশটি হ'ল ডেটাটির একটি ছোট উপসেট (টিওসি> ডেটা> এক্সপোর্ট ডেটা> এক্সটেন্ট (ডেটা ফ্রেম) এ রাইটার ক্লিক করুন এবং প্রথম স্ক্রিপ্টটি পরীক্ষা করুন Once পুরো ডেটাসেট বা এটিকে বিভক্ত করে দেওয়া ternative বিকল্পভাবে , এখানে উপলভ্য আরকজিআইএস 10.1 এসপি 1 এর জন্য 64 বিট ব্যাকগ্রাউন্ড জিওপ্রসেসিং পণ্যটি ডাউনলোড করার চেষ্টা করুন Best শুভ কামনা।

লিপি ঘ

# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *

# Overwrite output
env.overwriteOutput = 1

# Set environment settings
env.workspace = r'C:\temp'
Dir = env.workspace

# Set local variables
inRaster = Dir + "\\" + "nlcd_subset.img"
reclassField = "Value"
remap = RemapValue([[0, 40, 0], [41, 41],[42,42], [43,43], [44, 256, 0]])

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Execute Reclassify
outReclassify = Reclassify(inRaster, reclassField, remap, "NODATA")

# Save the output 
outReclassify.save(r"C:\temp\nlcd_test.img")

সম্পাদনা করুন : প্রসেসিংয়ের আগে আপনার যদি আপনার ডেটা বিভক্ত করতে হয় তবে এই স্ক্রিপ্টটির সাহায্য করা উচিত:

লিপি 2

# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Overwrite output
env.overwriteOutput = 1

# Set environment settings
env.workspace = r'C:\temp'
Dir = env.workspace

# Set local variables
inRaster = Dir + "\\" "nlcd" + "\\" + "nlcd_ak.img"
outFolder = Dir
reclassField = "Value"
remap = RemapValue([[0, 40, 0], [41, 41],[42,42], [43,43], [44, 256, 0]])

# Split Rasters
# Equally split a large TIFF image by number of images
arcpy.SplitRaster_management(inRaster, outFolder, "split", "NUMBER_OF_TILES", "#",
                             "NEAREST", "2 2", "#", "4", "PIXELS",\
                             "#", "#")

# List rasters for processing
rasters = arcpy.ListRasters()


for ras in rasters:
    print "processing..." + ras

    # Define new name
    name = "class_" + ras  

    # Execute Reclassify
    outReclassify = Reclassify(ras, reclassField, remap, "NODATA")

    # Save the output 
    outReclassify.save(Dir + "\\" + name)

3
পারফরম্যান্সের দৃষ্টিকোণ থেকে, আরকিপি ব্যবহার করে বিকল্প পদ্ধতির চেষ্টা করা আকর্ষণীয় হবে aster আপনি সম্ভবত মেমরির উদ্দেশ্যে রাস্টারটিকে টাইলসে বিভক্ত করতে চাইবেন, তবে আমি জানি যে জিডিএল দিয়ে পুনরায় শ্রেণিবদ্ধকরণ নিম্পি অ্যারে খুব দ্রুত।
ডেভিডএফ

@ ডেভিডএফ সম্মত হয়েছে, সম্ভবত কার্য সম্পাদনের ক্ষেত্রে উল্লেখযোগ্য উন্নতি হবে।
হারুন

টিপস জন্য আপনাকে ধন্যবাদ, হারুন। আমি অন্য কোনও কাজ শেষ করার সাথে সাথে এটিকে একটি রান দেব, যার মনে হচ্ছে রঙ মানচিত্রটি অপসারণ করা প্রয়োজন ( এখানে উল্লেখ করা হয়েছে )। এই পদ্ধতিটির জন্যও রাস্টারকে বিভক্ত করা প্রয়োজন, সুতরাং এটি আমাকে অবাক করে তোলে মেমরি-ব্যবহারের কারণে বা অন্য কোনও কারণে রিসালাইফাই আসলটি ব্যর্থ হয়েছে কিনা।
ডগগোডোগল

@ টোরিক সমস্যা নেই - আমি আমার দুটি সেন্ট দিতে পেরে খুশি। আমি মনে করি রঙের মানচিত্র অপসারণ করার উপায় নয়। পরিবর্তে, আমি বিভক্ত ডেটা বা 64 বিট ব্যাকগ্রাউন্ড প্রসেসিংয়ে ফোকাস করব would
হারুন

অ্যারন, মনে রাখবেন যে আপনি টাইলিংটি সম্পাদনের জন্য কোড সরবরাহ করেছেন, আপনি চিত্রের ফলাফলগুলি তৈরি করতে যে সাবসেট রাস্টার তৈরি করেছিলেন তা কীভাবে তৈরি করলেন? আমি স্প্লিটস্ট্রাস্টার টাইলিং সম্পূর্ণ করেছি (পুরো রাস্টার ডেটাসেটের 100 টি সাবসেট উত্পাদন করছি), এবং পুনরায় শ্রেণিবদ্ধ করার জন্য তাদের মধ্য দিয়ে লুপ করার চেষ্টা করেছি। পুনরায় শ্রেণিবদ্ধকরণ ব্যর্থ হয়েছে, দুর্ভাগ্যক্রমে, একই "অপ্রত্যাশিত ত্রুটি" বার্তাটির ফলস্বরূপ।
ডগগোডৌগল

4

এই পুনঃনির্মাণটি প্রকাশ করতে লজিক্যাল সরঞ্জামগুলির ব্যবহার সম্পর্কিত whwer একটি মন্তব্য করেছে । কিছুটা খননের পরে, আমি ইনলিস্টটি খুঁজে পেয়েছি , স্পেসিয়াল অ্যানালিস্টের লজিকাল ম্যাথ টুলসেটের অংশ হিসাবে, আমার প্রয়োজনীয়তা পূরণ করেছে।

import arcpy

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
from arcpy.sa import InList

# Pixel values of interest, named according to Table 2 of
#  http://landcover.usgs.gov/pdf/anderson.pdf
DECIDUOUS_FOREST = 41
EVERGREEN_FOREST = 42
MIXED_FOREST = 43

inRaster = r'D:\AK_NLCD_2001_land_cover_3-13-08\ak_nlcd_2001_land_cover_3-13-08_se5.img'
accepted_raster_values = [DECIDUOUS_FOREST, EVERGREEN_FOREST, MIXED_FOREST]
filteredAlaska = InList(inRaster, accepted_raster_values)
filteredAlaska.save(r'C:\alaska\ak_woods')

এটি এখন পর্যন্ত আমি সাদামাটা সমাধান খুঁজে পেতে পেরেছি, দ্রুত সম্পাদন করেছি এবং মূল ডেটাসেট টাইলিংয়ের কোনও বিবেচনার প্রয়োজন নেই। মেশিনের উপলভ্য র‍্যাম বিবেচনা করার দরকার নেই, কারণ এই সরঞ্জামটি সরাসরি ডিস্ক থেকে পড়বে এবং ফলাফলগুলি ডেস্কে সরাসরি সংরক্ষণ করবে।

ফিল্টার করা আলাস্কার ফলাফল ইনলিস্ট ব্যবহার করে


+1 ভাল কাজ এবং দুর্দান্ত সমাধান। কৌতূহলের বাইরে, প্রসেসিংটি কত সময় নিয়েছে?
হারুন

অ্যারোন, সমস্ত আলাস্কার প্রসেসিংয়ে 13 মিনিট এবং 23.4 সেকেন্ড সময় নেয়। নমুনা উপসেট , যা দ্বারা নির্মিত 100 সাব-সেট নির্বাচন সমানভাবে আকারের এক SplitRaster_management, 7.04 সেকেন্ড সময় লাগে।
ডগগোডোগল

আকর্ষণীয়, দুটি পদ্ধতির মধ্যে প্রায় একই প্রক্রিয়াজাতকরণ সময় (যেমন ধরে নিই আমরা একই সিস্টেম চালাচ্ছি)।
হারুন

আমার কাছে একটি ইন্টেল কোর 2 ডুয়ো ই 6850 @ 3 গিগাহার্টজ, 4 জিবি র‌্যাম, 64-বিট উইন্ডোজ 7 চলছে running আমি শীঘ্রই আপনার সমাধানের একটি সময় বিশ্লেষণ করব। আমি আপাতত আরক 10.0 এর সাথে আটকে আছি, অন্যথায় আমি 64-বিট ব্যাকগ্রাউন্ড প্রসেসিং তদন্ত করব।
ডগগোডৌগল

1

মূল পোস্টিংয়ে উল্লিখিত ডেটাসেটটি আমি আর্কম্যাপের 10.4 ডিভ সংস্করণ সহ ব্যবহার করেছি। আউটপুট রাস্টার যখন গ্রিড হয় তখন পুনরায় শ্রেণিবদ্ধকরণ ব্যর্থ হয় কারণ পুনরায় শ্রেণিবদ্ধ কক্ষের গণনাগুলি গ্রিড ভ্যাটের COUNT ফিল্ডে কী সংরক্ষণ করতে পারে তা উপচে পড়ছে। যখন আউটপুট রাস্টার একটি fgdb হয়, তখন এটি উইন্ডোজ ৮ এ চালিত পুরানো 4 কোর মেশিনে প্রায় 11 মিনিটের মধ্যে আমার জন্য সফলভাবে সম্পাদন করে Non নন-গ্রিড রাস্টার ফর্ম্যাটগুলি কাজ করা উচিত যেহেতু তারা গণনা ক্ষেত্রের জন্য ডাবল নির্ভুলতা ভাসমান মান ব্যবহার করে। আমি আশা করি আপনার 10.2 বা 10.3 প্রকাশিত সংস্করণগুলির সাথে একই আচরণ পাওয়া উচিত। আমরা পুনরায় শ্রেণিবদ্ধের জন্য ডিফল্ট আউটপুট জন্য একটি ভিন্ন রাস্টার ফর্ম্যাট ব্যবহার করে তদন্ত করব।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.