离线地图下载和发布

地图下载

前言:目前了解可以直接下载xyz的图片,格式可以是jpg或者png,本地发布的方式很多,可以是tomcat,ngnix或者其他web服务;我本人采用的是minio方式发布,主要是minio可以很方便的管理数据;或者下载mbtils(MbTiles 是一个用于在 sqllite 数据库中存储任意瓦片地图数据用于即时使用和高效传输的规范。),可以使用geoserver发布mbtils格式数据(推荐查看官网,记得先装wps,再装mbtils)。

安装地址推荐:https://build.geoserver.org/geoserver/2.20.x/community-2022-08-02/

方式1:使用各种软件下载

我此次尝试了全能下载器、奥维互动地图、谷谷下载器、图新地球、太乐地球、水径微图

经过测试,我最终推荐使用图新地球或者全能下载器下载底图数据;其他的下载器歪心思太多。

对于图新地球,可以找一下网上的图源,有了图源基本都可以下载(但是天地图不能下载)

全能下载器这个软件是很多年以前的,作者很久没更新,有些地图不能下载。目前测试高德、百度、腾讯,bings下载都是没有问题。

 以上软件对于天地图都没发下载,恰恰我就想去下载天地图;思考其他方式

方式2:开发爬虫,爬取下载瓦片

github中有很多前人开发,各位可以gitlab搜索,在此基础上自己去开发下载就行

我尝试了很多,发现要达到自己的要求,我要去改动很多代码;例如下载上百万个瓦片中下载失败是很正常,这部分得自己判断重新下载等等这些问题,哎呀,恰巧我还不想去改。如果要去爬虫的化,一开始就去写反爬python代码了。既然走到这一步,找找有没有其他软件下载的。推荐方式3

GitHub - ShareQiu1994/node-map-download: A map downloader based on nodejs

方式3:Global mapper下载

千呼万唤你才出来,使用Globalmapper可以下载天地图、谷歌等等

下载教学视频:

32_Global mapper专业版GlobalMapper_从入门到入土教程_GM下载谷歌卫星图和天地图及坐标转换成国家2000的方法_哔哩哔哩_bilibili

以上视频是下载tif,那么后续可以将tif发布成服务服务不就可以了;但是有一个缺点就是,测试在一个市级下载非常慢,往往软件会卡死。

或者下载成mbtils,然后使用geoserver发布不就行了:结果如下天地图

其他mbtils数据测试正常

 如图所示,GP天地图下载的Mbtils在geoserver发布后,发现根据缩放,会出现黑色的图像,想了一会儿,搞不懂,在想想其他方式。

那就直接globalmapper发布瓦片吧,灵感来源于tif金字塔切片处理,借图如下:

 结果如下:

 终于得到我想要的瓦片了,且此瓦片是将天地图两个图层叠加了一下,导出的瓦片带有标注。

服务发布

注意:这里必须设置minio永久访问链接

 minio环境准备好了

minio发布:

 访问地址将是http://xxxxxxx:9011/model/TDT01/10/807/xxx.png

代码测试

参考连接:瓦片底图:在线地图的下载和使用 | Mars3D开发教程

2020年初行政区划数据:2020年初行政区划数据 | 省市县

geoserver发布离线瓦片卫星图TIF格式_晨宇烁的博客-CSDN博客_geoserver发布tif

关于openlayers引入高德地图出现坐标偏移的纠偏方法_盖世太保爱地信的博客-CSDN博客_openlayers坐标偏移

【地图下载】卫星影像、地形、矢量、专题图下载神器+100余个图源_哔哩哔哩_bilibili

 全能电子地图下载器(免安装) - 知乎

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Qt是一个功能强大的开发框架,通过使用Qt的地图和位置相关API,可以实现离线地图和定位的功能。 要实现离线地图,可以使用OpenStreetMap(OSM)提供的地图数据。首先,需要下载适合离线使用的OSM地图数据文件,通常以OSM格式或PBF格式保存。然后,使用Qt的地图显示控件(如QQuickMapItem或QMapboxGL)加载这些地图数据文件,并显示地图内容。可以设置控件的初始位置和缩放级别,以及地图的细节级别。通过这种方式,就可以在应用程序中加载和显示离线地图了。 要实现定位功能,可以使用Qt的位置服务相关API。通过调用QGeoPositionInfoSource类,可以获取位置信息,其中包括经纬度、海拔、速度等。可以设置定位的更新频率和准确度要求。可以使用QGeoCoordinate类来表示地理坐标。通过在地图上显示当前位置,可以实现定位功能的可视化展示。 为了实现离线地图和定位的功能,还需要考虑一些问题。首先,需要解决地图数据的存储问题,可以选择将地图数据存储在本地设备上,或者在应用程序中将地图数据打包并随应用程序一起发布。此外,需要考虑到地图数据的更新和管理,可以使用定期下载最新的地图数据文件,以保持地图数据的最新状态。另外,还需要处理位置信息的更新和处理,以及与地图控件的交互逻辑。 总而言之,通过使用Qt的地图和位置相关API,可以方便地实现离线地图和定位的功能。通过加载和显示离线地图数据,并获取和展示位置信息,可以为应用程序增加地图和定位的功能,提升用户体验。 ### 回答2: Qt 是一种流行的跨平台应用程序开发框架,它可以实现离线地图和定位功能。 要实现离线地图,可以使用 Qt 的 QML (Qt Quick) 技术来创建用户界面。首先,需要将离线地图数据以及相关元数据导入到应用程序中。可以使用一些开放源代码的地图数据集,比如 OpenStreetMap (OSM) 数据。将 OSM 数据转换为可用的地图矢量切片,然后利用 Qt 提供的图形绘制功能来绘制这些矢量切片。同时,通过使用离线地图数据,可以将地图数据存储在本地,从而用户无需联网也能够查看地图。此外,可以通过添加一些额外的功能来提高离线地图的用户体验,比如地点搜索、缩放和导航等。 要实现定位功能,可以使用 Qt 的位置服务模块。位置服务模块提供了一种简便的方法来获取设备的位置信息。可以使用 Qt 定位服务模块来获取设备的经纬度坐标,然后在地图上以标记的方式显示用户的当前位置。可以使用位置服务模块的 API 来获取设备的当前位置信息,同时还可以利用其它的功能,比如计算两点之间的距离和方位角等。定位功能可以与离线地图功能结合使用,帮助用户在地图上准确显示自己的位置,并根据需要进行导航。 总之,Qt 可以通过使用离线地图和定位服务模块来实现离线地图和定位功能。这使得开发者可以轻松创建具有离线地图和定位功能的应用程序,提供更好的用户体验和功能。 ### 回答3: Qt是一个功能强大的跨平台应用程序开发框架,可以用来实现离线地图和定位功能。 要实现离线地图功能,可以使用Qt提供的WebEngine模块。首先,需要准备一张离线地图数据,可以是由其他地图平台下载得到的离线瓦片地图数据。然后,使用QWebEngineView类创建一个Web视图,并通过调用其load()方法加载离线地图的HTML页面。在HTML页面中,使用OpenLayers或Leaflet等JavaScript库来显示和操作地图数据。通过JavaScript和Qt之间的交互,可以实现地图的缩放、漫游和标注等功能。 要实现定位功能,可以利用Qt提供的位置服务框架。首先,需要在应用程序中请求定位权限。然后,使用QGeoPositionInfoSource类访问设备的位置信息。通过调用其startUpdates()方法,可以开始获取位置更新,并通过slot函数接收和处理更新的位置信息。位置信息包括经度、纬度、高度和时间等。 在具体实现中,可以将地图显示和定位功能集成在一个Qt应用程序中。用户可以通过界面交互选择要显示的地图区域,通过手势操作或按钮点击来缩放和漫游地图。同时,可以通过获取当前位置信息,并在地图上显示出来。 总之,Qt提供了丰富的功能和工具,可以很方便地实现离线地图和定位功能。开发者只需根据具体需求,选择合适的组件和类来完成实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值