yaw/pitch/roll与Omega/Phi/Kappa的关系
phi, omega, kappa是希腊字母φ、ω、κ的英文读音写法;而pitch,roll, yaw的英文含义为俯仰,横滚,航偏。
在摄影测量学中,外业航飞获得的pos数据中三个外方位角元素分别代表的意思如下:
Pitch(俯仰角),绕着X轴旋转,对应角元素Omega
Roll(横滚角),绕着Y轴旋转,对应角元素Phi
Yaw(航偏角),绕着Z轴旋转,对应角元素Kappa
其中的yaw/pitch/roll是相对于无人机本身来说的,以无人机为原点,机头方向上下俯仰,机头左右偏航,机身翻滚为Roll。
而Omega,Phi,Kappa为GPS/INS给出的大地测量值。相当于对无人机进行了UTM投影。两者对应关系就是上面的。
从OpenStreetMap下载大范围数据,并将gpkg转换为shp
1.打开OpenStreetMap找到相应的地图范围,点击‘导出’–‘手动选择不同的区域’–‘Overpass API’这样三步就可以下载足够的范围,但下载的是gpkg文件。该文件可以使用开源的QGIS软件打开。QGIS是开源的,直接百度就可以下载安装很简单。
下载好是一个map文件。可以直接拖入Qgis打开。拖入会出现如下图,直接全选打开就行。
这样就可以看到地图已经加载了,包括道路,兴趣点,建筑等等。
接下来,我们只保留建筑。右击图层,打开Export–Save Feature as。在对话框中输入保留的名称。默认保留路径在安装路径的bin文件中或者自定义位置保存,自定义不行就用默认。这是已经生成gpkg文件了。
然后使用代码直接将gpkg转化为shp文件,代码使用了osgeo库,可以自行处理,直接上代码:
from osgeo import ogr
source = ogr.Open('F:/bathdata/Dortmenddata/dada/buildings.gpkg',update=False)#就是gpkg文件的本地路径
drv = ogr.GetDriverByName( 'ESRI Shapefile' )
for i in source:
LayerName = i.GetName()
inlyr = source.GetLayer( LayerName )
outds = drv.CreateDataSource( 'F:/bathdata/Dortmenddata/dada/' + LayerName + '.shp')#保存文件的路径
outlyr = outds.CopyLayer(inlyr,LayerName)
del inlyr,outlyr,outds
这样就直接可以得到shp文件了。
之后就是ArcGIS随便你咋玩了。上一个最后的建筑轮廓图层。
矩阵的翻转函数np.flip()
1.函数形式:numpy.flip(m, axis=None)
2.作用:沿给定轴的顺序颠倒数组中元素,数组的形状被保留,但是元素被重新排序。
3.参数:m–输入的数组
axis–None或者int(整数)或者tuple(整数的元组)。作用就是用来翻转的轴。默认值axis=None将翻转输入数组的所有轴。如果轴为负,则从最后一个轴数到第一个轴。如果axis是一个整数元组,则在该元组中指定的所有轴上执行翻转。
4.结果:返回一个已经按照指定轴进行翻转的数组。
5.实际应用:
垂直翻转数组,即上下翻转(axis=0)。
水平翻转数组,即左右翻转(axis=1)。