闵行区网站建设公司,漳州室内设计公司排名,重庆网站制作那家好,h5自适应网站建设若该文为原创文章#xff0c;转载请注明原文出处 本文章博客地址#xff1a;https://hpzwl.blog.csdn.net/article/details/131931309
红胖子网络科技博文大全#xff1a;开发技术集合#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…若该文为原创文章转载请注明原文出处 本文章博客地址https://hpzwl.blog.csdn.net/article/details/131931309
红胖子网络科技博文大全开发技术集合包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等持续更新中…
Qt开发专栏三方库开发技术
上一篇没有了 下一篇敬请期待… 前言 麒麟系统上做全球北斗定位终端开发调试工具要做一个windows版本方便校对北斗GPS发过来的是大地坐标应用需要的是经纬度坐标所以需要转换可以使用公式转换但是之前涉及到了山He智能一个项目使用WG最终选择了GDAL库进行转换。
注意 如果读者不强制要求mingw32建议不要使用mingw32版本的dgal。编译过程非常曲折。 相关博客 《麒麟系统开发笔记十二在国产麒麟系统上编译GDAL库、搭建基础开发环境和基础Demo》 《QtGDAL开发笔记一在windows系统mingw32编译GDAL库、搭建开发环境和基础Demo》 大地坐标简介
概述 大地坐标Geodetic coordinate是大地测量中以参考椭球面为基准面的坐标地面点P的位置用大地经度L、大地纬度B和大地高H表示。
原理 当点在参考椭球面上时仅用大地经度和大地纬度表示。大地经度是通过该点的大地子午面与起始大地子午面通过格林尼治天文台的子午面之间的夹角。规定以起始子午面起算向东由0°至180°称为东经向西由0°至180°称为西经。大地纬度是通过该点的法线与赤道面的夹角规定由赤道面起算由赤道面向北从0°至90°称为北纬向南从0°到90°称为南纬。大地高是地面点沿法线到参考椭球面的距离。
北京54坐标系BJZ54 北京54坐标系(BJZ54)是指北京54坐标系为参心大地坐标系大地上的一点可用经度L54、纬度M54和大地高H54定位它是以克拉索夫斯基椭球为基础经局部平差后产生的坐标系。
长半轴a 6378245m短半轴b 6356863.0188m第一偏心率平方e2 0.006693421622扁率α 1/298.3
世界大地坐标系统WGS-84 WGS-84坐标系是世界大地坐标系统其坐标原点在地心采用WGS-84椭球1984世界大地坐标系。 WGS-84坐标系是美国国防部研制确定的大地坐标系是一种协议地球坐标系。 WGS-84坐标系的定义是原点是地球的质心空间直角坐标系的Z轴指向BIH1984.0定义的地极CTP方向即国际协议原点CIO它由IAU和IUGG共同推荐。X轴指向BIH定义的零度子午面和CTP赤道的交点Y轴和ZX轴构成右手坐标系。 WGS-84椭球采用国际大地测量与地球物理联合会第17届大会测量常数推荐值采用的两个常用基本几何参数
长半轴a 6378137m短半轴b 6356752.3142m第一偏心率平方e2 0.00669437999013扁率 α 1/298.257223563
国家大地坐标系CGCS2000 2000国家大地坐标系是我国当前最新的国家大地坐标系英文名称为China Geodetic Coordinate System 2000英文缩写为CGCS2000。 2000国家大地坐标系的原点为包括海洋和大气的整个地球的质量中心2000国家大地坐标系的Z轴由原点指向历元2000.0的地球参考极的方向该历元的指向由国际时间局给定的历元为1984.0的初始指向推算定向的时间演化保证相对于地壳不产生残余的全球旋转X轴由原点指向格林尼治参考子午线与地球赤道面历元2000.0的交点Y轴与Z轴、X轴构成右手正交坐标系。采用广义相对论意义下的尺度。
长半轴a 6378137m短半轴b 6356752.314m第一偏心率平方e2 0.00669438002290扁率α 1/298.257222101 GDAL库
概述 GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。 OGR是GDAL项目的一个分支提供对矢量数据的支持。 有很多著名的GIS类产品都使用了GDAL/OGR库包括ESRI的ARCGIS 9.3Google Earth和跨平台的GRASS GIS系统。利用GDAL/OGR库可以使基于Linux的地理空间数据管理系统提供对矢量和栅格文件数据的支持。
功能特征
GDAL提供对多种栅格数据的支持包括Arc/Info ASCII Grid(asc)GeoTiff (tiff)Erdas Imagine Images(img)ASCII DEM(dem) 等格式。GDAL使用抽象数据模型(abstract data model)来解析它所支持的数据格式抽象数据模型包括数据集(dataset)坐标系统仿射地理坐标转换(Affine Geo Transform)大地控制点(GCPs)元数据(Metadata)栅格波段(Raster Band)颜色表(Color Table)子数据集域(Subdatasets Domain)图像结构域(Image_Structure Domain)XML域(XML:Domains)。GDALMajorObject类带有元数据的对象。GDALDdataset类通常是从一个栅格文件中提取的相关联的栅格波段集合和这些波段的元数据;GDALDdataset也负责所有栅格波段的地理坐标转换(georeferencing transform)和坐标系定义。GDALDriver类文件格式驱动类GDAL会为每一个所支持的文件格式创建一个该类的实体来管理该文件格式。GDALDriverManager类文件格式驱动管理类用来管理GDALDriver类。
OGR体系结构
Geometry类Geometry (包括OGRGeometry等类)封装了OpenGIS的矢量数据模型并提供了一些几何操作WKB(Well Knows Binary)和WKT(Well Known Text)格式之间的相互转换以及空间参考系统(投影)。Spatial Reference类OGRSpatialReference封装了投影和基准面的定义。Feature类OGRFeature封装了一个完整feature的定义一个完整的feature包括一个geometry和geometry的一系列属性。Feature Definition类OGRFeatureDefn里面封装了feature的属性类型、名称及其默认的空间参考系统等。一个OGRFeatureDefn对象通常与一个层(layer)对应。Layer类OGRLayer是一个抽象基类表示数据源类OGRDataSource里面的一层要素(feature)。Data Source类OGRDataSource是一个抽象基类表示含有OGRLayer对象的一个文件或一个数据库。Drivers类OGRSFDriver对应于每一个所支持的矢量文件格式。类OGRSFDriver由类OGRSFDriverRegistrar来注册和管理。
下载地址 Homehttps://gdal.org/download.html 选择3.2.1版本 准备MSYS2编译环境 这里首先使用时mysy1.0会遇到系统枚举未知于是换msys2。 这里msys2又踩坑几天依赖库互相依赖glibclibtoolpkg-config等各种问题互相绕来绕去好不容易能编译最后还识别不出系统标识还在坚持所以又换了下msys642重新做一遍去掉所有路径直接安装入msys642确认通过后再开始使用路径prefix来配置再编译安装提取库文件 这个是windows上方正linux编译库的环境。 自行下载解压即可 点击“msys2.bat”启动即可 这里我们需要使用Qt5.9.3的mingw32开发所以要把Qt的mingw32编译器copy到这个根目录下这样在则合格msys环境里就可以引入了 然后 路径引入下
export PATH$PATH:/mingw530_32/bin编译GDAL
步骤一下载解压
export PATH$PATH:/mingw530_32/bin
cd /home/21497/compile
mkdir gdal然后将gdal的包copy到msys的主目录下去
cd gdal
tar xvf gdal-3.2.1.tar.gz
ls -l步骤二配置configure 这里为了让库生成到指定目录下设置了prefix参数
cd /home/21497/compile/gdal/gdal-3.2.1
./configure --prefix/home/21497/compile/gdal/install
./configure --prefix/home/21497/compile/gdal/install --without-libtool错误“configure:error: PROJ 6 symbols not found”需要编译PROJ6 请查看后面的章节“编译PROJ6”编译完成后回到此处继续配置
cd gdal-3.2.1
./configure还是报错但是可以知道已经是有头文件和库文件了然后开始强制 还是找不到头文件再来个绝的 还不行直接给他注释掉 直接强制注释掉看了强制放开定义HAVA_PROJ_H每个文件夹都放了还强制屏蔽了测试就不行过不去源码大法最终结果 配置通过 Proj6也是yes的。
步骤三编译mak PS这个库mingw32-make就出错或者异常make就可以过基本前者过不去就使用make了都反正编译出来时纯gcc的gcc又是引入到了Qt5.9.3的mingw32的gcc了
make -j4开始编译这个gdal库编译花费了一些时间出错 这个msys642对于头文件确实是有些问题的还是老办法所有头问价你直接copy到这个“geo_keyp.h”文件夹这样理论上可以 编译确实过了PS为什么msys642他不自己加载头文件路径额外加的环境变量他也不行不细究了继续编译
make编译完成后 继续一次make不带j的确保都正确编译通过了 步骤四安装make install 安装
make install步骤五工程引入本次编译的库 PS这里工程基于麒麟系统v1.0.0升级为v1.1.0融合windows平台Qt5.9.3的mingw32版本 之前安装的都是安装到系统路径去了所以此处先引入系统路径的库。 至此成功。 编译PROJ6
步骤一下载解压 下载地址https://proj.org 选择版本6.2.0 下载后拷贝至MSYS2
cd /home/21497/compile
mkdir proj
cd projtar xfv proj-6.2.0.tar.gz步骤二配置configure 这里为了让库生成到指定目录下设置了prefix参数
cd /home/21497/compile/proj/proj-6.2.0/
./configure --prefix/home/21497/compile/proj/install
./configure --without-libtool配置错误“SQLITE3”如下图 请查看后面的章节“编译SQLITE3”编译完成后回到此处继续配置
cd /home/21497/compile/proj/proj-6.2.0/此时编译还是出现错误该错误报错可能是pkgconfig的问题安装“编译pkgconfig”换mingw642解决了继续
步骤三编译make
make -j4开始编译 这里找不到头文件 添加头文件路径还是报错直接强制然后继续 添加了库路径也还是报错直接强制然后继续 终于编译过去 回到“gdal”库。
步骤四安装make install 要使用管理员权限不然安装失败无法系统目录创建
sudo make install测试不需要ldconfig也可以依赖了至此proj6库编译完成。 编译SQLITE3
步骤一下载解压 https://www.sqlite.org/download.html tar xvf sqlite-autoconf-3420000.tar.gz步骤二配置configure 这里为了让库生成到指定目录下设置了prefix参数
cd /home/21497/compile/sqlite3/sqlite-autoconf-3420000
./configure --prefix/home/21497/compile/sqlite3/install配置错误 PS凡事不要慌慢慢的睁开眼睛一行行看error 修改配置
./configure --prefix/home/21497/compile/sqlite3/install --disable-dependency-tracking然后继续配置 配置成功
步骤三编译make 这里编译会libtool出错无解于是尝试将sqlite往后退一个版本就通过了重新来步骤
cd sqlite-snapshot-202101271915
./configure --prefix/home/21497/compile/sqlite3/install
mingw32-make.exe -j4步骤四安装make install
mingw32-make install失败了如下图 因为make不一样所以直接修改下Makefile 就可以过去了
步骤五检查编译成功 以上是为了提取路径依赖它的库编译发现有问题: 为了一刀切直接重新配置不带路径再来一次部署到msys中
cd /home/21497/compile/sqlite3/sqlite-snapshot-202101271915/
./configure
mingw32-make.exe
mingw32-make install(install记得修改Makefile的CC为mingw32-make) 换msys642和3.42使用make不使用mingw32-make成功了 编译pkgconfig废弃但是保留步骤
步骤一下载解压 下载地址https://www.freedesktop.org/wiki/Software/pkg-config/
tar xvf pkgconfig-0.6.0.tar.gz步骤二配置configure
cd pkgconfig-0.6.0/
./configure换0.29版本 修改下配置
./configure –with-internal-glib出现各种错误无解后来换mingw32-make配置proj6就没此错误了。 结尾 本篇解决问题尝试较多最终编译过去就没有再去引入模块了因为解决过程耗时长达约三天试错msys各种环境各种开源库版本路径源码调整最终才本篇才完成。 如果读者不强制要求mingw32建议不要使用mingw32版本的dgal。 上一篇没有了 下一篇敬请期待… 若该文为原创文章转载请注明原文出处 本文章博客地址https://hpzwl.blog.csdn.net/article/details/131931309