একটি জটিল শেফফিলাকে গ্রিডে ভাগ করুন


11

আমার বহুভুজ / মাল্টিপলিগন বৈশিষ্ট্য (ফাইলটি প্রায় 500 মিমি) সহ একটি শালীন বিশদ আকারের ফাইলফাইল রয়েছে। এটি প্রকৃতপক্ষে সমগ্র বিশ্বের একটি চিত্রশৈলী, উপকূলরেখার প্রতিনিধিত্বকারী বৈশিষ্ট্যগুলি সহ। আমাকে গ্রিড ব্যবহার করে এই ডেটা ভাগ করতে হবে। পরিষ্কার হয়ে উঠতে, আমি ডেটা 'বাছাই' করতে চাই না, তবে প্রকৃতপক্ষে বহুভুজগুলি টাইলগুলিতে কেটে ফেলি। আমি বুঝতে পারি এই প্রশ্নটি আগে জিজ্ঞাসা করা হয়েছিল তবে আমি যে সমাধানগুলি পেয়েছি সেগুলি আমার পক্ষে কার্যকর হয়নি।

আমি চেষ্টা করেছিলাম:

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

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

কেউ পোস্টজিআইএসকে এক পর্যায়ে ব্যবহার করার পরামর্শ দিয়েছিল, যেহেতু এটিতে একটি ছেদ কাজ রয়েছে - তবে পোস্টজিআইএস এর এসT_Intersect একই জিইওএস ব্যাক এন্ডটি ওজিআর হিসাবে ব্যবহার করে। প্রকৃতপক্ষে তারা উভয়ই একই ফাংশনটিকে আমি যতদূর বলতে পারি কল করে, তাই আমি মনে করি না যে পোস্টজিআইএস বিভিন্ন ফলাফল দেবে।

আমি আর কী চেষ্টা করতে পারি সে সম্পর্কে পরামর্শের সন্ধান করছিলাম। আমার একটি দৃ rob় অ্যাপ্লিকেশন বা টুলকিট দরকার যা উচ্চতর বিশদ শেফফিলগুলি টাইলগুলিতে বিভক্ত করতে পারে।

সম্পাদনা: আরও কিছু তথ্য যুক্ত করা হচ্ছে

জবাবে সিম্বামাঙ্গু:

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

  • ডিফল্টরূপে উপকূলরেখার ডেটাতে কিউজিআইএস দ্বারা জ্যামিতির ত্রুটি রয়েছে reported আমি এই ত্রুটিগুলি একটি ছোট সরঞ্জাম দিয়ে সংশোধন করেছি যা আমি এই সমস্যাটি সুনির্দিষ্টভাবে সমাধানের জন্য ডিজাইন করা কিছু কোড ব্যবহার করে পেয়েছি (উপকূলরেখার ডেটাতে জ্যামিতির ত্রুটিগুলি মেরামত: https://github.com/tudelft-gist/prepair )। এই সরঞ্জামটির সাহায্যে ফাইলগুলির উপর দৌড়ানো কিউজিআইএস-এর সমস্ত ত্রুটিগুলি স্থির করে দেয়। আমি কেবল ফাইলগুলি সাফ করার পরে ছেদ করার চেষ্টা করি।

  • কিউজিআইএস ব্যবহার করে ঠিক কী করেছি: কিউজিসআইএসে এটি ঠিক আছে কিনা তা নিশ্চিত করতে ডেটা খুলুন। নির্দিষ্ট স্থানের সাহায্যে ভেক্টর গ্রিড ব্যবহার করে টাইলগুলির একটি স্তর তৈরি করে এটি টাইলগুলিতে ভাগ করার চেষ্টা করুন এবং তারপরে দুটি স্তর ছেদ করে - যান না। একটি ছোট ডেটা সেট ব্যবহার করার চেষ্টা করুন - একটি ছোট ডেটা সেট চেষ্টা করার জন্য ওশেনিয়া (আউস, এনজেড) বৈশিষ্ট্যগুলি নির্বাচন করুন - এই আকৃতির ফাইলটি <20 মিমি আকারের। আবার এটি ভাগ করার চেষ্টা করুন, কাজ করে না।

  • আমি ওজিআর দিয়ে যা করেছি: স্প্রে_এক্সেন্টের সাহায্যে সরাসরি '-spat' এবং '-clipsrc' বিকল্পগুলি ব্যবহার করে ogr2ogr। একটি ছোট সি ++ টুলও লিখেছিল যা ডব্লিউকেটি-তে কাজ করে, তাই আমি ogr2ogr ব্যবহার করে শেফফিলিকে ডব্লিউকেটিতে রূপান্তর করি, তারপরে আমার অ্যাপ্লিকেশনে পাঠ্য ফাইলটি ফিড করব। এটি ফাইলের মধ্য দিয়ে চলে এবং সংযুক্তি () পদ্ধতিটি এখানে ডকুমেন্টেড কল করে: http://www.gdal.org/ogr/classOGRGeometry.html । আমি মনে করি এটি ogr2ogr সরাসরি ব্যবহার করার মতো সঠিক জিনিসটি শেষ করে।

ব্রেন্টের প্রতিক্রিয়া:

  1. এটা করে. সবকিছু WGS84 ল্যাট / লনে রয়েছে in
  2. আমি ভেবেছিলাম যে এর বিপরীতটি সত্য - গ্রিড টাইলগুলির একটি সেটের জন্য, খণ্ডিত বৈশিষ্ট্যগুলির একগুচ্ছের চেয়ে এক বিশালাকার গুণককে ছেদ করতে আরও বেশি সময় লাগবে যা প্রতিটি টাইলের চেয়ে আরও স্থানীয়ভাবে স্থানীয় করা যেতে পারে, একটি আকর্ষণীয় পরামর্শ - আমি এটি চেষ্টা করে আবার রিপোর্ট করব।
  3. প্রক্রিয়া চলাকালীন কোনও অ্যাট্রিবিউট ফিল্ড রাখা হয় না, আমি কেবল জ্যামিতিতে আগ্রহী।
  4. আমি নিশ্চিত নই, তবে আমি মনে করি আপনি বলছেন যে আমার দেওয়া বহুভুজ নির্বাচন করা উচিত যা প্রদত্ত গ্রিড টাইলকে ওভারল্যাপ করে তার পরে ছেদটি সম্পাদন করা উচিত। এটি QGIS সহ ম্যানুয়ালি খুব জটিল। আমার সরঞ্জামটি ইতিমধ্যে বাউন্ডিং বক্স চেকের সাথে নির্দিষ্ট পরিমাণে এটি করে। কিছুটা গতি বাড়ানো আছে, তবে শেষ ফলাফলটি এখনও খারাপ এবং লক্ষণীয়ভাবে পৃথক নয়।
  5. এটি কোনও বিকল্প নয়। এই মুহুর্তে আমি ডেটাটি ভাগ করার চেষ্টা করছি যাতে এটির 1 ডিগ্রি ল্যাট এক্স 1 ডিগ্রি দীর্ঘ হয়, এবং আমি একটি সাধারণ / শক্তিশালী পদ্ধতি খুঁজছি যা সমস্ত ক্ষেত্রে কাজ করে। আমি আরও ভাল ফলাফল পেতে পারি এবং গ্রিডের আকার এবং আউটপুট মানের সাথে কোন সম্পর্ক নেই তা দেখতে আমি গ্রিডের আকার বাড়ানোর চেষ্টা করেছি (অর্থাত 10x10)।

সম্পাদনা # 2:

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

এখানে চিত্র বর্ণনা লিখুন

জ্যামিতিটি পরিষ্কার - কিউজিআইএস "পরীক্ষার বৈধতা" সরঞ্জামটি দিয়ে 0 টি ত্রুটি দেখায়। আমি ধাপে ধাপে এই সমস্যার দিকে নজর দিচ্ছি না; নির্দিষ্ট বৈশিষ্ট্যগুলি বড় এই কোনও ডেটাসেটের ছেদটি ব্যর্থ হয়েছে কিনা তা যাচাই করা কার্যকর নয় যখন এটি দৃশ্যত দৃশ্যমান নয় (এবং এটি ছোট টাইলগুলির সাথে হবে না)।


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

1
জিওসায়েন্স অস্ট্রেলিয়া (20 এমবি) এবং 4 ডিগ্রি টাইলস থেকে 100 কে অস্ট্রেলিয়ান উপকূলরেখার সাথে এটি চেষ্টা করে, এটিও দুর্দান্ত কাজ করে (কিউজিআইএস 1.7.4, ওএসএক্স 10.7)। আপনি কীভাবে আপনার ডেটা এবং কী কী আরও বিশদে বর্ণনা করতে পারবেন?
সিম্বামাঙ্গু

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

আপনি কি ডেটাসেট ভাগ করতে পারেন, বা এমনকি এটির একটি ক্লিপড অংশ (উপরে আপনার উদাহরণের মতো)?
সিম্বামাঙ্গু

উত্তর:


7

আমি এটি করার জন্য আমার নিজের সরঞ্জামগুলি তৈরি করে শেষ করেছি।

আমি আমার ডেটা সেট আপকে বিভক্ত করতে ওজিআর সহ ক্লিপার লাইব্রেরি ( http://www.angusj.com/delphi/clipper.php ) ব্যবহার করেছি। লক্ষ করার মতো কিছু এই লিবিটির সাথে নিরবচ্ছিন্নভাবে ছেদগুলি সঞ্চালন করা খুব দীর্ঘ সময় নেয়, সুতরাং আমি পরিবর্তে একটি চতুর্ভুজ পদ্ধতির ব্যবহার করেছি ... অর্থাত্, চারটি গ্রিড কোষে বিভক্ত করুন, তাদের প্রত্যেককে আরও চারটিতে ভাগ করুন, ইত্যাদি, যতক্ষণ না আপনি আপনার পছন্দসই রেজোলিউশন পান। এই লিবিব দুর্দান্ত কাজ করে যদিও আমি পূর্ব গোলার্ধের ফলাফলগুলি দেখায় একটি স্ক্রিনশট সংযুক্ত করেছি:

এখানে চিত্র বর্ণনা লিখুন

উপরের ফলাফলটি 1.33GHz প্রসেসরে প্রায় 4.5 ঘন্টা সময় নিয়েছে।

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

https://github.com/preet/scratch/tree/master/gis/polytoolkit

https://github.com/preet/scratch/tree/master/gis/shapefiles/shptk


লিঙ্কযুক্ত কোডটি আর উপলভ্য নয় :-(
শান ম্যাকডোনাল্ড

আমি সংগ্রহস্থলটি গিথুবপ্রীপপ্রেট / স্ক্র্যাচ / ট্র্রি / মাস্টার / গিস / পলিটোকলিতে স্থানান্তরিত করেছি । আপনি ঠিক কী অর্জন করার চেষ্টা করছেন তার উপর নির্ভর করে আপনি আরও উপকারী হতে পারে github.com/preet/scratch/tree/master/gis/ shapefiles/shptk find
প্রিস

পরেরটি আরও কার্যকর। আমি এখন এমন একটি পদ্ধতি খুঁজে পেয়েছি যা পোস্টজিআইএস ব্যবহার করে, যদিও এটি আরও দ্রুত ছিল কিনা তা অনুসন্ধানে আগ্রহী। আপনার কি সংকলন এবং ইনস্টল করার জন্য একটি রেডমি আছে?
শান ম্যাকডোনাল্ড

লিঙ্কটি ঠিক করতে আপনি নিজের উত্তরটি সম্পাদনা করতে পারেন? ধন্যবাদ
আফ্রি

4

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

1) নিশ্চিত হয়ে নিন যে আপনার গ্রিড ডেটাসেটে আপনার বিশ্ব বহুভুজের ডেটাসেটের সমান প্রক্ষেপণ রয়েছে। যদি তা না হয় তবে এটি যথাযথ অভিক্ষেপে পুনরায় তৈরি করুন।

2) সমস্ত বৈশিষ্ট্যকে একক অংশে রূপান্তর করুন - প্রক্রিয়া করা অনেক সহজ

3) কেবল আইডি ক্ষেত্র রেখে সমস্ত বহিরাগত ক্ষেত্র সরিয়ে ফেলুন যা ছেদটি সম্পাদন করার পরে আপনাকে আবার আপনার বৈশিষ্ট্যগুলিতে যোগ দিতে সক্ষম করবে - প্রক্রিয়া করাতে আরও অনেক সহজ

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

5) বৃহত্তর গ্রিড বহুভুজ ব্যবহার করার চেষ্টা করুন।


+1 সত্যিই আকর্ষণীয় - আপনি যদি আইডির ক্ষেত্রটি, বা মাল্টিপার্ট করে ডেটা রাখেন তবে ভূ-প্রসেসিং গতিতে এটি কতটা প্রভাব ফেলবে?
সিম্বামাঙ্গু

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

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

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

একবার আপনার একক অংশের বৈশিষ্ট্যে রূপান্তরিত হয়ে গেলে, আপনার জ্যামিতিটি পুনরায় যাচাই করা উচিত, কেবলমাত্র সবকিছু পরিষ্কার আছে তা নিশ্চিত হতে।
ব্রেন্ট এডওয়ার্ডস

0

পয়েন্ট ডেটাসেট তৈরি করার জন্য ভেক্টর-টু-রাস্টার রূপান্তর চেষ্টা করে তারপরে আপনার টাইলস তৈরি করতে কিছু কোড লেখার জন্য ভিত্তি হিসাবে পয়েন্ট ডেটাসেটটি ব্যবহার করার অন্য একটি পদ্ধতি হতে পারে।

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