3

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

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

  • 带有 Qt SDK 的 ArcGIS Runtime对我不起作用,因为我打算使用 ARM 处理器以嵌入式 linux 设备为目标,并且 ArcGIS 不会为任意目标提供可用于交叉编译的源代码。他们最近发布了一个 Android 版本,但一般来说没有针对 ARM linux 的版本)
  • QGIS 开发人员库GPL 许可证与我的商业开发不兼容
  • 将 Qt 位置组件与本地图块服务器或离线图块集合一起使用(一些插件最近引入了对此的支持)似乎有点 hack,如前所述,我主要使用自定义地图,而不是公共地图的离线副本服务器图像,而我的图像将不足以真正保证平铺

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

我已经开始检查现有插件的源代码,但无法摆脱这样一种感觉:在一个拥有 80 亿人口的世界里,“太阳底下没有新鲜事”,如果这是一个好主意,这已经完成了……

有更熟悉 Qt Location 模块的人愿意发表评论吗?

4

2 回答 2

1

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

这就是说,QtLocation 确实允许您使用大多数方式(http、https、文件、qrc 等)。

所以继续,启动QGis,安装QTiler插件,然后转换你的图像。如果您需要通过网络将这些图片直接提供给客户端(因此需要在客户端进行转换),您可以查看 QTiler 的功能,或者构建您的 gdal 管道(gdal_translate、gdalwarp 和 gdal2tiles),然后发送与您的应用程序相关的 gdal 位。

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

于 2017-12-07T16:26:58.420 回答
0

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

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

于 2017-12-07T23:21:29.980 回答