কীভাবে ST_Union ব্যবহার করে ডেস্কটপের জন্য আরকজিআইএস থেকে দ্রবীভূত হওয়ার সমতুল্য অর্জন করবেন?


11

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

আমার একটি টেবিল রয়েছে যা বহুভুত জ্যামিতির সাথে নির্দিষ্ট বৈশিষ্ট্যযুক্ত। (এফআইডি, লকস্ট্যাট, লকন্ট, শেপের মতো)

এখানে আমার জিজ্ঞাসা:

SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;

1
আপনি কী ফলাফল আশা করছেন এবং কী পাচ্ছেন তা আপনি ব্যাখ্যা করতে পারেন? চলমান: নির্বাচন করুন AsText (ST_Union ...) FROM ... ত্রুটিটি খুঁজে পেতে সহায়তা করতে পারে।
মীখা

সারণীতে আমার কাছে 6842 রেকর্ড রয়েছে, আর্কজিআইএস ফলাফল অনুসারে আমার 1683 রেকর্ড পাওয়া উচিত যেখানে আমি জিজ্ঞাসাটি ব্যবহার করে 6842 রেকর্ড পাচ্ছি। আমি ST_Aggr_Union চেষ্টা করেছিলাম যা আমাকে একাধিক নাল জ্যামিতির সাথে 2৪২ টি রেকর্ড দেয়।
ধামস

উত্তর:


14

আপনি মাঠে গ্রুপে অন্তর্ভুক্ত করেছেন তার কারণেই সম্ভবত আপনার সমস্যা।

ST_UNION একটি সামগ্রিক ফাংশন, এর অর্থ এটি যে আপনি GROUPপরামিতি হিসাবে নির্দিষ্ট করেছেন তার ভিত্তিতে এটি দ্রবীভূত হচ্ছে ।

আপনি যা প্রবেশ করেছেন তা এখানে:

SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;

এই অনুসারে, আপনি নিজের দ্বারা গোষ্ঠী তৈরি করছেন fidযা সম্ভবত একটি অনন্য শনাক্তকারী এবং এছাড়াও দ্বারা boundaryshapeজ্যামিতি। এটির সাথে সমস্যাটি হ'ল এটির সম্ভাবনা খুব কম নয় যে বৈশিষ্ট্যগুলি একটি অনন্য আইডি ভাগ করে নিচ্ছে, একই রকম জ্যামিতি থাকবে। অতএব, ST_Unionসম্ভবত নিম্নলিখিতগুলির মতো কিছু শেষ হতে চলেছে:

Input:   
fid     boundaryshape  
1         11  
1         12  
1         11  
1         13  
2         12  
2         13  
2         12  
3          5  
3          2  
3          4  

Output:  
fid     boundaryshape  
1        (11 + 11)  
1        12  
1        13  
2        (12 + 12)  
2        13  
3        2  
3        4  
3        5

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

আমি নিম্নলিখিত চেষ্টা করব:

SELECT c.fid, ST_Union(c.boundaryshape) FROM c GROUP BY c.fid;

এটি আপনাকে সাধারণ বৈশিষ্ট্যের উপর ভিত্তি করে সমস্ত বৈশিষ্ট্য দ্রবীভূত করার কাঙ্ক্ষিত ফল দেয় fid

এখানে পোস্টজিআইএস সাইটে সহায়তা দস্তাবেজটি দেওয়া হয়েছে: ST_Uionion

নীচে তালিকাভুক্ত প্রথম উদাহরণটি দেখুন এবং লক্ষ্য করুন যে এটি বিভাগে জ্যামিতিটিকে বিভাগে অন্তর্ভুক্ত করে না।


1
কিছু ক্ষেত্রে, ইউনিয়ন করার আগে জ্যামিতিগুলি গ্রিডে তোলা ভাল: SELECT ST_Union (ST_SnapToGrid (geom, 0.0001)) স্তর_পরিচয়কারী দ্বারা জিও_রেয়া গ্রুপ থেকে নির্বাচন করুন;
ম্যাক্সিম এলিজিভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.