আপনি যদি কেবল প্রতীকতত্ত্ব ব্যবহার করতে চান, আমি আমার উত্তর দ্বারা অনুপ্রাণিত একটি সমাধান অনুরূপ প্রশ্ন থেকে উত্সাহিত করব : কিউজিসে সেক্টর লাইট তৈরি? ।
অনুরূপ পদ্ধতির অনুসরণ করে এবং ধরে নেওয়া হচ্ছে যে আপনি কোনও প্রজেক্টেড সিআরএস-এ কাজ করছেন (পরিবর্তে আপনি যদি কোনও ভৌগলিক সমন্বয় ব্যবস্থা ব্যবহার করছেন তবে উত্তরটির শেষে নোটটি দেখুন), আমি আখ্যায়িত করতে চাই যে আমি ব্যাখ্যাটির দিকে মনোযোগ নিবদ্ধ করব কাঙ্ক্ষিত ফলাফল পুনরুত্পাদন করার জন্য ন্যূনতম জিনিসগুলি করা: এর অর্থ হল আপনার প্রয়োজনীয়তা আরও ভালভাবে ফিট করার জন্য কিছু অন্যান্য ছোটখাটো প্যারামিটারগুলি (যেমন আকার, প্রস্থ এবং অন্যান্য) সহজেই সামঞ্জস্য করা উচিত।
তদতিরিক্ত, আমি ধরে নিই যে "AZIMUTH"
এটি সেই ক্ষেত্র যা আজিমুথ মানগুলি সঞ্চয় করে এবং "BEAMWIDTH"
ক্ষেত্র যা অ্যান্টেনার বিমের প্রস্থকে সঞ্চয় করে।
সমাধান
আমরা একটি এবং দুটি প্রতীক স্তরকে Single symbol
পুনরাবৃত্তি করে পয়েন্টগুলি রেন্ডার করব :Simple Marker
Geometry generator
আরও ব্যাখ্যায় আমি উপরের চিত্রের চিহ্নগুলির একই ক্রমটি অনুসরণ করব।
1) সাধারণ চিহ্নিতকারী
আমি একটি লাল বৃত্তের একটি ডিফল্ট প্রতীক বেছে নিয়েছি (এটি এই টিউটোরিয়ালের সহজ অংশ), যার আকার 3 মিমি এবং প্রস্থ 0.4 মিমি।
2) জ্যামিতি জেনারেটর নং 1
একটি নতুন প্রতীক স্তর যুক্ত করুন Geometry generator
এবং LineString / MultiLineString
প্রকারগুলি নির্বাচন করুন :
এই অভিব্যক্তিটি Expression
ক্ষেত্রটি sert োকান:
make_line(
$geometry,
make_point($x + 300*cos(radians(90 - "AZIMUTH" )), $y + 300*sin(radians((90 - "AZIMUTH" ))))
)
আমরা কেবল তীরটি সংজ্ঞায়িত করেছি যা আজিমুথ সেটটির দিকে নির্দেশ করে (তীর তৈরির জন্য, প্রধান চিহ্ন মেনু থেকে বিকল্পের Arrow
অধীনে প্রতীক স্তর প্রকারটি নির্বাচন করতে মনে রাখবেন Line
)। দয়া করে নোট করুন যে 300
এটি মিটারের একটি দূরত্বকে উপস্থাপন করে এবং এটি একটি স্বেচ্ছাচারিত মূল্য, তাই আপনার প্রয়োজন অনুসারে এটিকে পরিবর্তন করতে নির্দ্বিধায়।
3) জ্যামিতি জেনারেটর নং 2
একটি নতুন প্রতীক স্তর যুক্ত করুন এবং Geometry generator
প্রকার এবং Polygon / MultiPolygon
প্রকারগুলি নির্বাচন করুন :
এই অভিব্যক্তিটি Expression
ক্ষেত্রটি sert োকান:
CASE
WHEN ("BEAMWIDTH") <= 180
THEN
intersection(
buffer(
$geometry, 200),
make_polygon(
geom_from_wkt(
geom_to_wkt(
make_line(
$geometry,
make_point($x + 2000*cos(radians(90 - "AZIMUTH" - "BEAMWIDTH"/2 )), $y + 2000*sin(radians((90 - "AZIMUTH" - "BEAMWIDTH"/2 )))),
make_point($x + 2000*cos(radians(90 - "AZIMUTH" )), $y + 2000*sin(radians((90 - "AZIMUTH" )))),
make_point($x + 2000*cos(radians(90 - "AZIMUTH" + "BEAMWIDTH" /2)), $y + 2000*sin(radians((90 - "AZIMUTH" + "BEAMWIDTH"/2)))),
$geometry)
)
)
)
)
WHEN ("BEAMWIDTH") > 180
THEN
difference(
buffer(
$geometry, 200),
make_polygon(
geom_from_wkt(
geom_to_wkt(
make_line(
$geometry,
make_point($x + 2000*cos(radians(90 - "AZIMUTH" - "BEAMWIDTH"/2 )), $y + 2000*sin(radians((90 - "AZIMUTH" - "BEAMWIDTH"/2 )))),
make_point($x - 2000*cos(radians(90 - "AZIMUTH" )), $y - 2000*sin(radians((90 - "AZIMUTH" )))),
make_point($x + 2000*cos(radians(90 - "AZIMUTH" + "BEAMWIDTH" /2)), $y + 2000*sin(radians((90 - "AZIMUTH" + "BEAMWIDTH"/2)))),
$geometry)
)
)
)
)
END
আমরা সেক্টরটি সবেমাত্র সংজ্ঞায়িত করেছি। দয়া করে মনে রাখবেন 200
এবং 2000
মিটার দূরত্বের প্রতিনিধিত্ব করেন এবং তারা নির্বিচারে মান কারণ আমি বৃত্ত 200 মিটার ব্যাসার্ধ থাকার ছেদ করার জন্য একটি বহুভুজ তৈরি করার চেষ্টা করছি, তাদের আপনার চাহিদা অনুযায়ী পরিবর্তন করুন মুক্ত মনে।
সর্বশেষ ফলাফল
আপনি যদি পূর্বের কাজগুলি সঠিকভাবে সম্পাদন করেন, আপনি এইগুলির মতো ফলাফল পেতে সক্ষম হবেন (এই সমাধানটি ছাড়াই লেবেলগুলি যুক্ত করা হবে এবং সেগুলি কেবল আরও ভাল প্রসঙ্গটি ব্যাখ্যা করবে):
বিঃদ্রঃ
আপনি যদি কোনও ভৌগলিক সমন্বয় ব্যবস্থা ব্যবহার করছেন , অর্থাৎ আপনি যদি ডিগ্রি নিয়ে কাজ করছেন এবং দূরত্বের সাথে নয়, পূর্ববর্তী সূত্রগুলিতে আমি যখন একটি দূরত্ব ব্যবহার করেছি তখন উপযুক্ত মানগুলি ব্যবহার করে তা যথেষ্ট হওয়া উচিত। আমি যে দূরত্বগুলি ব্যবহার করেছি তা হ'ল:
- 300 মি (জ্যামিতি জেনারেটর নং 1 দেখুন);
- 200 মি (জ্যামিতি জেনারেটর নং 2 দেখুন);
- 2000 মি (জ্যামিতি জেনারেটর নং 2 দেখুন);
সুতরাং আপনি এটিকে ডিগ্রিতে প্রকাশিত অন্যান্য স্বেচ্ছাচারিত মানগুলির সাথে প্রতিস্থাপন করতে পারেন (উদাহরণস্বরূপ 0.0002
, 0.002
এবং আরও)।
বোনাস
আমি এখানে শৈলীটি সংযুক্ত করেছি : আপনি এই কোডটি যে কোনও পাঠ্য সম্পাদক দিয়ে খুলতে পারেন এবং এটি QGIS লেয়ার স্টাইল ফাইল হিসাবে সংরক্ষণ করতে পারেন (অর্থাত একটি .qml
এক্সটেনশন সহ)।
উপরের স্টাইলটি QGIS 2.18.4 ব্যবহার করে তৈরি করা হয়েছিল (এতে আপনি যে শেফফাইলটি ব্যবহার করছেন তার একই নাম থাকতে হবে)।