本文整理汇总了Python中qgis.core.QgsDistanceArea.bearing方法的典型用法代码示例。如果您正苦于以下问题:Python QgsDistanceArea.bearing方法的具体用法?Python QgsDistanceArea.bearing怎么用?Python QgsDistanceArea.bearing使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsDistanceArea
的用法示例。
在下文中一共展示了QgsDistanceArea.bearing方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: by_seconds
# 需要导入模块: from qgis.core import QgsDistanceArea [as 别名]
# 或者: from qgis.core.QgsDistanceArea import bearing [as 别名]
def by_seconds(self, seconds):
"""move by variable distance"""
def iterations(distance,h):
FIe1=0
LAMe1=0
FI=100
LAM=100
# iterations
while fabs(FI-FIe1)>0.0000000001 and fabs(LAM -LAMe1)>0.0000000001:
FI=FIe1
LAM=LAMe1
for i in range(0,int(ceil(distance/h))):
kfi=[]
klam=[]
kazi=[]
kfi.append(cos(azi[i])/(a*(1-(e2))/(pow((sqrt(1-(e2)*pow(sin(fi[i]),2))),3))))
klam.append(sin(azi[i])/((a/(sqrt(1-(e2)*pow(sin(fi[i]),2))))*cos(fi[i])))
kazi.append(sin(azi[i])*tan(fi[i])/(a/(sqrt(1-(e2)*pow(sin(fi[i]),2)))))
for j in range(1,3):
kfi.append(cos(azi[i]+kazi[j-1]*h/2)/(a*(1-(e2))/(pow(sqrt(1-(e2)*pow(sin(fi[i]+kfi[j-1]*h/2),2)),3))))
klam.append(sin(azi[i]+kazi[j-1]*h/2)/((a/(sqrt(1-(e2)*pow(sin(fi[i]+kfi[j-1]*h/2),2))))*cos(fi[i]+kfi[j-1]*h/2)))
kazi.append(sin(azi[i]+kazi[j-1]*h/2)*tan(fi[i]+kfi[j-1]*h/2)/(a/(sqrt(1-(e2)*pow(sin(fi[i]+kfi[j-1]*h/2),2)))))
kfi.append(cos(azi[i]+kazi[2]*h)/(a*(1-(e2))/(pow(sqrt(1-(e2)*pow(sin(fi[i]+kfi[2]*h),2)),3))))
klam.append(sin(azi[i]+kazi[2]*h)/((a/(sqrt(1-(e2)*pow(sin(fi[i]+kfi[2]*h),2))))*cos(fi[i]+kfi[2]*h)))
kazi.append(sin(azi[i]+kazi[2]*h)*tan(fi[i]+kfi[2]*h)/(a/(sqrt(1-(e2)*pow(sin(fi[i]+kfi[2]*h),2)))))
fi.append(fi[i]+(h/6.0)*(kfi[0]+2*kfi[1]+2*kfi[2]+kfi[3]))
lam.append(lam[i]+(h/6.0)*(klam[0]+2*klam[1]+2*klam[2]+klam[3]))
azi.append(azi[i]+(h/6.0)*(kazi[0]+2*kazi[1]+2*kazi[2]+kazi[3]))
FIe1=fi[i+1]
LAMe1=lam[i+1]
h=h/2
fi[1:]=[]
lam[1:]=[]
azi[1:]=[]
return FIe1,LAMe1
self._check()
header=self.inputfile.readline()
beforeLat=header.split('Lat_deg')
numberOfLatColumn=beforeLat[0].split(',')
beforeLong=header.split('Lon_deg')
numberOfLonColumn=beforeLong[0].split(',')
beforeSec=header.split('Gtm_sec')
numberOfSecColumn=beforeSec[0].split(',')
self.outputfile.write(header)
d = QgsDistanceArea()
d.setEllipsoid('WGS84')
d.setEllipsoidalMode(True)
d.ellipsoid()
a = 6378137.0 # WGS84 ellipsoid parametres
e2 = 0.081819190842622
line1=self.inputfile.readline()
if seconds>0:
linePos=self.inputfile.tell()
line1=line1.split(',')
while line1:
self.inputfile.seek(linePos)
line2=self.inputfile.readline()
linePos=self.inputfile.tell()
moveTime=1*seconds
outline=1*line1
inline=line2.split(',')
while moveTime>0: # for case of more than 1 second
if line2:
line2=line2.split(',')
p1=QgsPoint(float(line1[len(numberOfLonColumn)-1]),float(line1[len(numberOfLatColumn)-1]))
p2=QgsPoint(float(line2[len(numberOfLonColumn)-1]),float(line2[len(numberOfLatColumn)-1]))
if p1!=p2:
aziA = d.bearing(p1,p2)
l = d.computeDistanceBearing(p1,p2)[0]
if moveTime>(float(line2[len(numberOfSecColumn)-1])-float(line1[len(numberOfSecColumn)-1])):
moveTime=moveTime-(float(line2[len(numberOfSecColumn)-1])-float(line1[len(numberOfSecColumn)-1]))
elif moveTime!=0 and moveTime!=(float(line2[len(numberOfSecColumn)-1])-float(line1[len(numberOfSecColumn)-1])): #first geodetic problem
distance=l/(float(line2[len(numberOfSecColumn)-1])-float(line1[len(numberOfSecColumn)-1]))*moveTime
h=distance/2.0
fi=[float(line1[len(numberOfLatColumn)-1])*pi/180]
lam=[float(line1[len(numberOfLonColumn)-1])*pi/180]
azi=[aziA]
FIe1,LAMe1 = iterations(distance,h)
moveTime=0
else:
FIe1=float(line2[len(numberOfLatColumn)-1])*pi/180
LAMe1=float(line2[len(numberOfLonColumn)-1])*pi/180
moveTime=0
break
else:
if moveTime>(float(line2[len(numberOfSecColumn)-1])-float(line1[len(numberOfSecColumn)-1])):
#.........这里部分代码省略.........
示例2: GuidanceDock
# 需要导入模块: from qgis.core import QgsDistanceArea [as 别名]
# 或者: from qgis.core.QgsDistanceArea import bearing [as 别名]
#.........这里部分代码省略.........
self.source = None
self.resetSource()
@pyqtSlot(str, name='on_comboBoxTarget_currentIndexChanged')
def targetChanged(self, mob):
if self.target is not None:
try:
self.target.newPosition.disconnect(self.onNewTargetPosition)
self.target.newAttitude.disconnect(self.onNewTargetAttitude)
except TypeError:
pass
try:
self.target = self.mobiles[mob]
self.target.newPosition.connect(self.onNewTargetPosition)
self.target.newAttitude.connect(self.onNewTargetAttitude)
s = QSettings()
s.setValue('PosiView/Guidance/Target', mob)
except KeyError:
self.target = None
self.resetTarget()
@pyqtSlot(float, QgsPoint, float, float)
def onNewSourcePosition(self, fix, pos, depth, altitude):
if [pos, depth] != self.srcPos:
lon, lat = self.posToStr(pos)
self.labelSourceLat.setText(lat)
self.labelSourceLon.setText(lon)
self.labelSourceDepth.setText(str(depth))
if self.trgPos[0] is not None:
self.labelVertDistance.setText(str(self.trgPos[1] - depth))
dist = self.distArea.measureLine(self.trgPos[0], pos)
self.labelDistance.setText('{:.1f}'.format(dist))
if dist != 0:
bearing = self.distArea.bearing(pos, self.trgPos[0]) * 180 / pi
if bearing < 0:
bearing += 360
else:
bearing = 0.0
self.labelDirection.setText('{:.1f}'.format(bearing))
self.srcPos = [pos, depth]
@pyqtSlot(float, QgsPoint, float, float)
def onNewTargetPosition(self, fix, pos, depth, altitude):
if [pos, depth] != self.trgPos:
lon, lat = self.posToStr(pos)
self.labelTargetLat.setText(lat)
self.labelTargetLon.setText(lon)
self.labelTargetDepth.setText(str(depth))
if self.srcPos[0] is not None:
self.labelVertDistance.setText(str(depth - self.srcPos[1]))
dist = self.distArea.measureLine(pos, self.srcPos[0])
self.labelDistance.setText('{:.1f}'.format(dist))
if dist != 0:
bearing = self.distArea.bearing(self.srcPos[0], pos) * 180 / pi
if bearing < 0:
bearing += 360
else:
bearing = 0.0
self.labelDirection.setText('{:.1f}'.format(bearing))
self.trgPos = [pos, depth]
@pyqtSlot(float, float, float)
def onNewTargetAttitude(self, heading, pitch, roll):
if self.trgHeading != heading:
self.trgHeading = heading
self.labelTargetHeading.setText(str(heading))