দ্বি-লেনের রাস্তাগুলির জন্য একটি লেবেল (ওএসএম, কিউগিস, পোস্টগিস)


9

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

প্রতিটি লেবেল থেকে ব্যাসার মতো কিছু সেট করা কি একই ধরণের অন্য কোনও লেবেলের মধ্যে স্থাপন করা যায় না? বা আমি কেবল বলতে পারি: একটি দ্বি-রাস্তার একটি লেন লেবেল করুন?

আমি কিউগিস ব্যবহার করছি। ওএসএম-ডেটা পোস্টজিআইএস-এ osm2pgsql দিয়ে আমদানি করা হয়।

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

সম্পাদনা: এই নতুন স্ক্রিনশটটি আরও বিশদ দেখায়:

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

উত্তর:


5

দ্বি-লেনের রাস্তার কেবল একটি লেনকে লেবেল করতে আমি প্রকাশটি ব্যবহার করছি:

 angle_at_vertex($geometry,1) <= 180

এবং এটি ফিল্টার হিসাবে ব্যবহার করুন। এটি কাজ করে কারণ ওএসএমে প্রতিটি লেন তাদের দিকে টানা হয়।

নীচের উদাহরণে আমি এক্সপ্রেশনটি angle_at_vertex($geometry,1)লেবেল হিসাবে এবং দ্বিতীয় ছবিতে angle_at_vertex($geometry,1) <= 180ফিল্টার হিসাবে অভিব্যক্তিটি ব্যবহার করছি ।

আগে:

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

পরে:

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

সেটিংস :

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


এখন এটি একটি চালাক ছোট কৌশল। কিউএমএল ফাইলের জন্যও +1।
জিওজেলোট

2

আমি ওএসএম টেবিলগুলির স্কিমা জানি না, তবে আপনি এই জাতীয় একটি কোয়েরি চেয়েছিলেন:

DELETE FROM labels WHERE label_id  IN (
    SELECT label_id_2 FROM (
        SELECT a.label_id AS label_id_1, b.label_id AS label_id_2 
        FROM labels AS a, labels AS b WHERE STDWithin(a.the_geom,b.the_geom, 0.001) and a.street = b.street and a.label_id != b.label_id
    )
)

এটি কাজ করতে পারে তবে আপনার পক্ষে একই দিকের বিভিন্ন দিকের জন্য একটি আইডি থাকলে আরও ভাল হয় এবং এই ক্যোয়ারিতে 100% কাজ করবে:

DELETE FROM labels WHERE label_id  IN (
    SELECT label_id_2 FROM (
        SELECT a.label_id AS label_id_1, b.label_id AS label_id_2 
        FROM labels AS a, labels AS b WHERE a.same_road_label_id = b.same_road_label_id;
    )
)

দেখতে বেশ সুন্দর, তবে আমি স্কিল-প্রোগ্রামিংয়ের সাথে পরিচিত নই। সুতরাং, আপনি কি দয়া করে "a.label_id", "a.label_id_1" এবং এর কি কি বোঝাতে চান? আমার টেবিলটিতে লেবেলের জন্য একটি আইডি (কলাম osm_id) এবং একটি কলাম (রেফ) রয়েছে (উদাহরণস্বরূপ "A70")।
এমএপি

আমি লেবেল টেবিলকে "এ" এবং "বি", এবং লেবেল_আইডি কলাম (ওএসএম_আইডি) হিসাবে লেবেল_আইডি এবং লেবেল_আইডি_কে "এএস" স্টেটমেন্ট দিয়ে ডাকলাম, কারণ আমাকে আরও গভীর উপগ্রহগুলিতে দুটি কলাম (লেবেল_আইডি) এবং দুটি টেবিল রয়েছে (লেবেলগুলি) একই নামের সাথে।
ফ্রান্সিসকো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.