系统相关
首页 > 系统相关> > win10+vs2017+cpp+qt5.12.6+ArcGIS_Runtime_SDK_Qt_Windows_100_6_0,地图显示模块

win10+vs2017+cpp+qt5.12.6+ArcGIS_Runtime_SDK_Qt_Windows_100_6_0,地图显示模块

作者:互联网

需求:需要在某程序里加一个基于ArcGIS的地图显示模块。
最终四五天才第一次把地图显示出来。
虽然还存在一些疑问,例如在线地图未能显示,但好歹有一条路走通了。
这里记述一下遇到的各种坑和解决方案:
1、windows、vs、qt等环境问题。
以前因为matlab2016只支持x64,被逼上win7、win10、vs2013、cpp、x64、qt5.5.1环境。要加arcgis只能往上走了。
2、ArcGIS用什么开发
我只能选arcgis qt sdk。好像java、C#的参考资料会多些,但我没得选。
3、arcgis等软件的下载问题
官网下载arcgis的qt sdk:https://developers.arcgis.com/downloads/apis-and-sdks/?product=qt 选10.6或以上吧。最新的100.8版本,下了一天多下不下来,这官网下载本身也是坑多,换成10.6下载下来了。10.7下载时好时坏。
10.6支持的qt似乎是从5.12.0开始的。而且这个对应的是vs2017.

arcgis桌面版10.7在https://malagis.com/找下载链接。这个后面要用来做tpk地图文件。

百度网盘下载时,一次下一个,慢慢等。我没找到好用的不限速百度网盘软件。

全能电子地图下载器,这个忘了在哪下找的链接。这个是用来下地图源数据的,下载为默认的png格式即可。然后拼接成不同图层的大图。这个软件的输出作为arcmap的输入,制作tpk文件。

vs2017下载,从官网下一个1m多的程序安装吧,百度网盘的下载链接太坑了,还不如官网。vs选免费的社区版本。

qt的下载。镜像地址如下:
http://mirrors.ustc.edu.cn/qtproject/archive/
http://mirror.bit.edu.cn/qtproject/archive/qt/5.12/5.12.6/
高版本的qt都不分x86x64了,安装时两个都会有。以前的老版本分32、64位,现在高版本不用找x64文件,没有,下下来就知道x64就在x86的里面。

4、arcgis要在官网注册免费的开发者账号。
注册通过后,邮件里面有一个Runtime Lite license key字符串,程序里面要用的。vs最好也注册一个账号,避免麻烦。

5、安装。
麻辣gis网站有arcgis安装说明。那个啥注册问题,差不多都有。
先装vs2017吧,然后是qt5.12.6,然后是arcgis桌面版、arcgis qt sdk、再就是下地图用的“全能电子地图下载器”。

6、下载地图。制作tpk文件。
为啥要tpk文件呢?因为用qt creator创建的arcgis程序,默认地图是Basemap::topographic(this),我猜是在线地图,但无法显示,应该是缺点什么。后来为了快速走出成功的第一步,我找了个tpk文件的代码示例,于是为了tpk文件又踩了几个坑。
首先是下地图,“全能电子地图下载器”自带的帮助文档中有说明,先不要下载太大范围。我选的高德道路地图,输出E:\MapTileDownload\OutPut\高德地图_200621104336_L13\高德地图_200621104336.png 等文件。注意选合适范围和图层。
然后使用arcmap(arcgis桌面版里面的一个子程序)来制作tpk文件,需要注意的是,设置tpk参数时(切片格式、最高细节层次),不要选太高等级的图层,否则2m的png地图跑2天也跑不完。摘要标签不能为空,随便写个字符就行。

7、第一个能显示地图的工程代码。
先用qt5.12.6带的qt creator创建arcgis模板工程。如果找不到,肯定是arcgis qt sdk没装对。设置main函数中的license。

//m_map = new Map(Basemap::topographic(this), this);//这是qt模板给出的代码,未能显示
//以下为自制的tpk离线地图文件,显示正常。
TileCache* tileCache = new TileCache(("E:/MapTileDownload/arcgis/1.tpk"), this);
 ArcGISTiledLayer* tiledLayer = new ArcGISTiledLayer(tileCache, this);
 Basemap *basemap = new Basemap(tiledLayer, this);
 m_map = new Map(basemap, this);

效果图如下
在这里插入图片描述

标签:文件,qt,arcgis,Windows,地图,tpk,ArcGIS,下载,qt5.12
来源: https://blog.csdn.net/weixin_43172531/article/details/106886148