Gdal_proximity সহ কোনও বৈশিষ্ট্যটির দূরত্ব কীভাবে গণনা করবেন?


28

আমি মার্কিন যুক্তরাষ্ট্রে নিকটতম প্রধান নদীর (নিম্নে 48 রাজ্য) দূরত্ব খুঁজে পেতে gdal_proximity ব্যবহার করছি। আমি কনস অ্যালবার্সে এনএইচডি + নেটওয়ার্ক ফ্লোলাইনগুলি প্রেরণ করেছি (epsg: 5070), স্ট্রিম অর্ডার> নির্বাচিত নদী> 5 এবং রাস্টেরাইজড, 255 হিসাবে জলন্ত নদী, 0 হিসাবে কোন নদী নেই This এটি অনেক ভাল, তবে এখন আমার দূরত্ব খুঁজে বের করতে হবে 50 কিলোমিটারের মধ্যে সাইটের জন্য নিকটতম নদীতে। ইনপুট ফাইলটি মহাদেশীয় স্কেলে 30 মি রেজোলিউশনে, তাই খুব বড়, তবে রূপান্তরটি একটি সাধারণ জিডাল_প্রক্সিমিটি কমান্ড হওয়া উচিত:

gdal_proximity.bat -values 255 -distunits GEO -maxdist 50000 -nodata -999 infile.tif outfile.tif -co COMPRESS=DEFLATE -co BIGTIFF=YES -co TILED=YES

এটি সর্বশেষতম কাজ বলে মনে হচ্ছে তবে এটি আউটপুটে একটি অদ্ভুত জ্যামিতিক প্যাটার্ন উত্পাদন করছে (চিত্র দেখুন)। আউটপুটে উপস্থিত ডেটা সঠিকভাবে প্রক্রিয়া করা হয়েছে। কেউ আউটপুট কেন এত অনুপস্থিত পরামর্শ দিতে পারেন?

নদীর সান্নিধ্য

সম্পাদনা করুন: এটি বৈকল্পিক প্যারামিটারগুলির কারণে হয়েছে কিনা তা পরীক্ষা করতে, আমি এই কনফিগারেশনে আবার gdal_proximity চালিয়েছি:

gdal_proximity.bat H:\data\tmp\NHDplus_network_flowline_SO6plus.tif H:/data/tmp/NHDplus_network_flowline_SO6plus_proximity.tif -values 255 -maxdist 50000 -of GTiff

যা মূলত একই ফলাফল পেয়েছিল:

নদীর সান্নিধ্য, কোনও alচ্ছিক পরামিতি নেই

আমার একমাত্র চিন্তা এটি রাস্টার আকারের সাথে সম্পর্কিত হতে পারে (~ 100 গিগাবাইট কমপ্রেসড As কার্যকরভাবে বিশ্লেষণ?


1
আপনি টাইলড = ইয়েস বন্ধ করলে কী হবে? এছাড়াও, আপনি যদি জিও থেকে পিক্সেল এ পরিবর্তন করেন তবে এটি কী কাজ করে? (আউটপুটটি উপযুক্ত নাও হতে পারে তবে সমস্যাটি সংকীর্ণ হতে পারে)
স্টিভেন কে

পরামর্শের জন্য ধন্যবাদ - আসল প্রশ্নের একটি উত্তর যুক্ত করেছেন।
আর রোডস

আপনার infile.tif কি রেজোলিউশন?
শাহরিয়ার

2
আপনি কি ব্যাচগুলিতে (লাইন) জিডিএল ব্যবহার করে ডেটা পড়ার চেষ্টা করতে পারেন এবং দেখুন যে সমস্যাটি নিজেই ডেটা বা কিউজিআইএস এটি রূপায়িত করতে সক্ষম হচ্ছে না? এই সমস্যাটি খুঁজে পাওয়ার প্রথম পদক্ষেপটি একটি নমুনা এওআইয়ের স্থানিক পরিমাণকে হ্রাস করে।
রুটারএইচ

উত্তর:


3

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

এই অ্যালগরিদমকে সহায়তা করার জন্য সংখ্যাসূচক ডেটাটাইপগুলিতে একবার দেখে নেওয়া যাক । রাস্টারাইজড স্ট্রিম নেটওয়ার্কে কেবল বাইনারি মান থাকতে হবে, তাই আমরা Byteরাস্টার ডেটা টাইপ ব্যবহার করে সংস্থানগুলিতে সঞ্চয় করতে পারি । স্ট্রিমের জন্য 1 এবং ব্যাকগ্রাউন্ডের জন্য 0 এর একটি মান পোড়াও:

gdal_rasterize -l streams -burn 1 -tr 50 50 -a_nodata 0 -te -2339101 311625 2227004 3134200 -ot Byte -of GTiff streams.shp streams.tif

এরপরে, আমরা যে সান্নিধ্যে আগ্রহী তা ইতিবাচক এবং 50,000 মি এর চেয়ে কম বা সমান। একটি উপযুক্ত ডেটাটাইপ হলেন একটি স্বাক্ষরযুক্ত 16-বিট পূর্ণসংখ্যা UInt16। তদুপরি, আমরা সর্বাধিক 65535 এ 'কোনও ডেটা নেই' সেট করি তবে আমরা স্ট্রিম সেলগুলির জন্য 0 মান ধরে রাখতে পারি।

প্রয়োজনে আপনি 8-বিট স্বাক্ষরযুক্ত পূর্ণসংখ্যায়ও নামতে পারেন UInt8এবং এখনও 200 মিলিয়ন ডলার সান্নিধ্যের নির্ভুলতা রাখতে পারেন।

gdal_proximity.bat -srcband 1 -distunits GEO -values 1 -maxdist 50000 -nodata 65535 -ot UInt16 -of GTiff streams.tif proximity.tif

* মনে রাখবেন যে আমি একটি 50m সেল আকার ব্যবহার করেছি। Gdal_proximity GB 20 গিগাবাইট র‍্যাম গ্রহণ করেছে এবং আমার মেশিনে min 5 মিনিট নিয়েছে। আপনি যদি র‌্যাম সীমাবদ্ধ থাকেন তবে অন্যরা যেমন উল্লেখ করেছে তেমন ইনপুট রাস্টারটিকে পরিচালনাযোগ্য আকারে বিভক্ত করুন।

gdal_proximity ফলাফল

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