若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131931309
上一篇:没有了
下一篇:敬请期待…
麒麟系统上做全球北斗定位终端开发,调试工具要做一个windows版本方便校对,北斗GPS发过来的是大地坐标,应用需要的是经纬度坐标,所以需要转换,可以使用公式转换,但是之前涉及到了山He智能一个项目使用WG,最终选择了GDAL库进行转换。
如果读者不强制要求mingw32,建议不要使用mingw32版本的dgal。编译过程非常曲折。
《麒麟系统开发笔记(十二):在国产麒麟系统上编译GDAL库、搭建基础开发环境和基础Demo》
《Qt+GDAL开发笔记(一):在windows系统mingw32编译GDAL库、搭建开发环境和基础Demo》
大地坐标(Geodetic coordinate)是大地测量中以参考椭球面为基准面的坐标,地面点P的位置用大地经度L、大地纬度B和大地高H表示。
当点在参考椭球面上时,仅用大地经度和大地纬度表示。大地经度是通过该点的大地子午面与起始大地子午面(通过格林尼治天文台的子午面)之间的夹角。规定以起始子午面起算,向东由0°至180°称为东经;向西由0°至180°称为西经。大地纬度是通过该点的法线与赤道面的夹角,规定由赤道面起算,由赤道面向北从0°至90°称为北纬;向南从0°到90°称为南纬。大地高是地面点沿法线到参考椭球面的距离。
北京54坐标系(BJZ54)是指北京54坐标系为参心大地坐标系,大地上的一点可用经度L54、纬度M54和大地高H54定位,它是以克拉索夫斯基椭球为基础,经局部平差后产生的坐标系。
WGS-84坐标系是世界大地坐标系统,其坐标原点在地心,采用WGS-84椭球(1984世界大地坐标系)。
WGS-84坐标系是美国国防部研制确定的大地坐标系,是一种协议地球坐标系。
WGS-84坐标系的定义是:原点是地球的质心,空间直角坐标系的Z轴指向BIH(1984.0)定义的地极(CTP)方向,即国际协议原点CIO,它由IAU和IUGG共同推荐。X轴指向BIH定义的零度子午面和CTP赤道的交点,Y轴和Z,X轴构成右手坐标系。
WGS-84椭球采用国际大地测量与地球物理联合会第17届大会测量常数推荐值,采用的两个常用基本几何参数:
2000国家大地坐标系,是我国当前最新的国家大地坐标系,英文名称为China Geodetic Coordinate System 2000,英文缩写为CGCS2000。
2000国家大地坐标系的原点为包括海洋和大气的整个地球的质量中心;2000国家大地坐标系的Z轴由原点指向历元2000.0的地球参考极的方向,该历元的指向由国际时间局给定的历元为1984.0的初始指向推算,定向的时间演化保证相对于地壳不产生残余的全球旋转,X轴由原点指向格林尼治参考子午线与地球赤道面(历元2000.0)的交点,Y轴与Z轴、X轴构成右手正交坐标系。采用广义相对论意义下的尺度。
GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。 OGR是GDAL项目的一个分支,提供对矢量数据的支持。 有很多著名的GIS类产品都使用了GDAL/OGR库,包括ESRI的ARCGIS 9.3,Google Earth和跨平台的GRASS GIS系统。利用GDAL/OGR库,可以使基于Linux的地理空间数据管理系统提供对矢量和栅格文件数据的支持。
Home:https://gdal.org/download.html
选择3.2.1版本
(这里首先使用时mysy1.0,会遇到系统枚举未知,于是换msys2)。
(这里msys2又踩坑几天,依赖库互相依赖glibc,libtool,pkg-config等各种问题,互相绕来绕去,好不容易能编译最后还识别不出系统标识,还在坚持,所以又换了下msys642,重新做一遍,去掉所有路径,直接安装入msys642,确认通过后再开始使用路径prefix来配置再编译安装提取库文件)
这个是windows上方正linux编译库的环境。
自行下载,解压即可:
这里我们需要使用Qt5.9.3的mingw32开发,所以要把Qt的mingw32编译器copy到这个根目录下,这样在则合格msys环境里就可以引入了:
路径引入下:
export PATH=$PATH:/mingw530_32/bin
export PATH=$PATH:/mingw530_32/bin
cd /home/21497/compile
mkdir gdal
cd gdal
tar xvf gdal-3.2.1.tar.gz
ls -l
这里为了让库生成到指定目录下设置了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的。
(PS:这个库,mingw32-make就出错或者异常,make就可以过,基本前者过不去就使用make了都,反正编译出来时纯gcc的,gcc又是引入到了Qt5.9.3的mingw32的gcc了)
make -j4
这个msys642对于头文件确实是有些问题的,还是老办法,所有头问价你直接copy到这个“geo_keyp.h”文件夹,这样理论上可以:
编译,确实过了(PS:为什么msys642他不自己加载头文件路径,额外加的环境变量他也不行,不细究了),继续编译:
make
安装
make install
(PS:这里工程基于麒麟系统v1.0.0,升级为v1.1.0,融合windows平台Qt5.9.3的mingw32版本)
之前安装的都是安装到系统路径去了,所以此处先引入系统路径的库。
至此,成功。
下载地址:https://proj.org
选择版本6.2.0
下载后拷贝至MSYS2:
cd /home/21497/compile
mkdir proj
cd proj
tar xfv proj-6.2.0.tar.gz
这里为了让库生成到指定目录下设置了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 -j4
回到“gdal”库。
要使用管理员权限,不然安装失败,无法系统目录创建:
sudo make install
测试,不需要ldconfig也可以依赖了,至此proj6库编译完成。
https://www.sqlite.org/download.html
tar xvf sqlite-autoconf-3420000.tar.gz
这里为了让库生成到指定目录下设置了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
这里编译会libtool出错,无解,于是尝试将sqlite往后退一个版本,就通过了,重新来步骤:
cd sqlite-snapshot-202101271915
./configure --prefix=/home/21497/compile/sqlite3/install
mingw32-make.exe -j4
mingw32-make install
为了一刀切,直接重新配置不带路径再来一次,部署到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)成功了:
下载地址:https://www.freedesktop.org/wiki/Software/pkg-config/
tar xvf pkgconfig-0.6.0.tar.gz
cd pkgconfig-0.6.0/
./configure
修改下配置:
./configure –with-internal-glib
出现各种错误,无解,后来换mingw32-make配置proj6就没此错误了。
本篇解决问题尝试较多,最终编译过去就没有再去引入模块了,因为解决过程耗时长达约三天,试错msys各种环境,各种开源库版本,路径源码调整,最终才本篇才完成。
如果读者不强制要求mingw32,建议不要使用mingw32版本的dgal。
上一篇:没有了
下一篇:敬请期待…
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131931309