আপনার একটি প্লাগইন লাগবে না। পাইকিজিআইএস-এর ক্লাস কিউজপয়েন্টে সমস্ত কিছুই
যদি আপনি পাইথন কনসোলে পাইথন অন্তর্নির্মিত ফাংশন ডির () দিয়ে QGIS পয়েন্ট শ্রেণীর বিষয়বস্তু পরীক্ষা করেন।
dir(point])
['__class__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__'
, '__getitem__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__module__',
'__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__',
'__str__', '__subclasshook__', '__weakref__', 'azimuth',
'multiply', 'set', 'setX', 'setY', 'sqrDist', 'sqrDistToSegment', 'toDegreesMinutesSeconds', 'toString', 'wellKnownText', 'x', 'y']
আপনি দেখতে পাচ্ছেন আজিমুথ এবং এসকিআরডিস্ট ফাংশন রয়েছে এবং কয়েকটি চেষ্টা করার পরে:
- xy[0].azimuth(xy[1]) or xy[1].azimuth(xy[0]) gives the azimuth direction between two points(in degrees, +/- 180°)
- xy[0].sqrDist(xy[1]) give the square distance between two points (in the unit of the project)
সমস্যাটি
পাইথন কনসোলে তাই
def select_all(layer):
layer.select([])
layer.setSelectedFeatures([obj.id() for obj in layer])
myline = qgis.utils.iface.activeLayer()
select_all(myline)
for elem in myline.selectedFeatures():
xy = elem.geometry().asPolyline()
এখন xy লাইনের সমস্ত নোড (পয়েন্ট) ধারণ করে
# first point
print "x=%2d y=%2d" % (xy[0].x(),xy[0].y())
x=112935 y=117784
# and others...
লাইনের সমস্ত নোড পয়েন্ট ব্যবহার করে:
1) আজিমুথ পয়েন্ট i to পয়েন্ট i + 1 (+/- 180 °) (একটি লাইনের নোড)
for i in range(len(xy)-1):
print "x=%2d y=%2d azim=%6.1f azim2=%6.1f" % (xy[i].x(), xy[i].y(), xy[i].azimuth(xy[i+1]), xy[i+1].azimuth(xy[i]))
x=112935 y=117784 azim= 168.4 azim2= -11.6
x=113032 y=117312 azim=-167.5 azim2= 12.5
x=112926 y=116835 azim= 177.3 azim2= -2.7
x=112943 y=116472 azim= 145.1 azim2= -34.9
[...]
2) পয়েন্ট i এবং পয়েন্ট i + 1 এর মধ্যে ইউক্লিডিয়ান দূরত্ব
for i in range(len(xy)-1):
print "x=%2d y=%2d dist=%6.1f" % (xy[i].x(), xy[i].y(), xy[i].sqrDist(xy[i+1]))
x=112935 y=117784 dist=232533.9
x=113032 y=117311 dist=238243.6
x=112926 y=116835 dist=131839.8
x=112943 y=116472 dist=209268.1
[...]
পরে, বৈশিষ্ট্য সারণীতে এই মানগুলি যুক্ত করা খুব কঠিন নয়।
আমি ম্যাটপ্লটলিব এবং স্ক্রিপ্ট রানার প্লাগইন সহ লাইনামেন্টগুলি (ভূতত্ত্ব) বিশ্লেষণ করতে এই কৌশলটি ব্যবহার করি