পোস্টজিআইএস টপোলজির সাথে সংশ্লিষ্ট উপাদানগুলির সাথে স্তরগুলিতে যোগদান করা


24

আমি বর্তমানে পোস্টজিআইএস টপোলজি এক্সটেনশন ব্যবহার করছি, তবে কাঠামোটি কীভাবে কাজ করে তা বুঝতে আমার কিছুটা সমস্যা আছে:

মূল পয়েন্টগুলির মধ্যে একটি হ'ল "স্তর" এর ব্যবহার: আমি যা বুঝি সে হিসাবে টপোলজির স্কিমা (নামযুক্ত topo_actualname) এর বাইরে বৈশিষ্ট্যগুলির বৈশিষ্ট্যগুলি একটি টেবিলের মধ্যে সংরক্ষণ করা উচিত এবং সেই টপোলজির স্তর হিসাবে নিবন্ধিত হওয়া উচিত AddTopoGeometryColumn

যাইহোক, বৈশিষ্ট্যাবলী (স্তর টেবিল সংরক্ষিত) নিজ নিজ বৈশিষ্ট্য (ইন উপাদানের সঙ্গে যোগদান করতে একটি সহজ উপায় node, faceঅথবা edge_data)?

এখন, আমি যা করি তা হ'ল:

SELECT whatever
FROM layer_tb l
     JOIN topo_topologyname.edge_data e ON (l.topo).id=edge_id;

তবে আমার ধারণা আমি সম্পূর্ণ layerটপোলজি স্কিমার নাম এবং স্তরের নাম উভয়ই জানতে চাইলে আমার প্রয়োজনীয় তথ্যটি অপ্রয়োজনীয়।

প্রকৃতপক্ষে, আমি মনে করি যে আমি বুঝতে পেরেছি যে topoস্তরটির কলামটিতে সংশ্লিষ্ট টপোলজিটি কোথায় রয়েছে তা জানতে যথেষ্ট তথ্য রয়েছে এবং তদ্ব্যতীত topologyস্কিমা প্রতিটি টোপোলজির জন্য প্রতিটি স্তর টেবিলের জন্য একটি রেফারেন্স সঞ্চয় করে।

একসাথে তথ্যে যোগদানের কোনও সংক্ষিপ্ত / সরল / সঠিক উপায় আছে কি? আমি টপোলজি এক্সটেনশন ফাংশনগুলির মধ্যে কিছু সন্ধান করছিলাম , তবে দরকারী কিছু খুঁজে পেল না।


3
আপনার কীভাবে টপোলজিকেও লাভ করতে হবে সে সম্পর্কে আমি কিছুটা হারিয়েছি, তবে এটি সাহায্য করতে পারে। আপনি একটি কাস্ট করতে পারেন TopoGeometryএকটি জ্যামিতি সরাসরি: SELECT whatever, ST_AsText(topogeom::geometry) FROM layer_tb। জিনিসটি হ'ল প্রান্তগুলি যদি পরে ভাগ হয়ে যায় তবে মনে হয় ফলস্বরূপ জ্যামিতিটি পরিবর্তিত হতে পারে।
jpmc26

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

উত্তর:


1

টপোলজির বৈশিষ্ট্যগুলির ম্যাপিং সরাসরি নয় । সম্পর্ক একটি নোড জন্য ভালো কিছু হল:

your_topogeom -> (topogeom_id) relation table (element_id)-> (node_id) node

সুতরাং আপনার নির্বাচিত বিবৃতিটি আরও এরকম হবে:

SELECT whatever
FROM layer_tb l
INNER JOIN relation AS r ON (((l.mytopogeom).id , (l.mytopogeom).layer_id)) = (r.topogeo_id, r.layer_id  )
INNER JOIN edge_data AS e ON (r.element_id = e.edge_id)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.