QGIS ব্যবহার করে রেখার সাথে নির্দিষ্ট দূরত্বে পয়েন্ট তৈরি করা?


20

আমি QGIS লাইন বরাবর পয়েন্ট তৈরি করতে ব্যবহার করতে চাই, তবে নির্দিষ্ট দূরত্বে। আমি SEXTANTE সরঞ্জামবাক্সে দুটি গ্রাস সরঞ্জাম পেয়েছি :

  • v.to.points
  • v.segment

আমি v.to.pPoint চেষ্টা করেছিলাম , মানচিত্রের ইউনিটগুলির মধ্যে পয়েন্টগুলির মধ্যে সর্বোচ্চ দূরত্বটি 100 এ সেট করে এবং এটি পেয়েছি :

লাইন বরাবর পয়েন্ট

কাছাকাছি দৃষ্টি

দ্বিতীয় ফটো উপরের থেকে একটি ঘনিষ্ঠ চেহারা দেখায়। ফলাফলটি আমি যা চাই তা ছিল তবে আমি কম পয়েন্ট পেতে চাই, তবে আমি সর্বোচ্চ দূরত্বটি 1000 বা 1000000 এ সেট করেছিলাম, ফলাফলটি একই ছিল।

আমি ভি.সিগমেন্ট ব্যবহার করার চেষ্টা করেছি , তবে আমার কাছে সেগমেন্ট বিধি সম্বলিত কোনও ফাইল নেই।

আন্ডারডার্ক আমাকে কিছু পরামর্শ দিয়েছিল এবং আমি একটি বিরতি দিয়ে ডেনসিফের জ্যামিতিগুলি চেষ্টা করেছিলাম । প্রথমে এটি আমাকে ইনপুট হিসাবে একইভাবে একটি পললাইন শেফফাইল দিয়েছে এবং তারপরে আমি এই পয়েন্টগুলি পাওয়ার চেষ্টা করার জন্য এক্সট্রাক্ট নোডগুলি ব্যবহার করেছি । আমি যেমন v.to.pPoint ব্যবহার করেছিলাম ফলাফলটি একই ছিল , আমি দূরত্বের ব্যবধানটি নির্ধারণ করি না কেন।

আমি কীভাবে রেখা বরাবর এবং নির্দিষ্ট দূরত্বে পয়েন্ট তৈরি করতে পারি?


4
এটি একবার দেখুন, আসুন আমাদের নাথানডট.net
উইলি

আমাকে এই সহায়ক পরামর্শ দেওয়ার জন্য ধন্যবাদ! আমি যদি আপনার স্ক্রিপ্টটি ব্যবহার করতে চাই তবে আমার কি পাইথন ইনস্টল করতে হবে? বা নতুন সংস্করণ কিউজিআইএস ২.০ এ, ইতিমধ্যে এটির মধ্যে এই ফাংশনটি তৈরি করা আছে?
হাইঞ্জ

5
কিউজিআইএন ২.০ এ এখন এর জন্য একটি প্লাগইন রয়েছে, যার নাম কিউচেইনেজ। প্লাগইনটি আনুন এবং এটি ইনস্টল করুন।
উইলি

নোট করুন যে "Sextante" টুলবক্সকে কিউজিআইএস ২.২.০+ তে "প্রসেসিং" বলা হয় এবং একটি ইন্টারভেল প্রদত্ত ডেনসাইফ জ্যামিতিগুলি প্রসেসিংটুলবক্স / কিউজিআইজিওইলগোরিদিমস / ভেক্টর জিমিট্রিটুলস মেনু এর অধীনে রয়েছে। নোট করুন যে এটি জ্যামিতিটিকে অস্বীকার করে এবং শীর্ষবিন্দুগুলি সরিয়ে দেয় না যে এর চেয়ে কাছাকাছি মনোনীত ব্যবধান।
ডেভ এক্স

এটি আমার জন্য কাজ করেছে: plugins.qgis.org/plugins/LoconPPoint
টেক্টোপোদা

উত্তর:


20

পাইথন কনসোলে:

1) crea_mem_layer.py এ একটি মেমরি স্তর শ্রেণি (সম্পূর্ণ শ্রেণি (গুণাবলী ছাড়াই) তৈরি করুন )

class Create_vlayer(object):
    '''creation of a virtual layer''' 
     def __init__(self,nom,type):
         self.type=type
         self.name = nom
         self.layer =  QgsVectorLayer(self.type, self.name , "memory")
         self.pr =self.layer.dataProvider() 
     def create_point(self,geometry):
         # add point to the layer
         self.seg = QgsFeature()
         self.seg.setGeometry(QgsGeometry.fromPoint(geometry))
         self.pr.addFeatures([self.seg])
         self.layer.updateExtents()
     @property
     def display_layer(self):
         #end of layer and display layer 
         QgsMapLayerRegistry.instance().addMapLayers([self.couche])

2) ভেক্টর বীজগণিত ফাংশন ( algèbre_vect_PyQGIS.py থেকে )

import math 
def mag(point):
    # magnitude of a vector
    return math.sqrt(point.x()**2 + point.y()**2)
def diff(point2, point1):
    # substraction betwen two vector
    return QgsPoint(point2.x()-point1.x(), point2.y() - point1.y())
def length(point1,point2):
    # with PyQGIS: sqrDist
    return math.sqrt(point1.sqrDist(point2))

3) দিকের কোসাইন

def dircos(point):
    cosa = point.x() / mag(point)
    cosb = point.y()/ mag(point)
    return cosa,cosb

4) প্রক্রিয়া লাইন বা লাইন বিভাগ

def pairs(list):
    # list pairs iteration 
    for i in range(1, len(list)):
    yield list[i-1], list[i]

layer = qgis.utils.iface.activeLayer()
# interval between points
interval = 5 m
# create virtual layer
gen_pt  = Create_vlayer("mid5", "Point")

for elem in layer():
    line = elem.geometry()
    for seg_start, seg_end in pairs(line.asPolyline()):
       line_start = QgsPoint(seg_start)
       line_end = QgsPoint(seg_end)
       # mid point = vector coordinates [x2-x1,y2-y1]
       pointm =diff(line_end, line_start)
       # direction cosines of the segment
       cosa,cosb = dircos(pointm)
       # length of the segment
       lg = length(line_end, line_start)
       # generate and add points to the virtual layer 
       for i in range(interval,lg,interval):
           gen_pt.create_point(QgsPoint(line_start.x()  + (i * cosa), line_start.y() + (i*cosb)))

# display layer
gen_pt.display_layer

ফলাফল

পললাইন, শেপলি বা পাইকিউজিআইএস 2 এর সাথে দিকনির্দেশিত কোসাইনের সাথে সামঞ্জস্যপূর্ণ পয়েন্ট

পলিলাইনসুষমvector_algebra

তারপরে কেবল বিরতি সামঞ্জস্য করুন


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

আপনি স্ক্রিপ্টটি পুরোপুরি মানিয়ে নিতে পারেন।
জিন

17

এখন কিউচেইনেজ নামে একটি প্লাগইন রয়েছে যা আপনি যা চান ঠিক তা করে। আপনি একটি বিরতি দূরত্ব নির্দিষ্ট করেন এবং প্লাগইন নির্দিষ্ট ব্যবধানে আপনার লাইন বরাবর পয়েন্ট তৈরি করে।


* মনে রাখবেন এটি আপনার লাইন নোডগুলি ক্যাপচার করবে না, সুতরাং আপনার যদি তাদের প্রয়োজন হয় তবে আপনাকে জ্যামিতি সরঞ্জাম - নোডগুলি বের করতে এবং আপনার শৃঙ্খলা বিন্দুতে সংযোজন করতে হবে।
জেসন

1
জিআইএস এসই তে আপনাকে স্বাগতম! আমি মনে করি আপনি এখানে যে মন্তব্য হিসাবে মন্তব্য করেছেন তা নীচের সম্পাদনা বোতামটি ব্যবহার করে আপনার প্রকৃত উত্তরের সাথে আরও ভালভাবে সংযুক্ত করা যাবে। আপনি এটি অনুলিপি / আটকানো এবং তার পাশের সামান্য ক্রসটিতে ক্লিক করে আপনার মন্তব্য মুছতে পারেন।
পলিজিও

11

আমি একটি স্ক্রিপ্ট লিখেছি যা একটি নির্দিষ্ট দূরত্ব গ্রহণ করার জন্য Sextante Densify জ্যামিতি সরঞ্জাম পরিবর্তন করে। একে অন্তর প্রদত্ত ডেনসাইফ জ্যামিতি বলে ।

ডেনসিফাই চালানোর পরে, আপনি এক্সট্র্যাক্ট নোডস সরঞ্জামটি ব্যবহার করে পয়েন্টগুলি বের করতে পারেন ।

আপনি এটি গিথুব থেকে পেতে পারেন এবং ইনস্টল করার নির্দেশাবলী আমার ব্লগে রয়েছে

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


এটি উপস্থিত হয় Sextante ইনস্টল (QGIS 2.18.7) ছাড়াই এই সরঞ্জামটি এখন QGIS এ উপলব্ধ। আমি এটিকে মেনুতে দেখিনি, তবে প্রসেসিং টুলবক্সে অনুসন্ধানের সময় এটি একটি QGIS geoalgorithm হিসাবে পেয়েছি।
ন্যাট ওয়ানার

0

আপনি যদি পাইথন স্ক্রিপ্টগুলি নিয়ে ঘোড়া না চান তবে আপনি কেবল "লাইন থেকে প্রোফাইল" প্লাগইন ইনস্টল করতে এবং ব্যবহার করতে পারেন এবং রাস্টার মান কলামটি উপেক্ষা / মুছতে পারেন। শৃঙ্খলাটি আপনি যা স্যাম্পলিং অন্তর হতে হবে সেট করে।


কিউআইজিআইএস ২.২.০-তে আমি একটি "প্রোফাইল সরঞ্জাম", "কিউপ্রোফ" এবং "ভোগিস-প্রোফিলটুল" দেখতে পাই, তবে "প্রোফাইল থেকে লাইন" সরঞ্জামটি নয়।
ডেভ এক্স

0

এটি স্থিতিশীল রিলিজে রয়েছে কিনা তা নিশ্চিত নয় তবে জিওলগোরিদিমস>> ভেক্টরের অধীনে 1.9 আলফার উপরের সিক্সেন্টেটি টুলবক্সে> ভেক্টরটি "পয়েন্টগুলিতে রূপান্তর করুন" বিকল্প। একটি ট্রিট কাজ করে, দুর্দান্ত যদিও এটি লাইন বরাবর দূরত্বের জন্য একটি ক্ষেত্র যুক্ত করে।

আকর্ষণীয় এটি যদিও আমার ভেক্টর স্তর থেকে NAME ফিল্ড যুক্ত করেছে।

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


0

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

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