পোস্টজিআইএস ব্যবহার করে সংলগ্ন বহুভুজকে সরলকরণ?


24

সংলগ্ন বহুভুজগুলির সেটকে সহজতর করতে আমি একটি সমস্যার মুখোমুখি হয়েছি। আমি যদি প্রতিটি বহুভুজকে ডগলাস – পিউকার অ্যালগরিদম (যা অনেকগুলি মুক্ত উত্স সরঞ্জাম দ্বারা ব্যবহৃত হয়) দিয়ে আলাদা করে সরলীকরণ করি, ফলস্বরূপ বহুভুজগুলি সাধারণত আর সংলগ্ন হয় না। উদাহরণস্বরূপ, দেশ / প্রদেশের সীমানা সরল করার সময় এই সমস্যাটি বিদ্যমান।

পোস্টজিআইএস ব্যবহার করে কারও কাছে কি এর সমাধান রয়েছে?

উত্তর:


19

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

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


15

আপনি আপনার বহুভুজগুলিকে লাইনে পরিণত করতে চান, সেই রেখাগুলিকে সাধারণ কভারেজ প্রান্তে পরিণত করতে পারেন, সেই প্রান্তগুলি সরল করুন, আবার এগুলি আবার বহুভুজ হিসাবে পুনর্নির্মাণ করতে পারেন এবং শেষ পর্যন্ত পয়েন্ট-ইন-বহুভুজ ব্যবহার করে পুরাতন বহুভুজের বৈশিষ্ট্যগুলিকে পুনরায় যোগদান করতে নতুন একটি.

CREATE TABLE rings AS SELECT (ST_DumpRings(polys)).geom AS rings FROM polytable;
CREATE TABLE simplerings AS SELECT ST_Union(rings) AS simplerings FROM rings;
CREATE TABLE newpolycollection AS SELECT ST_Polygonize(ST_Simplify(simplerings, 10.0)) AS geom FROM simplerings;
CREATE TABLE newpolysnoattributes AS SELECT (ST_Dump(geom)).geom FROM newpolycollection;
CREATE TABLE newpolytable AS SELECT new.geom, old.attr FROM newpolysnoattributes new, polytable old WHERE ST_Contains(new.geom, ST_PointOnSurface(old.polys));

উপরেরগুলিতে ত্রুটি রয়েছে তবে মূল ধারণাটি রয়েছে। আপনি যদি চান তবে এটি সবই একটি ক্যোয়ারিতে করতে পারেন।


2

এই সমস্যাটি এড়াতে আপনার টপোলজিক্যাল সীমাবদ্ধতা ব্যবহার করে আপনার ডেটা মডেল করা উচিত। http://mapshaper.org/ এটি করে।


-1

আপনার টেসেললেট করা দরকার। জ্যামিতি তৈরির পুরানো এআরসি / আইএনএফও তত্ত্বে দুটি সংলগ্ন জ্যামিতি একটি পললাইন দ্বারা তৈরি করা হয়েছিল এবং এই পললাইনটি ভাগ করেছে। সুতরাং আপনি যখন সাধারণীকরণ করেছেন তখন এটি উভয় সীমানাকেই সাধারণীকরণ করেছিল কারণ এটি একই পললাইনটিকে রেফারেন্স করে।

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