यदि आप केवल सहजीवन का उपयोग करना चाहते हैं, तो मैं एक समान प्रश्न से मेरे उत्तर से प्रेरित समाधान का प्रस्ताव करता हूं: QGIS में सेक्टर लाइट्स बनाना? ।
इसी तरह के दृष्टिकोण के बाद, और आप एक अनुमानित सीआरएस पर काम कर रहे हैं (इसके बजाय, यदि आप भौगोलिक समन्वय प्रणाली का उपयोग कर रहे हैं, तो उत्तर के अंत में नोट देखें), मैं यह रेखांकित करना चाहता हूं कि मैं स्पष्टीकरण पर ध्यान केंद्रित करूंगा। वांछित परिणाम को पुन: पेश करने के लिए करने के लिए न्यूनतम चीजें: इसका मतलब है कि कुछ अन्य मामूली मापदंडों (जैसे आकार, चौड़ाई और इतने पर) को आपकी आवश्यकताओं को बेहतर ढंग से फिट करने के लिए आपके द्वारा आसानी से समायोजित किया जाना चाहिए।
इसके अलावा, मुझे लगता है कि "AZIMUTH"
वह क्षेत्र है जो अज़ीमुथ मूल्यों को संग्रहीत करता है और "BEAMWIDTH"
वह क्षेत्र है जो एंटीना बीम की चौड़ाई को संग्रहीत करता है।
समाधान
हम Single symbol
एक Simple Marker
और दो Geometry generator
प्रतीक परतों के आवर्ती के साथ अंक प्रस्तुत करेंगे :
आगे की व्याख्या में, मैं ऊपर की छवि में प्रतीकों के उसी क्रम का पालन करूंगा।
1) सरल मार्कर
मैंने एक लाल वृत्त का डिफ़ॉल्ट प्रतीक चुना (यह इस ट्यूटोरियल का सबसे आसान हिस्सा है), जिसका आकार 3 मिमी और चौड़ाई 0.4 मिमी है।
2) ज्यामिति जनरेटर नंबर 1
एक नई प्रतीक परत जोड़ें Geometry generator
और LineString / MultiLineString
प्रकारों का चयन करें :
इस एक्सप्रेशन को Expression
फ़ील्ड में डालें :
make_line(
$geometry,
make_point($x + 300*cos(radians(90 - "AZIMUTH" )), $y + 300*sin(radians((90 - "AZIMUTH" ))))
)
हमने केवल उस तीर को परिभाषित किया है जो azimuth सेट की ओर इंगित करता है (तीर बनाने के लिए, मुख्य प्रतीक मेनू से विकल्प के Arrow
तहत प्रतीक परत प्रकार का चयन करना याद रखें Line
)। कृपया ध्यान दें कि 300
मीटर में एक दूरी का प्रतिनिधित्व करता है और यह एक मनमाना मूल्य है, इसलिए अपनी आवश्यकताओं के अनुसार इसे बदलने के लिए स्वतंत्र महसूस करें।
3) ज्यामिति जनरेटर नंबर 2
एक नई प्रतीक परत जोड़ें और Geometry generator
प्रकार और Polygon / MultiPolygon
प्रकार चुनें:
इस एक्सप्रेशन को Expression
फ़ील्ड में डालें :
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 का उपयोग करके बनाई गई थी (इसमें उसी आकार का नाम होना चाहिए जिसका आप उपयोग कर रहे हैं)।