编写自定义Qt位置GeoServices插件以使用地理参考图像文件作为地图源

时间:2017-12-06 09:08:53

标签: qt qml qtlocation

我目前正在研究Qt Quick应用程序,该应用程序将为一个小区域(1平方公里左右)提供地图查看器,其地图详细信息将在单个地理参考图像文件中提供(GeoTIFF,地理参考PDF,ESRI形状文件等),以及当前位置的显示,操作员识别的兴趣点等。主要责任是显示自定义地图(与从公共地图图像服务提供商(OSM)检索的通用地图相对应) ,MabBox,ESRI等)),它通常用于连接有限的区域

广泛的网络搜索已经确定了过去曾进行类似查询的其他人(此处,Qt论坛等),解决方案的一般建议如下:

  • 使用Qt SDK 的ArcGIS Runtime对我来说不起作用我想要使用ARM处理器定位嵌入式Linux设备,而且ArcGIS不提供任意交叉编译的源代码目标。他们最近制作了一个Android版本,但一般没有ARM linux的版本)
  • QGIS开发人员库 GPL许可与我的商业开发不兼容
  • 将Qt位置地图组件与本地磁贴服务器或离线磁贴集合一起使用(某些插件最近引入了对此的支持)看起来有点像黑客,正如我所说的那样主要使用自定义地图,而不是公共地图服务器图像的离线副本,而且我的图像不够大,无法真正保证平铺

从头开始开发Qt Quick组件是可行的,但考虑到现有的Qt Location Map 组件为我的地图提供了一个定义明确的预先存在的前端接口需要做并且有一个可扩展的基于插件的架构,编写自定义Qt Location GeoServices插件似乎是最明智和优雅的前进方式。

我已经开始研究现有插件的源代码了,但是不能动摇这种感觉,在一个拥有80亿人口的世界里,“阳光下没什么新东西”,如果是这样的话,这本来就已经完成了。一个好主意......

有更多熟悉Qt位置模块的人是否需要发表评论?

2 个答案:

答案 0 :(得分:0)

由于地理参考图像可以任意大,因此将它们转换为平铺金字塔是标准,以便能够在任何硬件上有效地显示它们(代价是加倍尺寸,最坏的情况,取决于如何你想要的很多层)。 即使您要编写自己的地理服务插件,您最有可能最终(直接或使用第三方代码)平铺您的地理位置。

这就是说,QtLocation确实允许你使用自定义tilesets(http://doc.qt.io/qt-5/location-plugin-osm.html,寻找 osm.mapping.custom.host )以大多数方式提供服务(http,https,file,qrc)等等。)。

继续,启动 QGis ,安装 QTiler 插件,然后转换图片。 如果您需要通过网络直接向客户提供这些图片(因此需要在客户端进行转换),您可以查看QTiler的功能,或者建立您的gdal管道(gdal_translate,gdalwarp和gdal2tiles),并发货与您的申请相关的gdal位。

如果您需要同时使用多个图像,可以使用多个插件元素和不同的插件参数,也可以分叉osm插件并支持多个自定义主机。

答案 1 :(得分:0)

根据Paul的回复,以及对Qt论坛和邮件列表的相同查询的几个类似回复,以及我自己的调查,我得出以下结论:

生成自定义Qt位置GeoServices插件以直接从地理参考图像文件提供地图图像不是一个好主意,因为实现不是那么简单,实际上任何非平凡的地图图像都会可能足够大,以至于初始的平铺步骤,然后使用引用本地平铺集的标准平铺贴图插件之一将更合适。

相关问题