I have an input POINT-layer with lots of features in it. What I am trying to do is to calculate the azimuth for two features. And the way I am doing this is the following:

geomFrom = (...).geometry()     # this variable holds the geometry of the first point (the starting point of the imaginary line which connects both points.)
geomTo = (...).geometry()       # this variable holds the geometry of the second point (the end point of the imaginary line which connects both points.)

# Now I am trying to get the Point out of the geometry for calculating the azimuth. 
# the method asPoint() causes the Minidump in C! 
# Although I store it in a separate variable!!
fromPoint = geomFrom.asPoint()
toPoint = geomTo.asPoint()

# If the asPoint() method wouldn't cause the minidump crash, I would now calculate the azimuth like this:
azi = fromPoint.azimuth(toPoint)

In order to solve the problem, one could probably say: Upgrade to QGIS 3!

But I have to solve this in QGIS 2.18. Otherwise, I will have to rewrite the whole algorithm in QGIS 3 again as the python scripting has changed fundamentally.

Therefore, I am looking for a workaround. How can I calculate the azimuth without calling the asPoint() method? What came in my mind: Is there a way to get the x and y-coordinates of a geometry variable? Maybe I can then create a new point variable like this:

from_X = geomFrom.getXCoord()
from_Y = geomFrom.getYCoord()
fromPoint = Point(from_X, from_Y)

to_X = geomTo.getXCoord()
to_Y = geomTo.getYCoord()
toPoint = Point(to_X, to_Y)

azi = fromPoint.azimuth(toPoint)

Any suggestions?

  • 1
    use the debugger to find out why you get a crash - something is wrong with the value of geomFrom most likely – Ian Turton Feb 6 '19 at 8:19
  • @IanTurton How do I use the debugger? I am currently "debugging" using print messages and the dump files (which do not clarify what the problem is exactly). so what do you mean by debugger? :) – applebrown Feb 6 '19 at 9:59