একটি বিশাল রাস্টার সময় সিরিজের জন্য ওয়েব ম্যাপিং সফটওয়্যার?


11

আমি একজন আর্কজিআইএস ডেস্কটপ ব্যবহারকারী যিনি প্রথমবারের মতো ওয়েব ম্যাপিংয়ের বিশ্বে পা রাখছেন। জিআইএস.এস.ই-তে আমি এখানে পেয়েছি এমন পরামর্শের পরে আমি ওপেনজিও থেকে বিনামূল্যে টিউটোরিয়াল শুরু করেছি

যাইহোক, আমি বুঝতে শুরু করেছিলাম যে বেশিরভাগ ডেমো এবং উদাহরণগুলি ভেক্টর ডেটার দিকে প্রস্তুত। আমার মূল প্রকল্পে 5000 এক্স 5000 পিক্সেল রাস্টারগুলির 300 ফ্রেম টাইম সিরিজের প্রদর্শন জড়িত। আমার ডেস্কটপ কম্পিউটারে এগুলি একক 5000x5000x300 16-বিট ইন্টিজার বিআইপি বাইনারিতে সঞ্চয় করা হয়, যার মোট পরিমাণ 8 জিবি। আমার লক্ষ্যটি হ'ল একটি ঘরে ক্লিক করুন (সময় সিরিজের একক রাস্টারের) এবং 300-উপাদান সময় সিরিজের সেই পিক্সেলের মানগুলি দেখানোর জন্য একটি গ্রাফ পপ আপ করতে হবে। প্রতিটি সময় সিরিজের গ্রাফের জন্য ব্যবহৃত রাস্টার ডেটা অবশ্যই ক্ষতিহীনভাবে সংরক্ষণ করা উচিত, যদিও ক্লিক করা ওভারলে মানচিত্রগুলি ক্ষতিকারক ক্যাশে হতে পারে।

ওপেন জিওর চেয়ে এই প্রকল্পের জন্য (নবজাতক ওয়েব জিআইএস বিকাশকারী) জন্য আরও উপযুক্ত কিছু হতে পারে কি? বা আমি কি এই সেটআপটি দিয়েই চলব?

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

আপনার সাহায্যের জন্য ধন্যবাদ!

সম্পাদনা: (13 জানুয়ারী) আমি এখনও 3 ডিমেমিকাল 16-বিট ইন্টিজার বিআইপি রাস্টার সংরক্ষণ করতে এবং ডেটাগুলির একক জেড-অক্ষের "কলাম" দক্ষতার সাথে জিজ্ঞাসা করতে সক্ষম হব কীভাবে সঠিক তা সন্ধান করতে চাই। আমি এটিকে 32-বিট ফর্ম্যাটে রূপান্তর করতে চাই না (কারণ এটি তার ফাইলের আকারটিকে তার বর্তমান 16-বিট ফর্ম থেকে দ্বিগুণ করবে)।


2
আপনি কি নিজের ওয়েব সার্ভারে পোস্টগ্রিজ এসকিউএল / পোস্টজিআইএস রাখতে পারেন? - যদি আপনার স্কেলযোগ্য বিকল্পগুলি না অনুসন্ধান করা হয় তবে আপনার অ্যামাজন এডাব্লুএস (ইসি 2 রিলেশনাল ডেটাবেসস এএমআই) aws.amazon.com/running_databases বিকল্প হিসাবে না নিলে আপনার নিজের সার্ভার থাকার জন্য দৃ strongly়তার সাথে সুপারিশ করবেন
ম্যাপেরজ

1
আমার হোস্ট (গোডাডি) এই থ্রেড অনুসারে পোস্টগ্র্যাস এসকিউএল সমর্থন করে না । আমার সত্যিকারের স্কেলিবিলিটির দরকার নেই - এই প্রকল্পটি বেশিরভাগ পিয়ার গবেষককে 8 জিবি ফাইল পাঠানো এবং এটিএনভিতে লোড করার চেয়ে আমার ডেটাতে আরও সহজে অ্যাক্সেস পেতে সক্ষম করে to
dmahr

1
আপনি যদি নতুন হোস্ট বিবেচনা করে থাকেন, তবে আমি ওয়েবফ্যাশনকে পর্যাপ্ত পর্যায়ে সুপারিশ করতে পারি না; তারা postgresql / postgis1.5 অফার করে তবে রাস্টার কার্যকারিতার জন্য আপনি সম্ভবত postgis2.0 চান। এটি শেয়ার্ড হোস্টিংয়েও।
ডিজেকিউ

উত্তর:


6

সম্পাদনা: (13 জানুয়ারী) আমি এখনও 3 ডিমেমিকাল 16-বিট ইন্টিজার বিআইপি রাস্টার সংরক্ষণ করতে এবং ডেটাগুলির একক জেড-অক্ষের "কলাম" দক্ষতার সাথে জিজ্ঞাসা করতে সক্ষম হব কীভাবে সঠিক তা সন্ধান করতে চাই। আমি এটিকে 32-বিট ফর্ম্যাটে রূপান্তর করতে চাই না (কারণ এটি তার ফাইলের আকারটিকে তার বর্তমান 16-বিট ফর্ম থেকে দ্বিগুণ করবে)।

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

উদাহরণস্বরূপ, পিএইচপি হিসাবে, ধরে নেওয়া যে ফাইলটি সারি প্রধান অর্ডার (অন্যথায় x এবং y স্যুইচ করুন) সহ in x এবং $ y আপনার গ্রিডের অবস্থান (0 থেকে গণনা করা), $ nx, and ny এবং $ nz পিক্সেলের সংখ্যা প্রতিটি মাত্রা এবং id nb গ্রিডসেল প্রতি বাইট সংখ্যা:

$fp = fopen('yourfile.bil', 'r');

fseek ($fp, $nz*$nb*($y*$nx +$x))//this is a very fast operation
// read some data
$data = fread($fp, $nz*nb);//this is also very fast

আপনি ডান পিক্সেলটি অ্যাক্সেস করেছেন তা নিশ্চিত করুন: উপরের বাম থেকে গণনা শুরু হয় বা না, ...

কিছু অতিরিক্ত তথ্য: ডেটা পড়ার পরে আপনার এটিকে ফ্লোটে রূপান্তর করা উচিত। উদাহরণ:

$dataf=unpack("f*", $data);
print_r($dataf);

যদি আপনার হোস্ট বড় ফাইল আপলোড সমর্থন করে না, আপনি উদাহরণস্বরূপ 8 বিপ ফাইলগুলিতে আপনার বিপ ফাইলটি বিভক্ত করতে পারেন।

আমি কীভাবে ওয়েবসাইটটির বাকী কাজগুলি করব সে সম্পর্কে আরও কিছু তথ্য: যেহেতু আপনার ডেটা অবিচল, আপনি gdal2ائل এবং ওপেনলেয়ারগুলি ব্যবহার করে একটি ছোট ম্যাপভিউয়ার তৈরি করতে পারেন। http://www.gdal.org/gdal2tiles.html আসলে আপনি যেহেতু বলেছেন যে "আমার সত্যিকারের স্কেল্যাবিলিটি দরকার নেই - এই প্রকল্পটি বেশিরভাগ পিয়ার গবেষককে পাঠানোর চেয়ে আমার ডেটাতে আরও সহজ অ্যাক্সেস পেতে সক্ষম করে তোলে ৮ জিবি ফাইল এবং এটিএনভিআই-এ লোড করা হচ্ছে "" আপনি হয়ত কোনও ওয়েবজিস সরঞ্জাম বাক্স ব্যবহার না করেও করতে পারেন: কেবল আপনার ব্যবহারকারীদের ছবিটিতে ক্লিক করুন এবং স্থানাঙ্কগুলি ধরুন: http://www.emanueleferonato.com/2006/09/02/ ক্লিক করুন -image-এবং-পেতে-স্থানাঙ্ক-সঙ্গে-জাভাস্ক্রিপ্ট /

(যদিও আপনার 5000x5000 চিত্রটি সুন্দরভাবে উপস্থাপনের জন্য কোনও উপায় খুঁজে পাওয়া উচিত)


দুর্দান্ত, এটি সত্যই সহায়ক। একটি ফলোআপ: আমি কি পোস্টজিআইএসে এই বাইনারিটি সঞ্চয় করব? সার্ভারের পিএইচপি বা পাইথন দিয়ে জিজ্ঞাসা করার আগে সার্ভারকে পুরো বাইনারি ফাইলটি ডাটাবেস থেকে বের করে আনতে হবে এমন পরিস্থিতি আমি এড়াতে চাই। এটি একটি প্রতিরোধমূলক ধীর পদক্ষেপ হবে।
dmahr

না, ফাইলটি ফাইল সিস্টেমে থাকা উচিত। একটি ডাটাবেস ব্যবহার করে কোন লাভ নেই। এমনকি কেবল একটি সংযোগ খোলার ক্ষেত্রেও সম্ভবত উপরের কোডের চেয়ে বেশি সময় লাগবে।
johanvdw

7

এটি তিনটি পৃথক সমস্যার মতো দেখায়: একটি পরিকাঠামো, একটি আর্কিটেকচার এবং একটি ইভেন্ট হ্যান্ডলিংয়ের। আমি একটি সম্ভাব্য পন্থা রাখব, তবে আমার উত্তরটি অবশ্যই সাধারণ।

অবকাঠামো

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

স্থাপত্য

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

  • আর্কগ্রিড - আর্ক গ্রিড কভারেজ ফর্ম্যাট
  • জিওটিআইএফএফ - ভৌগলিক তথ্য সহ ট্যাগযুক্ত চিত্র ফাইল ফর্ম্যাট
  • Gtopo30 - Gtopo30 কভারেজ ফর্ম্যাট
  • ইমেজমোসাইক - চিত্র মোজাইকিং প্লাগইন
  • ওয়ার্ল্ড ইমেজ - একটি স্থানের ডেটা ফাইলের সাথে একটি রাস্টার ফাইল

ইভেন্ট হ্যান্ডলিং

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

এরপরে, মানচিত্রে XY ডেটা পেতে আপনি এই জাতীয় কোনও ফাংশন ব্যবহার করতে পারেন (দেখুন http://dev.openlayers.org/releases/OpenLayers-2.11/example/click-handler.html ):

onClick: function(evt) {
    var clickSpot = evt.xy;
    // pass clickSpot to the controller ...
}

আমি আশা করি এটি সাহায্য করবে.


লেখার আপ জন্য ধন্যবাদ! আপনি কি কখনও 8 গিগাবাইটের বেশি আকারের ত্রিমাত্রিক রাস্টারগুলি করতে এই ফাইল ফর্ম্যাটগুলির কোনও ব্যবহার করেছেন? আমি জানি যে জিওটিআইএফএফ উদাহরণস্বরূপ 4 জিবি অতিক্রম করতে পারে না। এবং সার্ভার সফ্টওয়্যারটি কি একক জেড-অক্ষ টাইম সিরিজের ডেটা দক্ষতার সাথে জিজ্ঞাসা করতে সক্ষম হবে?
dmahr

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

হ্যাঁ "ব্রুট ফোর্স" পদ্ধতিটি আমার পছন্দের চেয়ে ধীর হবে (এটি একটি ডেস্কটপ কম্পিউটারে এমনকি ধীর)। আমি অনুমান করি যে আমি খুঁজে পেতে পারি সেরা বিকল্প স্টোরেজ প্রকল্পের চারপাশে পুরো ওয়েব ম্যাপিং পরিষেবাটি ফ্রেম করতে আগ্রহী।
dmahr

1

যদি আমি আপনার প্রশ্নটি সঠিকভাবে বুঝতে পারি তবে আমি একটি সময় ডাব্লুএমএস পরিষেবা তৈরি করব, উদাহরণস্বরূপ মানচিত্রের সাথে

এইভাবে প্রতিটি ডেটটাইমের (একটি getMap অনুরোধ সহ) সঠিক রাস্টারটি প্রদর্শন করা সহজ হবে এবং একটি নির্দিষ্ট তারিখের সীমা (একটি GetFeatureInfo অনুরোধ সহ) সেলের জন্য মানগুলির জন্য অনুরোধ করবে।

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