মানচিত্রে অ্যান্টেনার প্রতীক দেখানো হচ্ছে: পয়েন্ট চিহ্ন বা বৈশিষ্ট্যগুলি (বহুভুজ)


12

আমি একটি মানচিত্রে একটি সেলুলার নেটওয়ার্ক দেখাতে চাই। ইনপুট ডেটা একটি .csv ফাইল যেখানে প্রতিটি স্ট্রিং একটি সেলুলার ক্ষেত্র। বৈশিষ্ট্যগুলি হ'ল: সেক্টর আইডি, এর স্থানাঙ্কগুলি, এর আজিমুথ এবং অ্যান্টেনার বিমের প্রস্থের একটি কোণ।

অ্যান্টেনার মরীচি প্রস্থের মানগুলি 30 থেকে 360 ডিগ্রি পর্যন্ত থাকে। 360 অ্যান্টেনার বিমের প্রস্থের অর্থ এটি মানচিত্রে একটি বৃত্ত হিসাবে প্রদর্শিত হতে হবে। অন্যান্য বীম প্রস্থের সাথে অ্যান্টেনা অবশ্যই উপযুক্ত অ্যাপারচার কোণগুলির সাথে সেক্টর হিসাবে দেখানো উচিত।

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

কেবলমাত্র প্রতীক ব্যবহার করে অ্যান্টেনা দেখানো সম্ভব? আমি কীভাবে আমার নিজের এসভিজি প্রতীক তৈরি করব এবং আজিমুথ অনুসারে এটি কীভাবে আবর্তিত হবে তা খুঁজে পেতে আশা করি। তবে 30 থেকে 360 ডিগ্রি পর্যন্ত এর বৈশিষ্ট্যটির মান অনুযায়ী ভেরিয়েবল অ্যান্টেনার বিমের প্রস্থ প্রয়োগ করার কোনও উপায় আছে কি?

আমি মনে করি প্রতীকগুলি অ্যান্টেনা আঁকার সবচেয়ে ভাল উপায় কারণ দেখার মানদণ্ড অনুসারে মানচিত্রে গতিশীল ভিজ্যুয়ালাইজেশনের কারণে অ্যান্টেনা আঁকার সবচেয়ে ভাল উপায়, যদি এই উপায়ে কিউজিআইএসে সম্ভব হয়।

অবশ্যই একটি স্তর বৈশিষ্ট্য হিসাবে উপযুক্ত বহুভুজ অঙ্কন করে কার্যটি সমাধান করা যেতে পারে, তবে এটি কার্যকর সমাধান হবে।


সুতরাং আপনাকে সঠিক দিকটিতে চাপটি আঁকতে হবে যা প্রতিটি সাইটের জন্য আলাদা?
নাথান ডাব্লু

ঠিকমতো বুঝতে পারলে মোটেও না। ছবিতে যেমন দেখানো হয়েছে এটি অবশ্যই চেনাশোনা (বা বিমউথের ক্ষেত্রে পুরো বৃত্ত = 360) হতে হবে।
ই বোব্রভ

হ্যাঁ এটাই আমার অর্থ।
নাথান ডাব্লু

আচ্ছা আমি দেখি. সাধারণভাবে তোরণ প্রতীকটি কঠোরভাবে প্রয়োজন হয় না। প্রধান বৈশিষ্ট্যগুলি হ'ল আজিমুথ এবং বিমউইথ। অ্যান্টেনা আঁকতে আমি কোনও চিহ্ন ব্যবহার করতে পারি কেবল একটি চাপ নয়।
ই বোব্রভ

সম্ভবত আমি উদাহরণটি পেয়েছি যা সাহায্য করতে পারে: কাস্টম সিম্বল স্তর স্তর তৈরি করা । তবে আমি নিশ্চিত নই। সুতরাং যে কেউ আপনার নিজস্ব প্রতীক স্তর বর্গ তৈরি করার চেষ্টা করেছিল যা উদাহরণস্বরূপ প্রতিটি স্তর বৈশিষ্ট্যের দিকটি এর বৈশিষ্ট্যটির উপর নির্ভর করে (উদাহরণস্বরূপ উপরের চিত্রের শব্দগুলিতে অ্যান্টেনা আজিমুথ)?
ই ববরোভ

উত্তর:


7

কিছু দিন আগে কিউজিসে একটি নতুন প্লাগইন যুক্ত হয়েছিল যা ওয়েজ বাফার প্রসেসিং অ্যালগরিদম নামে পরিচিত । এটি দেখে মনে হচ্ছে এটি আগ্রহী।

নামটি যেমন প্রস্তাবিত এটি একটি প্রসেসিং অ্যালগরিদম, সুতরাং আপনার এটি প্রক্রিয়াজাতকরণ সরঞ্জামবক্স থেকে চালানো দরকার। যদিও এখনও চেষ্টা করার সুযোগ হয়নি।

এটি চেনাশোনাগুলির সেক্টর তৈরি করে - একটি সাধারণ বৃত্তাকার বাফারের মতো, তবে ক্ষেত্রের মানগুলি ব্যবহার করে কীলক কোণ এবং ব্যাসার্ধ সেট করা যায়।

গিথুব পৃষ্ঠায় ডকুমেন্টেশন এবং স্ক্রিনশটগুলি দেখা যায়


10

আপনি যদি কেবল প্রতীকতত্ত্ব ব্যবহার করতে চান, আমি আমার উত্তর দ্বারা অনুপ্রাণিত একটি সমাধান অনুরূপ প্রশ্ন থেকে উত্সাহিত করব : কিউজিসে সেক্টর লাইট তৈরি?


অনুরূপ পদ্ধতির অনুসরণ করে এবং ধরে নেওয়া হচ্ছে যে আপনি কোনও প্রজেক্টেড সিআরএস-এ কাজ করছেন (পরিবর্তে আপনি যদি কোনও ভৌগলিক সমন্বয় ব্যবস্থা ব্যবহার করছেন তবে উত্তরটির শেষে নোটটি দেখুন), আমি আখ্যায়িত করতে চাই যে আমি ব্যাখ্যাটির দিকে মনোযোগ নিবদ্ধ করব কাঙ্ক্ষিত ফলাফল পুনরুত্পাদন করার জন্য ন্যূনতম জিনিসগুলি করা: এর অর্থ হল আপনার প্রয়োজনীয়তা আরও ভালভাবে ফিট করার জন্য কিছু অন্যান্য ছোটখাটো প্যারামিটারগুলি (যেমন আকার, প্রস্থ এবং অন্যান্য) সহজেই সামঞ্জস্য করা উচিত।

তদতিরিক্ত, আমি ধরে নিই যে "AZIMUTH"এটি সেই ক্ষেত্র যা আজিমুথ মানগুলি সঞ্চয় করে এবং "BEAMWIDTH"ক্ষেত্র যা অ্যান্টেনার বিমের প্রস্থকে সঞ্চয় করে।

সমাধান

আমরা একটি এবং দুটি প্রতীক স্তরকে Single symbolপুনরাবৃত্তি করে পয়েন্টগুলি রেন্ডার করব :Simple MarkerGeometry 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 ব্যবহার করে তৈরি করা হয়েছিল (এতে আপনি যে শেফফাইলটি ব্যবহার করছেন তার একই নাম থাকতে হবে)।


আপনি কি এই সমাধানটির সন্ধান করছেন? এটা কি কাজ করে?
এমগ্রি

আপনার soluton বিষয়টিতে বর্ণিত কেসটি সম্পূর্ণ সমাধান করুন! আমি এটি প্রয়োগ করেছি এবং বুঝতে পেরেছি যে আমার নিজের আসল ঘটনাটি কিছুটা আলাদা। দুঃখিত যে আমার দোষ।
ই বোব্রভ

1) মানচিত্রে আমার সেক্টরের ঘনত্বটি ডিফেরেন্ট, অর্থাত্ সেক্টরের মধ্যে সংক্ষিপ্ত দূরত্বের ক্ষেত্রে কোডের নির্ধারিত দূরত্ব অনেকগুলি সেক্টরকে ওভারল্যাপিং দেবে, মানচিত্রের জুম পরিবর্তন করতে সহায়তা করবে না, তাই এটি বরং শক্ত হবে মানচিত্র পড়তে। তবে সেক্টরগুলির মধ্যে দীর্ঘ দূরত্বের ক্ষেত্রে দেখা গেছে যে খাতগুলি খুব ছোট এবং সম্ভবত মানচিত্রটি পড়া খুব কঠিন হবে। একক প্রতীক উদ্বোধন করা সমস্যা থেকে মুক্ত, জুম করে মানচিত্রের সাথে তাদের স্কেলগুলি পরিবর্তন হয়।
ই বোব্রভ

2) এবং মরীচিদ্বয়ের বিকৃতি রয়েছে: মরীচিদ্বীপ 360 ডিগ্রি দেখতে উপবৃত্তাকার মতো, বিভিন্ন আজিমুথ সহ সেক্টর তবে একই বিমউইথটি সমতুল্য বিমউথের সাথে সেক্টরের মতো দেখায় না। এটা কি কারণ আমি ভৌগলিক সমন্বয় সিস্টেম ব্যবহার করছি? আপনি এখন, দ্রাঘিমাংশ / অক্ষাংশের বিভিন্ন কোণ পৃথিবীর পয়েন্টগুলির মধ্যে পৃথক দূরত্ব উপস্থাপন করে। সুতরাং সমাধানগুলি সেক্টরগুলিতে অবস্থিত পৃথিবী অঞ্চলে স্থানীয়করণের প্রয়োজন।
ই বোব্রভ

যাইহোক আপনার সমাধান এবং অনুরূপ উত্তরের জন্য রেফারেন্স "কিউজিসে সেক্টর লাইট তৈরি করা?" আমাকে কিছু দরকারী কার্যকারিতা দেখতে সাহায্য করেছে। আবার আপনাকে ধন্যবাদ.
ই বোবরোভ

4

মগড়িতে বড় কুদোস।

আমাদের পরীক্ষার স্তরটিতে সবকিছু সুচারুভাবে কাজ করেছিল। একটি উত্পাদন স্তরে, দুই / তিন ঘন্টা পরে, আমি $ জ্যামিতি দিয়ে কোনও সমস্যা সন্ধান করতে সক্ষম হয়েছি । প্ল্যাটফর্ম থেকে একটি পয়েন্ট স্তর রফতানি করা হয়েছিল, বিজ্ঞপ্তি নিল না, তবে এটি মাল্টিপয়েন্ট ছিল । এটি সমস্যার কারণ বলে মনে করেছিল: তীরটি টানা হয়নি; এবং আশ্চর্যের বিষয় হ'ল কেবল গণনা করা পয়েন্টগুলিই বৃত্তগুলির বহুভুজ তৈরি করে।

আরেকটি বিষয় হ'ল আমি একটি পরিবর্তনশীল ব্যাসার্ধ ব্যবহার করছি । (এই ক্ষেত্রে এটি সঠিক শব্দ কিনা তা নিশ্চিত নন, আপনি এটির নাম 'মরীচি দৈর্ঘ্য' বা যাই হোক না কেন রাখতে পারেন)।

মাল্টিপয়েন্টস জ্যামিতির ধরণের স্তর সহ আমি এখন যা ব্যবহার করছি তা এখানে রয়েছে (আসলে সমস্ত বৈশিষ্ট্যই একক পয়েন্ট) এবং এটি আমার জন্য কিউজিস ২.১18.৩ এ কাজ করে

তীরের এক্সপ্রেশন 360 if হলে তীর চিহ্ন নয় °

CASE

WHEN ("BEAMWIDTH") = 360
THEN 
make_line(
 make_point($x, $y),
 make_point($x + "RADIUS"*cos(radians(90 -  "AZIMUTH" )), $y + "RADIUS"*sin(radians((90 - "AZIMUTH" ))))
)

END

বহুভুজ প্রকাশ

CASE

WHEN ("BEAMWIDTH") <= 180
THEN
intersection(
  buffer(
   make_point($x,$y), "RADIUS"),
  make_polygon(
   geom_from_wkt(
    geom_to_wkt(
     make_line(
      make_point($x,$y),
      make_point($x + "RADIUS"*2*cos(radians(90 -  "AZIMUTH" - "BEAMWIDTH"/2 )), $y + "RADIUS"*2*sin(radians((90 - "AZIMUTH" - "BEAMWIDTH"/2 )))),
      make_point($x + "RADIUS"*2*cos(radians(90 -  "AZIMUTH" )), $y + "RADIUS"*2*sin(radians((90 - "AZIMUTH" )))),
      make_point($x + "RADIUS"*2*cos(radians(90 - "AZIMUTH" + "BEAMWIDTH" /2)), $y + "RADIUS"*2*sin(radians((90 - "AZIMUTH" + "BEAMWIDTH"/2)))),
      make_point($x,$y))
     )
    )
   )
  )

WHEN ("BEAMWIDTH") > 180
THEN
difference(
  buffer(
   make_point($x,$y), "RADIUS"),
   make_polygon(
    geom_from_wkt(
     geom_to_wkt(
      make_line(
       make_point($x,$y),
       make_point($x + "RADIUS"*2*cos(radians(90 -  "AZIMUTH" - "BEAMWIDTH"/2 )), $y + "RADIUS"*2*sin(radians((90 - "AZIMUTH" - "BEAMWIDTH"/2 )))),
       make_point($x - "RADIUS"*2*cos(radians(90 -  "AZIMUTH" )), $y - "RADIUS"*2*sin(radians((90 - "AZIMUTH" )))),
       make_point($x + "RADIUS"*2*cos(radians(90 - "AZIMUTH" + "BEAMWIDTH" /2)), $y + "RADIUS"*2*sin(radians((90 - "AZIMUTH" + "BEAMWIDTH"/2)))),
       make_point($x,$y))
      )
     )
    )
   )

END

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

1

আমাকে কোনও অতিরিক্ত প্লাগইন ছাড়াই ওয়েবে আংশিক সমাধান উপহার দেওয়া হয়েছিল, কেবল বাক্সের বাইরে কিউগিস। এটি অ্যান্টেনার বিমউইথটি দেখায় না, কেবল সরল মার্কারকে সঠিক দিকে ঘোরান: সাধারণ মার্কার ব্যবহার করুন এবং এন্টেনা আজিমুথ + 180 ডিগ্রি দিয়ে এটি ঘোরান (স্তর বৈশিষ্ট্য> একক সিম্বল-> মার্কার-> সাধারণ চিহ্নিতকারী-> ত্রিভুজ-> সম্পাদনা) -> অভিব্যক্তি ক্ষেত্রে <180 + "অ্যান্টেনা আজিমুথ"> টাইপ করুন এবং চিহ্নিতকারীটির অ্যাঙ্কর পয়েন্ট ক্ষেত্রে শীর্ষস্থান নির্ধারণ করুন)। এম্বেড করা সহজ ত্রিভুজ চিহ্নিতকারীটির অনুপযুক্ত দিকের কারণে <180 + "অ্যান্টেনা আজিমুথ"> এর প্রয়োজন। অন্যথায় এটি ভুল অ্যান্টেনার দিকনির্দেশ প্রদর্শন করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.