作者:康 林 [email protected]
本项目对WGS84、GCJ02、百度坐标系之间进行转换。
- WGS84: 为一种大地坐标系,也是目前广泛使用的全球卫星定位系统(GPS)使用的坐标系。
- GCJ02: 戏称火星坐标系,是由中国国家测绘局制定的地理坐标系统,是由WGS84加密后得到的坐标系。
- BD09: 为百度坐标系,在GCJ02坐标系基础上再次加密。 其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标。
本项目还包括一个GPX文件操作模块。
- C++ 库:
- 坐标转换库:TransformCoordinate
- GPX文件操作库:GpxModel
- 坐标转换程序:TransformCoordinateApp
- Windows 7 SP2 及以后
- Linux
- Android
- MacOS
- IPHONE
注意: 本人没有 MacOS 和 IPHONE 设备。请有设备的朋友自行测试,并进行反馈。 也可以向本人捐赠资金或相关设备,请联系:[email protected]
-
Ubuntu
-
包含玉兔公共库(RabbitCommon)
-
安装
sudo apt install ./libtransformcoordinate_1.1.2_RabbitCommon_amd64.deb \ ./transformcoordinate_1.1.2_RabbitCommon_amd64.deb
-
不包含玉兔公共库(RabbitCommon)。安装前需要先从 RabbitCommon 下载,并安装 RabbitCommon。
-
-
Windows
-
Android
git clone https://github.com/KangLin/TransformCoordinate.git
- 编译工具
- 依赖库
- [必选] Rabbit 公共库(RabbitCommon):
- 源码:
https://github.com/KangLin/RabbitCommon
- 开发包:
https://github.com/KangLin/RabbitCommon/releases
- 源码:
- [必选] Rabbit 公共库(RabbitCommon):
- [必选] QT_DIR: qt 安装位置
- [可选] Qt5_DIR: qt5 安装位置
- [可选] Qt6_DIR: qt6 安装位置
- [可选] RabbitCommon_DIR: RabbitCommon 源码位置
-
编译
git clone https://github.com/KangLin/RabbitCommon.git git clone https://github.com/KangLin/TransformCoordinate.git cd TransformCoordinate mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=`pwd`/install \ -DCMAKE_BUILD_TYPE=Release \ -DQT_DIR=...... \ -DQt6_DIR=...... \ -DRabbitCommon_DIR= \ [其它可选 CMake 配置参数] cmake --build . --config Release
-
打包
cmake --build . --config Release --target package
-
运行例子
-
[可选] 把生成库的目录加入到变量 LD_LIBRARY_PATH 中
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/lib
-
执行 bin 目录下的程序
cd TransformCoordinate cd build cd bin ./TransformCoordinateApp
-
- 使用 cmake-gui.exe 工具编译。打开 cmake-gui.exe 配置
- 命令行编译
-
把 cmake 命令所在目录加入到环境变量 PATH 中
-
从开始菜单打开 “VS2015开发人员命令提示”,进入命令行
-
编译
cd TransformCoordinate mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=`pwd`/install ^ -DCMAKE_BUILD_TYPE=Release ^ -DQT_DIR=...... ^ -DQt6_DIR=...... ^ -DRabbitCommon_DIR= ^ [其它可选 CMake 配置参数] cmake --build . --config Release
-
打包
cmake --build . --config Release --target package
-
运行例子
- 执行 bin 目录下的程序
- TransformCoordinateApp.exe
- 执行 bin 目录下的程序
-
-
-
安装 ndk 编译工具
-
从 https://developer.android.com/ndk/downloads 下载 ndk,并安装到:/home/android-ndk
-
设置环境变量:
export ANDROID_NDK=/home/android-ndk
-
-
安装 sdk 工具
-
从 https://developer.android.google.cn/studio/releases 下载 sdk tools, 并安装到 /home/android-sdk
-
设置环境变量:
export ANDROID_SDK=/home/android-sdk
-
-
编译
-
主机是 linux
cd TransformCoordinate mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=`pwd`/android-build \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \ -DANDROID_ABI="armeabi-v7a with NEON" \ -DANDROID_PLATFORM=android-18 \ -DQT_DIR=...... \ -DQt6_DIR=...... \ -DRabbitCommon_DIR= \ [其它可选 CMake 配置参数] cmake --build . --config Release --target package
-
主机是 windows
cd TransformCoordinate mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=`pwd`/android-build ^ -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ^ -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake ^ -DCMAKE_MAKE_PROGRAM=${ANDROID_NDK}/prebuilt/windows-x86_64/bin/make.exe ^ -DANDROID_ABI=arm64-v8a ^ -DANDROID_ARM_NEON=ON ^ -DQT_DIR=...... ^ -DQt6_DIR=...... ^ -DRabbitCommon_DIR= ^ [其它可选 CMake 配置参数] cmake --build . --config Release --target package
-
CMake for android 参数说明:https://developer.android.google.cn/ndk/guides/cmake
- ANDROID_ABI: 可取下列值:
目标 ABI。如果未指定目标 ABI,则 CMake 默认使用 armeabi-v7a。
有效的目标名称为:- armeabi:带软件浮点运算并基于 ARMv5TE 的 CPU。
- armeabi-v7a:带硬件 FPU 指令 (VFPv3_D16) 并基于 ARMv7 的设备。
- armeabi-v7a with NEON:与 armeabi-v7a 相同,但启用 NEON 浮点指令。这相当于设置 -DANDROID_ABI=armeabi-v7a 和 -DANDROID_ARM_NEON=ON。
- arm64-v8a:ARMv8 AArch64 指令集。
- x86:IA-32 指令集。
- x86_64 - 用于 x86-64 架构的指令集。
- ANDROID_NDK <path> 主机上安装的 NDK 根目录的绝对路径
- ANDROID_PLATFORM: 如需平台名称和对应 Android 系统映像的完整列表,请参阅 Android NDK 原生 API
- ANDROID_ARM_MODE
- ANDROID_ARM_NEON
- ANDROID_STL: 指定 CMake 应使用的 STL。默认情况下,CMake 使用 c++_static。
- c++_shared: 使用 libc++ 动态库
- c++_static: 使用 libc++ 静态库
- none: 没有 C++ 库支持
- system: 用系统的 STL
- ANDROID_ABI: 可取下列值:
目标 ABI。如果未指定目标 ABI,则 CMake 默认使用 armeabi-v7a。
-
安装 apk 到设备
adb install android-build-debug.apk
-
-
编译
cd TransformCoordinate mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=`pwd`/install \ -DCMAKE_BUILD_TYPE=Release \ -DQT_DIR=...... \ -DQt6_DIR=...... \ -DRabbitCommon_DIR= \ [其它可选 CMake 配置参数] cmake --build . --config Release
-
打包
cmake --build . --config Release --target package
-
坐标转换库:
-
在程序 CMakeLists.txt 中加入下面行
find_package(TransformCoordinate) target_link_libraries(${PROJECT_NAME} PRIVATE TransformCoordinate)
-
接口详见: TransformCoordinate
-
-
GPX文件操作库:
-
编译时,需要设置 CMake 参数: WITH_GPXMODEL=ON
-
在程序 CMakeLists.txt 中加入下面行
find_package(GpxModel) target_link_libraries(${PROJECT_NAME} PRIVATE GpxModel)
-
接口详见: GpxModel
-
-
build_debpackage.sh
-
此脚本是 linux 下生成 deb 包的。使用前,请确保安装了下面程序
sudo apt-get install debhelper fakeroot
-
用系统自带的 QT
sudo apt-get install \ qt6-tools-dev qt6-tools-dev-tools \ qt6-base-dev qt6-base-dev-tools qt6-qpa-plugins \ libqt6svg6-dev qt6-l10n-tools qt6-translations-l10n \ qt6-scxml-dev qt6-multimedia-dev libqt6serialport6-dev \ qt6-webengine-dev qt6-webengine-dev-tools
-
详见: ubuntu.yml
-
注意:
- 如果使用 RabbitCommon 源码编译,则本库安装的库位于: /opt/TransformCoordinate
- 如果使用 RabbitCommon 安装包编译,则本库安装于系统目录: /usr
-
-
deploy.sh: 此脚本用于产生新的发行版本号和标签。仅程序发布者使用。
本软件如果对你有用,或者你喜欢它,请你捐赠,支持作者。谢谢!