आपको एक प्लगइन की आवश्यकता नहीं है। सब कुछ PyQGIS के वर्ग QgsPoint में है
यदि आप Python कंसोल में अंतर्निहित फ़ंक्शन dir () के साथ 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']
आप देखते हैं देख सकते हैं दिगंश और sqrDist कार्य करता है और कुछ प्रयास के बाद:
- 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) एज़िमथ पॉइंट आई टू पॉइंट आई + 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
[...]
के बाद, इन मानों को विशेषता तालिका में जोड़ना बहुत मुश्किल नहीं है।
मैं matplotlib और स्क्रिप्ट रनर प्लगइन के साथ वंशावली (भूविज्ञान) का विश्लेषण करने के लिए इस तकनीक का उपयोग करता हूं