提到开源三维地球模型绘制,比较有名的一个是基于 OpenSceneGraph 的 osgEarth。
在 windows下,编译这两个东西是非常恐怖的事情,存在大量的依赖性。好在,有万能的MSYS2,使得一切变得简单了。尽管目前,激进的MSYS2 已经把 Qt 滚到了 5.8版本,g++与 boost 也接近ArchLinux的程度,但貌似稳定性还是不错的。直接执行指令
pacman -S mingw-w64-i686-crypto++ mingw-w64-x86_64-crypto++
pacman -S mingw-w64-i686-netcdf mingw-w64-x86_64-netcdf
pacman -S mingw-w64-i686-osgearth mingw-w64-x86_64-osgearth
即可安装osgearth。注意,前两行为必须依赖,目前应该是BUG,软件包 mingw-w64-i686-osgearth mingw-w64-x86_64-osgearth 不包含上述依赖,但是实际上动态链接库却依赖。
安装完成后,头文件、库、可执行都OK了。试一试吧! 从github (https://github.com/gwaldron/osgearth)下载OpenStreetMap的配置文件(XML)openstreetmap.earth,而后执行查看指令,把瓦片源切换为本地的Archlinux OSM瓦片服务器(要不然巨慢)。
<!--
OpenStreetMap's Mapnik "Slippy Map" - Geocentric.
See:
http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
-->
<map name="OpenStreetMap" type="geocentric" version="2">
<image name="osm_mapnik" driver="xyz">
<url>http://192.168.1.10:8088/osm_tiles/{z}/{x}/{y}.png</url>
<profile>spherical-mercator</profile>
<cache_policy usage="none"/>
</image>
<options>
<lighting>false</lighting>
<terrain>
<min_tile_range_factor>8</min_tile_range_factor>
</terrain>
</options>
</map>
最简单的测试指令在 这里下载:
osgearth_viewer --window 50 50 900 700 ./openstreetmap.earth
图片1 | 图片2 |
---|---|
篇外话:MSYS2 推出很久了,目前看来,其软件包的易用性上已经非常棒,且很新,作为非生产环境的项目,再合适不过了。后面有空就仔细研究一下Qt与 osgEarth 的结合。再赞一个,Qt5.8 + charts + 3d + MSYS2,很棒!绿色软件,一次配置,N机解压。