কিউজিআইএস এ এলোমেলো পয়েন্ট বহুভুজ পূরণ প্রতীক তৈরি?


9

কিউজিআইএস ২.১18.৩ ব্যবহার করে, আমি আমার বহুভুজ প্রতীকায় একটি র্যান্ডম পয়েন্ট প্যাটার্ন প্রয়োগ করতে চাই। ডিফল্ট স্টাইল ম্যানেজারের নিয়মিত-ব্যবধানযুক্ত পয়েন্ট প্যাটার্ন থাকে, যাকে বলা হয় সিমেট্রি-25-50 কে (নীচের চিত্রটি দেখুন)। এটি একটি ভাল সূচনা পয়েন্ট, তবে অবশ্যই এলোমেলো নয়।

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

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

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

আমার যা পুনরায় তৈরি করতে হবে তা হ'ল ইএসআরআই আর্কম্যাপ র‌্যান্ডম পয়েন্ট প্রতীক, এখানে দেখানো হয়েছে:

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


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

উত্তর:


12

আপনি নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করে এলোমেলো পয়েন্ট প্রতীক যোগ করতে পারেন:

  1. '+' বোতামটি ব্যবহার করে নতুন প্রতীক স্তর যুক্ত করুন:

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

  1. প্রতীক স্তর স্তরটি 'পয়েন্ট প্যাটার্ন ভরাট' এ পরিবর্তন করুন
  2. বাম পাশের গাছটিতে 'পয়েন্ট প্যাটার্ন ফিল' পূরণ করুন
  3. অনুভূমিক এবং উল্লম্ব দূরত্বগুলি যুক্তিসঙ্গত মানগুলিতে পরিবর্তন করুন। এই উদাহরণে, আমি উভয় দূরত্বের জন্য একই মানটি বেছে নিয়েছি2.0
  4. অনুভূমিক স্থানচ্যুতি এবং উল্লম্ব স্থানচ্যুতিতে, নিম্নলিখিত ফাংশনগুলি ব্যবহার করুন:

    অনুভূমিক স্থানচ্যুতি জন্য 5.1:

    randf(3,5) 

    5.2 উল্লম্ব স্থানচ্যুতি জন্য

    randf(2,4) 
  5. বিন্দু স্তরটি নকল করুন এবং অনুভূমিক এবং উল্লম্ব দূরত্বগুলি যথাক্রমে 6 এবং 3 এ পরিবর্তন করুন। অনুভূমিক স্থানচ্যুতি এবং উল্লম্ব স্থানচ্যুতিতে, নিম্নলিখিত ফাংশনগুলি ব্যবহার করুন:

    অনুভূমিক স্থানচ্যুতির জন্য .1.১

    randf(0,1) 

    6.2 উল্লম্ব স্থানচ্যুতি জন্য

    randf(1,2) 
  6. আপনার প্রতীক আকার 2 এ হ্রাস করতে হবে Pixels

আপনি নিম্নলিখিত ছবিতে আউটপুট দেখতে পারেন:

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

সুরকারে কিংবদন্তিটি দেখতে পাবেন:

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


2
এটি অন্তর্নির্মিত আর্ক প্রতীকের এলোমেলোভাবে যথেষ্ট নকল করে না তবে এটি একটি দুর্দান্ত সমাধান। এলোমেলোতা বাড়াতে, অনুভূমিক এবং উল্লম্ব দূরত্বে র‌্যান্ডফ () ফাংশনটি ব্যবহার করুন এবং বেশ কয়েকবার ভরাটটিও নকল করুন।
এড রোলাসন

1
@ এডরোলাসন আপনার মন্তব্যের জন্য ধন্যবাদ। র্যান্ডফ () ফাংশন সহ বেশ কয়েকটি স্তর যুক্ত করাও ভাল ধারণা।
আহমাদব

1
@ আহমাদব মজাদার সমাধান, বুকমার্ক!
এমগ্রি

2

অন্য কৌশলটিতে ইনকস্কেপ ব্যবহার করে একটি এসভিজি তৈরি করা এবং কিউজিআইএসে একটি এসভিজি ফিল স্তর ব্যবহার করা অন্তর্ভুক্ত।

এটি প্রতীকতত্ত্ব (যেমন আপনি এলোমেলোভাবে ছড়িয়ে ছিটিয়ে থাকা গাছগুলি আঁকতে পারেন কেবল পয়েন্ট নয়) এবং ব্যবধানের উপর আরও নিয়ন্ত্রণের অনুমতি দেয়

  • ইনস্কেপে, একটি বৃত্ত / গাছ আঁকুন এবং অবজেক্টটি নির্বাচন করুন
  • সম্পাদনা> ক্লোন> টাইলড ক্লোনস
  • 5 x 5 বা 10x10 টাইলড ক্লোন তৈরি করুন (বলুন)। গ্রিডের আকার ছোট রাখাই ভাল ধারণা, কারণ আপনার যদি খুব বেশি চিহ্ন থাকে তবে কিউজিআইএস লড়াই করবে।
  • শিফট ট্যাবে, এর মতো কিছু চয়ন করুন ... ডিফল্ট সেটিংস ব্যবহার করুন ঠিক আছে, তবে 'জিটার' যুক্ত করতে র্যান্ডমাইজ সেটিংস পরিবর্তন করুন।

সেটিংস সহ পরীক্ষা করুন Remove, ফলাফলটি ভাল না হলে আপনি সর্বদা ক্লিক করতে পারেন।

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

  • ক্লিক করুন Create
  • ব্যবহার করে সমস্ত টাইল্ড ক্লোন নির্বাচন করুন CtrlA
  • CtrlShiftD নথির বৈশিষ্ট্য আনতে
  • নির্বাচন করুন অঙ্কন বা নির্বাচনে পুনরায় মাপ পৃষ্ঠা
  • একটি এসভিজি হিসাবে সংরক্ষণ করুন, তবে নিশ্চিত করুন যে আপনি সাধারণ এসভিজি ফর্ম্যাটটি ব্যবহার করছেন
  • এখন এসভিজি প্রতীক পূরণ হিসাবে কিউজিআইএস-এ আনুন।

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

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


0

সবেমাত্র অনলাইনে স্ক্রিপ্ট পাওয়া গেছে যা কিছু সামঞ্জস্যের সাথে কিউগিস 3.5.x এর সাথে কাজ করে

আমি মূল পোস্টটি হারিয়েছি তাই লেখককে ক্রেডিট করতে পারি না।

আপনি যা করেন তা হ'ল:

  • ভরাট স্তর তৈরি করুন এটি "জ্যামিতি জেনারেটর" এ পরিবর্তন করুন
  • "জ্যামিতির ধরণ" পয়েন্টে পরিবর্তন করুন
  • অভিব্যক্তির জন্য পাঠ্যক্ষেত্রের ডানদিকে "সিগমা" বোতামটি ক্লিক করুন
  • "এক্সপ্রেশন ডায়লগ" উইন্ডোতে "ফাংশন সম্পাদক" এ ট্যাব পরিবর্তন করুন এবং নীচের কোডটি এখানে পেস্ট করুন
  • এখন "এক্সপ্রেশন ডায়লগ" এ ফাংশন কলটি এমনভাবে পেস্ট করুন: ফিলিগ্রিড (0.001,0.001,1) (প্রথম 2 টি মান এলোমেলো আকারের)
  • পরিবর্তনগুলি এবং আপডেট দেখুন সংরক্ষণ করুন।
  • অসাধারণ র্যান্ডম পয়েন্ট রয়েছে

লিপিটির মূল লেখককে ধন্যবাদ।

from qgis.core import *
from qgis.gui import *
import math
import random

"""
Define a grid based on the interval and the bounding box of
the feature. Grid will minimally cover the feature and be centre aligned

Create a multi-point geometry at the grid intersections where
the grid is enclosed by the feature - i.e. apply a clipping mask

Random value determines amount of randomness in X/Y within its
grid square a particular feature is allowed to have
"""
@qgsfunction(args='auto', group='Custom')
def fillGrid(xInterval, yInterval, rand, feature, parent):
  box = feature.geometry().boundingBox()

  #Create a grid that minimally covers the boundary
  #using the supplied intervals and centre it
  countX = math.ceil(box.width() / xInterval)
  countY = math.ceil(box.height() / yInterval)

  #Align the grid
  gridX = countX * xInterval
  gridY = countY * yInterval
  dX= gridX - box.width()
  dY= gridY - box.height()
  xMin = box.xMinimum() - (dX/2)
  yMin = box.yMinimum() - (dY/2)

  points = []
  #+1 to draw a symbol on the n+1th grid element
  for xOff in range(countX+1):
    for yOff in range(countY+1):

      ptX = xMin + xOff*(xInterval) + rand * random.uniform(0,xInterval)
      ptY = yMin + yOff*(yInterval) + rand * random.uniform(0,xInterval)

      pt = QgsPointXY(ptX,ptY)
      point = QgsGeometry.fromPointXY(pt)
      if feature.geometry().contains(point):
        points.append(pt)

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