জিডাল ডেটাসেট.আরএডএএসআরে () পাইথনকে ক্র্যাশ করেছে


12

আমি পাইপথন ২. 64.৫ (32 বিট) সাথে নিম্পি 1.3 এবং জিডাল 1.9.1 উইন্ডোজ 7 64 বিট ইনস্টল করেছি। কিছু 800 জন রাস্টার বীজগণিত করার জন্য আমি 800 এমবি ইমেজিন (.img) রাস্টার ডাটাसेट পড়ার চেষ্টা করছি তবে আমি নিম্নলিখিত কোডটি চালানোর সাথে সাথে পাইথন.এক্সএ ক্র্যাশ হয়ে গেছে।

from osgeo import gdal

g = gdal.Open(r'path\to\dataset', gdal.GA_Readonly)
b = g.GetRasterBand(1)
data = b.ReadAsArray()

পাইথন.এক্সি কলটিতে ক্রাশ b.ReadAsArray()। আমি কিছু গুগল অনুসন্ধান করেছি এবং জিডাল ১.6 তারিখের তারিখের নিবন্ধগুলি পেয়েছি যা উইন্ডোজ 7 64 বিটের সাথে এই সমস্যাটি উল্লেখ করেছে, তবে তারা আরও উল্লেখ করেছে যে এটি তখনকার সর্বশেষতম বিকাশের সংস্করণগুলিতে স্থির করা হয়েছিল।

অন্য কারো এই সমস্যা ছিল? কোন workaround?

হালনাগাদ:

আমি পাইডেভে কোডটি ডিবাগ করার সিদ্ধান্ত নিয়েছি যেখানে এটি ব্যর্থ হচ্ছে তা নির্ধারণের জন্য। আমি যা বলতে পারি তা থেকে (এখনও কোনও ত্রুটি বার্তা পাওয়া যাচ্ছে না) এটি gdal_array.py এর লাইন 22 এ ব্যর্থ হচ্ছে।

_mod = imp.load_module('_gdal_array', fp, pathname, description)

আমি যখন উপরের কোডের লাইনে পদক্ষেপ নিই, তখন এটি আমাকে নমির init .py মডিউলে নিয়ে আসে। আমি যখন নাম্বারের শেষ প্রান্তে পৌঁছে যাই। __ Init __ .py মডিউল দেখবেন, এটি ফিরিয়ে কোডের উপরে লাইন আউট ধাপ। তারপরে, যখন আমি বোতামে পদক্ষেপটি আঘাত করি, যা আমাকে gdal_array.py এর মধ্যে পরবর্তী লাইনে নিয়ে আসে, স্ক্রিপ্টটি কেবল কোনও ত্রুটি বার্তা বা কোনও কিছুই না দিয়ে শেষ করে।

আপডেট # 2:

আমি জিডিএল 1.9.1 আনইনস্টল করে পাইথন চিজশপ এবং ওএসজিওর উইন্ডোজ বাইনারি থেকে জিডিএল 1.6.1 ইনস্টল করেছি। এখনও একই সমস্যা ছিল।


আমি এই সমস্যা ছিল। আপনি কি gis.internals এ তামাস থেকে জিডাল পাইথন বাইন্ডিং ব্যবহার করছেন? যদি তা হয় তবে আপনার প্যাথ থেকে আপনার সংযোজনগুলি সামনের দিকে সরান। অন্য কিছু গ্রন্থাগার আমার জন্য কিছু সমস্যা সৃষ্টি করছিল।
জে লৌরা

আমি বিশ্বাস করি যে আমি তার ইন্টারনাল থেকে ডাউনলোড করেছি। আগামীকাল অফিসে এলে আমার পথটি সামঞ্জস্য করার চেষ্টা করব। পরামর্শের জন্য ধন্যবাদ.
ব্রায়ান

1
যদি এটি কাজ না করে, আমি সম্প্রতি এই প্যাকেজগুলি ব্যবহার করতে শুরু করেছি - lfd.uci.edu/~gohlke/pythonlibs
জয় লরা

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

হুমম .... আমি যে সংস্করণটির সাথে লিঙ্ক করেছি সেটি কেবল বাইন্ডিং ছিল, সুতরাং আপনার এখনও তামাসের জিডিএল কোর থাকা দরকার। অন্য কলগুলি যদি কাজ করে তবে তা কাজ করছে। তিনটি জিনিস যা চেষ্টা করুন দীর্ঘ শটগুলি ('দীর্ঘায়ু' অনুসারে। 1) আপনার নিম্পির সংস্করণ আপডেট করুন। 2) gdal_translate gtiff করতে এবং সেই চিত্রটিতে কোড চেষ্টা করুন। 3) .Astype (numpy.float32) সহ ReadAsArray () যুক্ত করুন। ছবিটি কি পাবলিক? আমি এটি আমার মেশিনে পরীক্ষা করতে পারি। আপনি যদি স্ট্যাক ট্রেস পোস্ট না করতে পারেন কেউ যদি না কাজ করে?
জে লৌরা

উত্তর:


5

অনেক মন্তব্যকারী দ্বারা সন্দেহ হিসাবে, এটি আমার ইনস্টল সঙ্গে একটি সমস্যা ছিল। স্পষ্টতই, জিডিএল এবং পাইথন বাইন্ডিং ইনস্টল করার সময় আমি যথেষ্ট মনোযোগ দিচ্ছিলাম না।

আমি gisinternals.com থেকে জিডিএল কোর এবং প্লাগিনগুলি (ডিএল এর) ইনস্টল করেছি তবে কোনওভাবে আমি সেখান থেকে পাইথন বাইন্ডিংগুলি ইনস্টল করার কথা ভাবিনি। আমি ইনস্টল করা পাইথন বাইন্ডিংগুলি অন্য সাইট থেকে এসেছে (কোনটি এই মুহুর্তে মনে করতে পারে না)।

আমি যখন gisinternals.com থেকে জিডিএল এবং পাইথন বাইন্ডিংগুলি পুনরায় ইনস্টল করেছি, তখন আমি সাফল্যের সাথে রিডএএসআরাই করতে সক্ষম হয়েছি।

যারা মন্তব্য করেছেন এবং উত্তর দিয়েছেন তাদের সবাইকে ধন্যবাদ এবং আমি আমার অজ্ঞতার জন্য ক্ষমা চাইছি।


3

এটা সম্ভব এটি একটি স্মৃতি সমস্যা। আপনি যখন ReadAsArray ব্যবহার করেন এটি ডেটা মেমরির মধ্যে নিয়ে আসে এবং 800 এমবি বৃহত্তর না হলেও এটি খুব সামান্যও নয়। আপনি কি খণ্ডে অ্যারে পড়ার চেষ্টা করেছেন?

data = b.ReadAsArray(x_offset, y_offset, x_size, y_size)

আপনি অ্যারে থেকে লুপ করতে এবং একসাথে এটি প্রক্রিয়া করতে সক্ষম হবেন, যদিও আপনি যে প্রক্রিয়াজাতকরণ করছেন তার উপর নির্ভর করে আপনার প্রান্তের প্রভাব এড়াতে ওভারল্যাপযুক্ত অঞ্চলে সম্ভবত পড়া উচিত।


আমি খণ্ডগুলি ব্যবহার করার চেষ্টা করেছি আমি data = b.ReadAsArray(0,0, 500, 500)একই ফলাফল দিয়ে চেষ্টা করেছি ।
ব্রায়ান

হুম। আমি ধরে নিচ্ছি আপনি অন্যান্য চিত্রের ফর্ম্যাট চেষ্টা করেছেন? এছাড়াও, একটি নির্দিষ্ট ত্রুটি বার্তা ছিল?
ওমেনার্স

আমি এখনও অন্য কোনও ফর্ম্যাট চেষ্টা করি নি। কোনও ত্রুটি বার্তা ছিল না, কেবলমাত্র একটি পপআপ বলেছিল যে "পাইথন.এক্সই কাজ করা বন্ধ করে দিয়েছে"।
ব্রায়ান

আমি আজ সকালে .img ফাইলটিকে একটি জিওটিআইএফএফতে রূপান্তর করেছি এবং আবার চেষ্টা করেছি। ভাগ্য নেই.
ব্রায়ান

জিডিএল থেকে মেমরি ম্যাপ করার কোনও উপায় আছে?
সিএমসিডিগ্রাগনকাই

1

দুঃখিত, আমি এই পার্টিতে দেরি করেছি, তবে আপনার প্রাথমিক সমস্যাটি হ'ল 32-বিট পাইথন খুব বড় রাস্টারগুলিকে মেমোরিতে সঞ্চয় করতে পারে না। কামড়ের আকারের অংশগুলিতে আপনি আপনার বৃহত্তর রাস্টারটিকে মেমোরিতে পড়তে পারেন, তবে তারপরে আপনি চূড়ান্তভাবে অক্ষম / ঘন ঘন পড়া / ডিস্কে লেখার ছাড়াই দক্ষতার সাথে কীভাবে প্রসেস করতে পারবেন সে সম্পর্কে আপনি যথেষ্ট সীমাবদ্ধ।

পরিবর্তে আমি যা করি (যা ডিস্ক পঠন / লেখার কারণে কিছু দক্ষতার ত্যাগ করে) হ'ল আপনাকে জিডিএল পদ্ধতিতে যা প্রয়োজন তার 64-বিট gisinternals.com সংস্করণটি কল করা ( এক্সই-র্যাপিংয়ের মাধ্যমে )। অজুহাতে আপনার উইন্ডোজ বাক্সের জন্য অনেকগুলি খোলার থ্রেড তৈরি করতে পারে এবং অশুভ সিস্টেমের সতর্কতা পেতে পারে বলে একটি লুপে পাইথনের সাবপ্রসেস মডিউলটি ব্যবহারের ক্ষেত্রে সতর্কতা অবলম্বন করুন (যেমন আপনি ধারাবাহিকভাবে সাবপ্রসেসটি কল করতে চাইতে / প্রয়োজন হতে পারেন )। আপনি এই জিডিএল পদ্ধতির সাথে ডিস্ক পড়ার / লেখার পথে কিছুটা ত্যাগ করেন তবে আপনার প্রক্রিয়া দক্ষতা কেবলমাত্র হ্রাস পাবে (অর্থাত্ একটি স্মৃতিশক্তির তুলনায় একটি হালকা দ্রুত সম্পর্কিত , যদি আপনার বাক্স / লাইব্রেরি এটি সমর্থন করতে পারে) বা কোনও উপাদান দ্বারা বা 10।

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