উচ্চতা লেবেলের নীচে কনট্যুর লাইনগুলিকে কীভাবে বাধা দেওয়া যায় (লেবেল বাফার ব্যবহারের পরিবর্তে)?


32

কোনও উচ্চতা লেবেলের নীচে একটি কনট্যুর লাইনে বাধা দেওয়ার কোনও উপায় আছে কি?

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



1
আমি কনট্যুর লেবেলিংয়ের জন্য কিগিস ব্যবহার করি
এমএপি

আপনি কি এমন কোনও উত্তর গ্রহণ করবেন যার জন্য পোস্টজিআইএস দরকার?
স্ক্রো

3
দুর্ভাগ্যজনকভাবে: না :) তবে, পোস্টজিআইএস দিয়ে সমস্যা সমাধানের কোনও উপায় আছে কি?
এমএপ

উত্তর:


22

হ্যাঁ, করণীয়। সাধারণত আমি আংশিক স্বচ্ছ বাফারের পরামর্শ দিই, তবে কেন আপনি এই কার্টোগ্রাফিকভাবে করতে চান তা আমি দেখতে পাচ্ছি।

এটি ধীর হতে পারে এবং আপনি লেবেলগুলি কোথায় যেতে চান সে সম্পর্কে আপনাকে ম্যানুয়ালি সিদ্ধান্ত নেওয়া দরকার - তবে কার্টোগ্রাফিকভাবে বলতে গেলে, এটি কোনও খারাপ জিনিস নয়!

এখানে একটি স্ক্রিনশট ...

আপনি দেখতে পাচ্ছেন, কোনও বাফার নেই। নীচে রাস্টার প্রভাবিত হয় না। আমি পাতলা অন্তর্বর্তী কনট্যুর লাইনগুলি অন্তর্ভুক্ত করেছি এবং সেগুলি স্টাইল করেছি যাতে তারা কেবল তখনই প্রদর্শিত হয় যখন ELEV% 50 <> 0 হয়

বিঘ্নিত কনট্যুর লাইনের উদাহরণ

আমি কিউজিআইএস ২.১২ এ এটি করেছি ... আপনার মাইলেজটি পূর্ববর্তী সংস্করণগুলির সাথে পৃথক হতে পারে।

আমি ধরে নিলাম এখানে প্রতিটি কনট্যুর লাইনে আপনার একটি "ELEV" ক্ষেত্র রয়েছে।

কনট্যুর লাইনগুলি সেগমেন্টাইজ করুন

  1. আপনার রূপগুলি সমান দৈর্ঘ্যের অংশগুলিতে বিভক্ত করতে প্রসেসিং এবং জিআরএসএস অ্যালগরিদম v.split.length ব্যবহার করুন । আপনি এমন একটি দৈর্ঘ্য চয়ন করতে হবে যা মানচিত্র ইউনিটগুলিতে আপনার লেবেলের আকারের কাছাকাছি হবে, ধরে নিবেন আপনি মিটার ব্যবহার করছেন। এখানে আমি 200 মি।

    এটি আপনার ফাইলটিকে আরও অনেক বড় করে তুলবে বলে খুব সাবধানতা অবলম্বন করুন (স্ক্রিনশটের বৈশিষ্ট্যটি গণনা করুন)।

    এটিকে পেতে, আপনি অন্তর্বর্তী সমস্ত কনট্যুর লাইন প্রক্রিয়াজাতকরণ এড়াতে কেবল স্টাইল করতে চান কেবল সেই কনট্যুর লাইনগুলি তৈরি করতে চাইতে পারেন (যেমন প্রতি 50 বা 100 মিটার)।

  2. এই স্তরে, শোএলবেল নামে একটি 1 ডিজিটের পূর্ণসংখ্যার ক্ষেত্র যুক্ত করুন । 0 বা NULL এ ডিফল্ট।

  3. এই ক্ষেত্রটি ১ এ সেট করা আছে কেবলমাত্র সেই বিভাগে প্রদর্শিত লেবেলটি পরিবর্তন করুন this

    if ( "showlabel" is not null, "ELEV", "")
    

    আমি মনে করি যদি (এক্সপ্রেশন, সত্য-মান, মিথ্যা-মান) মোটামুটি নতুন হয়; যদি কোনও পুরানো সংস্করণ ব্যবহার করা হয় তবে আপনি CASE-ELSE ব্যবহার করতে পারেন

  4. লাইন শৈলীর পরিবর্তন করুন যাতে লেবেল প্রদর্শিত হয় সেই অংশগুলি বাদে স্থির দৈর্ঘ্যের খণ্ডগুলি সমস্ত আঁকুন । সুতরাং দুটি নিয়মের সাথে বিধি-ভিত্তিক রেন্ডারিং ব্যবহার করুন

    Rule 1: "showLabel" is null
    Black, 0% transparent
    
    Rule 2: "showLabel" is not null
    Any colour, 100% transparent
    

    এখন, সমস্ত রূপটি ডিফল্টরূপে প্রদর্শিত হবে, তবে কোনও লেবেল নেই।

    ম্যানুয়ালি বিভাগগুলি সম্পাদনা করুন যেখানে আপনি লেবেল দেখাতে চান

    সম্পাদনা মোডে যান এবং ম্যানুয়ালি সেগমেন্টগুলি নির্বাচন করুন যেখানে আপনি কনট্যুর মানগুলি প্রদর্শন করতে চান এবং showLabelনির্বাচিত বৈশিষ্ট্যগুলির জন্য 1 এর মান নির্ধারণ করুন । জিনিসগুলিকে গতি বাড়ানোর জন্য মাল্টি-সিলেক্ট বিভাগগুলিতে আপনি Ctrl+ সিলেক্ট (উবুন্টু / উইনে, Cmd+ Ctrl+ ক্লিক / ম্যাক?) ব্যবহার করতে পারেন ।

    আপনি এখন যেখানে লেবেলগুলি প্রদর্শন করতে চান সেই কনট্যুরগুলি এখন 'ক্লিপ' করা উচিত এবং লেবেল ফাঁক ফাঁকে প্রদর্শিত হবে।

এই ক্ষেত্রে, আমার লেবেল সেটিংসটি ছিল:

CRS: EPSG 27700 (Local UTM for UK, in meters)
Text size: 50 map units
Placement: Parallel, On Line

আশা করি এইটি কাজ করবে!


5
আমি কল্পনা করতে পারি এটিই একমাত্র সম্পূর্ণ পরিপূর্ণ সমাধান solution অনেক বেদনাদায়ক যদিও অনেক লেবেল থাকলেও আমি আমার ভূগর্ভস্থ জলের সমস্ত মানচিত্র (প্রতি বছর কয়েক হাজার) এইভাবে করার কথা ভাবতে পারি না। ভবিষ্যতে যদি শৈলীর মাধ্যমে এটি অর্জনযোগ্য হয় তবে দুর্দান্ত হবে - সেরাটি হবে কাস্টম লাইন প্যাটার্ন এবং লেবেল পুনরাবৃত্তি + অফসেট।
মিরো

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

7

আমি "লেবেল সেটিং" ট্যাবে "বাফার" বিকল্পটি ব্যবহার করি। (লেবেল বোতামটি ব্যবহার করে, স্তর বৈশিষ্ট্যের কথোপকথনে পুরাতন লেবেলগুলির বিকল্প নয়)) এটি কনট্যুর লাইনটি মুছে ফেলবে না, যেমনটি আমি ধারণা করি যে আপনি করতে চাইছেন তবে এটি লেবেলটিকে সুস্পষ্ট করে তুলবে।


4
আমি এর আগে কখনও ভাবিনি, তবে এটি সুবিধাজনক হবে যদি বাফারের জন্য কোনও রঙ বরাদ্দ না করে আপনি নির্বাচিত স্তরগুলিতে এটি 'নকআউট' হিসাবে প্রয়োগ করতে পারেন।
স্ক্রো

5
কিউজিআইএসের সর্বশেষতম সংস্করণে স্বচ্ছ বাফার রয়েছে যাতে আপনি মানচিত্রের অন্যান্য অংশে প্রভাব হ্রাস করতে পারেন।
নাথান ডাব্লু

1
@ এমএপি একটি নকআউট এর নীচে পিক্সেলগুলি মুছে ফেলে। যদি এটি কোনও বিকল্প হয় তবে এই ক্ষেত্রে আপনি কনট্যুর স্তরটি নকআউট করতে পছন্দ করবেন।
স্ক্রো

1
নকআউট - এসরি শব্দটি হ'ল "মাস্কিং" রিসোর্সগুলি
মাইক

1
@ এমএপি - একটি বিকাশকারীকে স্পনসর করুন, বা কোনও বৈশিষ্ট্য অনুরোধ জমা দিন এবং অন্যের সদর্থকে অপেক্ষা করুন। :)
স্ক্রো

5

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

তত্ত্ব অনুসারে কাস্টম লাইন প্যাটার্ন এবং লেবেল পুনরাবৃত্তি + অফসেট ব্যবহার করা উচিত । দুর্ভাগ্যক্রমে কোনও লেবেল অফসেট সেটিং নেই।

  • কিছু পরীক্ষার পরে কিউজিআইএসকে সঠিক বিরতিতে লেবেল স্থাপনের সাথে কঠোর হতে বাধ্য করা অসম্ভব এবং অন্য কোথাও নেই (+ যাইহোক অফসেট শুরু না হওয়া)
  • 20 লাইন - 10 স্পেস - 70 লাইন - 0 স্পেসের মতো অফসেট শুরু করার জন্য শূন্য মিমি সহ কাস্টম লাইন প্যাটার্ন তৈরি করা অসম্ভব - সুতরাং লেবেলটি প্রতি 100 মিমিটি 30 মিমি অফসেটের সাথে শুরুতে স্থাপন করা হবে - যার অর্থ লেবেলটি থাকবে প্রতি 10 মিমি গর্তের মাঝখানে।

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


2

একই সমস্যায় পড়ার পরে সম্প্রতি ভারী উত্তোলন চালানোর জন্য আমি কিউজিআইএস পাইথন স্ক্রিপ্ট একসাথে রেখেছি। কিছু (ইউকে) পরীক্ষার ডেটা, রেডমি (গাইড) এবং ব্যবহৃত স্টাইল শীট সহ স্ক্রিপ্টটি https://github.com/pjgeng/Contour- Labels এ পাওয়া যাবে

সংক্ষেপে স্ক্রিপ্টটি দুটি ভেক্টর স্তর ইনপুট হিসাবে ব্যবহার করে - এনোটেটেড কনট্যুর স্তর এবং একটি "গাইড" স্তর। পরেরটিগুলিতে পছন্দসই লেবেল অবস্থানগুলিতে রূপককে ছেদ করে পলাইনগুলি সমন্বিত।

স্ক্রিপ্টটি সূচিপত্র এবং সূচক কনট্যুর ব্যবধানের মধ্যবর্তী দূরত্বের ভিত্তিতে কাজ করে যা লেবেল প্রয়োগ করতে পারে, লেবেল পয়েন্টগুলিতে একটি ঘূর্ণন মান যুক্ত করে এবং অবশেষে ফাঁকগুলি তৈরি করতে মূল কনট্যুর স্তরটি ক্লিপ করে।

চূড়ান্ত ফলাফল ক্লোজআপ।

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

দুর্ভাগ্যক্রমে আমি প্রক্রিয়াটি ডকুমেন্ট করতে বা চিত্রিত করতে এই সময়ে আর কোনও ছবি যুক্ত করতে পারি না can't

PS: রিপোজিটরিতে প্রদত্ত স্টাইল স্তরগুলি ব্যবহার করে ব্যবহারকারীরা লেবেলিং মেনুতে "রোটেশন", "লেবেল দেখান" এবং "সর্বদা দেখান" এর জন্য কাস্টম ক্ষেত্রগুলিকে "সক্রিয়" করতে হতে পারে। কিউজিআইএস-এর কয়েকটি স্থাপনায় স্টাইলশীট থেকে স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয় - এটি এখনও কী কারণে ঘটেছে তা আমি খুঁজে পাইনি।


2

কিউজিআইএস কনট্যুর-লেবেল-মাস্কিং সমস্যার জন্য এখানে আরও একটি সমাধান রয়েছে, যেখানে আমি লেবিলে অবস্থান নির্ধারণের জন্য জ্যামিতি জেনারেটরের সাথে কিউজিআইএসের স্প্যাটিয়ালাইট কার্যকারিতা (বর্তমানে কিউজিআইএস 3.x) উপার্জন করি।

এই খুব গতিশীল সমাধানটি আমাদের সমস্ত লেবেল পাঠ্যের মাপ এবং লেবেল অবস্থান অবিলম্বে পরিবর্তন করতে দেয় এবং এমনকি একটি পিডিএফ ভেক্টর রফতানি থেকে বেঁচে থাকে!

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

এটি সম্ভব করার জন্য আমাদের নিম্নলিখিত অংশগুলির প্রয়োজন:

  1. একটি "রেখাযুক্তকরণ" বা "মাল্টলাইনেস্ট্রিং" ভেক্টর স্তরটি "ক্ষেত্রগুলি" নামে 2 টি ক্ষেত্র সহ: "ফিড" (পূর্ণসংখ্যা 64 - প্রাথমিক কী), "উন্নত" (স্ট্রিং)
  2. "স্ক্র্যাচ_লাইনস" নামে একটি "রেখাযুক্ত" ভেক্টর স্তর (ছবিতে লাল রেখা দেখুন)
  3. জ্যামিতি-কম টেবিল বিশ্বব্যাপী কনট্যুর-লেবেল আকার সংরক্ষণের জন্য "সেটিংস" নামে পরিচিত (এটি একটি সহজ কাজ, কারণ কিউজিআইএস এখনই এসকিউএল কোয়েরিতে প্রজেক্ট ভেরিয়েবলগুলি ব্যবহার করতে পারে না): "ফিড" (পূর্ণসংখ্যা - প্রাথমিক কী), "ভেরিয়েবল" (স্ট্রিং), "মান" (স্ট্রিং)

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

  1. নিয়ম ভিত্তিক স্টাইলিং সহ একটি "ভার্চুয়াল_বিহীন_লবেলস" নামে একটি ভার্চুয়াল স্তর:

    • বিধি 1: "লেবেল" = 1… সাধারণ লাইন, অস্বচ্ছতা 0%
    • বিধি 2: ELSE… সরল রেখা

    • এবং বিধি 1 এর জন্য শর্তসাপেক্ষ লেবেল পাঠ্য:

      কেস WHEN লেবেল = 1 তারপর ELSE '' শেষ করুন

    • পাঠ্য বসানোর জন্য জ্যামিতি জেনারেটর সহ:

      Make_line (start_Point (point জ্যামিতি), শেষ_পয়েন্ট ($ জ্যামিতি))

    • এবং চলক পাঠ্য আকারের জন্য একটি এক্সপ্রেশন স্ট্রিং:

      বৈশিষ্ট্য (get_feature ('সেটিংস', 'ভেরিয়েবল', 'কনট্যুরবেল_সাইজ'), 'মান')

এবং সর্বশেষে তবে সর্বনিম্ন নয়, এখানে ভার্চুয়াল স্তরটির জন্য এসকিউএল কোয়েরি রয়েছে:

------------------------------------------------------------------------
-- select all contour lines that do not intersect any scratch lines
------------------------------------------------------------------------
select c.geometry,c.elev,0 as label 
from contours c,
       (select st_union(geometry) as geom from scratch_lines) as scr 
where not st_intersects(c.geometry,scr.geom)
------------------------------------------------------------------------

UNION

--------------------------------------------------------------------------------------------------------
-- create buffers around all scratch lines (bufferwidth = length(elevation_text) * txtsize/3),
-- get st_difference between contour lines and buffers
-- and set attribute "label" to 0
--------------------------------------------------------------------------------------------------------
select st_difference(c.geometry,buf.geom) as geom,c.elev,0 as label 
from 
  (select c.fid,st_union(st_buffer(scr.geometry,length(c.elev) * txtsize.value / 3)) as geom 
      from scratch_lines scr, 
              contours c, 
              (select cast(value as integer) as value from settings where variable = 'contourlabel_size') txtsize 
      where st_intersects(scr.geometry,c.geometry) 
      group by c.fid) as buf,
  contours c 
where c.fid = buf.fid
group by c.fid
--------------------------------------------------------------------------------------------------------

UNION

--------------------------------------------------------------------------------------------------------
-- create buffers around all scratch lines (bufferwidth = length(elevation_text) * txtsize/3),
-- get st_intersection between contour lines and buffers
-- and set attribute "label" to 1
--------------------------------------------------------------------------------------------------------
select st_intersection(st_buffer(scr.geometry,length(c.elev) * txtsize.value / 3),c.geometry) as geom,c.elev,1 as label 
from scratch_lines scr,
        contours c,
        (select cast(value as integer) as value from settings where variable = 'contourlabel_size') txtsize 
where st_intersects(c.geometry,scr.geometry)

এটাই.

এই সমস্ত উত্সাহী মানুষ যারা এই সম্ভব করে তোলে তাদের অনেক ধন্যবাদ!


আমাকে অবশ্যই বলতে হবে, আমি ফলাফলটি দেখে মুগ্ধ। যতক্ষণ না আমরা একটি অন্তর্নির্মিত বিকল্পটি (যদি কখনও হয়) না পাই, এটি অবশ্যই সবচেয়ে পরিষ্কার উপায় definitely ভার্চুয়াল স্তরগুলি আবার উদ্ধারে।
গ্যাব্রিয়েল সি

আমি প্রকৃতপক্ষে নিজেকে মুগ্ধ করেছিলাম। কিন্তু, এটি কি সত্যিই বড় কনট্যুর স্তরগুলি দাঁড়াতে পারে?
ক্রিসটফ

এবং এটি পরীক্ষা করার পরে আমি খুব আনন্দিত, এটি জিওপ্যাকেজে ডেটার সাথেও কাজ করে! আমি এটি স্পেশালাইটের উপর ভিত্তি করে যাচাই করতে চেয়েছিলাম। আমি যদি একাধিকবার ভোট দিতে পারতাম ...
গ্যাব্রিয়েল সি

আইএমএইচও, এটি কোনও ফাইল ফর্ম্যাট থেকে স্বতন্ত্র, কারণ কোয়েরিটি QGIS এর মধ্যে চলছে inside সুতরাং এটি এমনকি CSV এর সাথে কাজ করা উচিত।
ক্রিসটফ

দেখে মনে হচ্ছে এটি গল্পের শেষ নয়। আজ একটি গবেষণার পরে, আমি বুঝতে পেরেছিলাম যে আমরা ভার্চুয়াল স্তর এসকিউএল কোয়েরির ভিতরে কিউজিআইএস এক্সপ্রেশন ফাংশনগুলি ব্যবহার করতে পারি: gis.stackexchange.com/questions/320991/… । সুতরাং আরও অনেক কিছু আসার দরকার রয়েছে যা লেবেল মাস্কিংয়ের গতি বাড়িয়ে তুলবে (আমি স্কেল নির্ভর নির্ভর প্রশ্নগুলি বা স্থানিক সূচকগুলির আরও ভাল ব্যবহারের বিষয়ে চিন্তা করছি)।
ক্রিসটফ

1

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

পরে যুক্ত করা হয়েছে: এটি সম্ভবত এই থ্রেডটিও দেখার উপযুক্ত, দ্বিতীয় উত্তর। সম্ভবত কনট্যুর লাইনগুলি ভাঙ্গা একটি উত্তর হতে পারে, সম্ভবত বাছা স্তরটি ব্যবহার করে কনট্যুরগুলি ক্লিপ করতে ব্যবহৃত হয়?


0

ইএসআরআই ব্লগ এন্ট্রি: http://blogs.esri.com/esri/arcgis/2011/11/28/variable-depth-masking-contour-label-example/

কনট্যুর লেবেলের জন্য পরিবর্তনশীল-গভীরতার মুখোশটি তিনটি পদক্ষেপ জড়িত:

1 লেবেলগুলি থেকে টীকা তৈরি করা, মুখোশ তৈরির জন্য বৈশিষ্ট্যরেখার মুখোশ সরঞ্জামটি 2 ব্যবহার করে এবং অ্যাডভান্সড ড্রয়িং বিকল্পগুলি> মাস্কিং সেটিংসকে 3 স্তরগুলি মুখোশগুলি আটকানো হবে তা নির্দিষ্ট করে using


এটি দেখায় যে এটি কীভাবে কার্যকর করা যেতে পারে তবে এটি আসলে প্রশ্নের উত্তর দেয় না।
আন্ডার ডার্ক

0

লেবেলগুলিকে আরও নিখুঁত করতে, আমি কনট্যুর লাইনের সমান্তরালে চলমান স্ক্র্যাচ লাইনগুলিকে সম্মান করতে ভার্চুয়াল স্তরটির এসকিউএল কোয়েরি পরিবর্তন করেছি (নীচের সমাধান দেখুন):

পুরনো সংস্করণ এখানে চিত্র বর্ণনা লিখুন

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

এবং ভার্চুয়াল স্তরটির জন্য এখানে নতুন এসকিউএল রয়েছে:

------------------------------------------------------------------------
-- select all contour lines that do not intersect any scratch lines
------------------------------------------------------------------------
select c.geometry,c.elev,0 as label 
from contours c,
   (select st_union(geometry) as geom from scratch_lines) as scr 
where not st_intersects(c.geometry,scr.geom)
------------------------------------------------------------------------

UNION

--------------------------------------------------------------------------------------------------------
-- create buffers around all intersection points (bufferwidth = length(elevation_text) * txtsize/2.5),
-- get st_difference between contour lines and buffers
-- and set attribute "label" to 0
--------------------------------------------------------------------------------------------------------
select st_difference(c.geometry,buf.geom) as geom,c.elev,0 as label 
from contours c,
(select c.fid,st_union(st_buffer(st_intersection(c.geometry,scr.geometry),length(c.elev) * txtsize.value / 3)) as geom
from contours c, scratch_lines scr, (select cast(value as integer) as value from settings where variable = 'contourlabel_size') txtsize
where st_intersects(c.geometry,scr.geometry)
group by c.fid) as buf
where c.fid = buf.fid
--------------------------------------------------------------------------------------------------------

UNION

--------------------------------------------------------------------------------------------------------
-- create buffers around all intersection points (bufferwidth = length(elevation_text) * txtsize/2.5),
-- get st_intersection between contour lines and buffers
-- and set attribute "label" to 1
--------------------------------------------------------------------------------------------------------
select st_intersection(c.geometry,st_buffer(st_intersection(c.geometry,scr.geometry),length(c.elev) * txtsize.value / 3)) as geom,c.elev,1 as label 
from contours c, 
 scratch_lines scr,
 (select cast(value as integer) as value from settings where variable = 'contourlabel_size') txtsize 
where st_intersects(c.geometry,scr.geometry)

0

মূল প্রশ্নের সাথে সম্পর্কিত একটি ছোট সংযোজন।

যারা QGIS 3.10 তে আমাদের কনট্যুর লাইনগুলি সরল ও মসৃণ করতে "জ্যামিতি জেনারেটর" স্টাইলিংটি ব্যবহার করতে পারেন এই বিষয়টি সম্পর্কে অবগত নয় তাদের জন্য:

মসৃণ (সরল করুন ($ জ্যামিতি, 2), 2)

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

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