简易版谷歌系瓦片下载(天地图为例)

2024-09-04 12:58

本文主要是介绍简易版谷歌系瓦片下载(天地图为例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题来源

项目需要瓦片作为离线底图,所以便写个简易的方法。大神们可以在这个基础上改进。

代码

package tile;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;public class test {/*** 远程文件下载* @param url 下载地址* @param file 保存文件地址*/public static boolean download(URL url, File file) throws IOException {boolean flag = true;DataOutputStream dos = null;DataInputStream dis = null;try {if(!file.getParentFile().exists()) file.getParentFile().mkdirs();HttpURLConnection conn = (HttpURLConnection) url.openConnection();dos = new DataOutputStream(new FileOutputStream(file));dis = new DataInputStream(conn.getInputStream());byte[] data = new byte[2048];int i = 0;while ((i = dis.read(data)) != -1) {dos.write(data, 0, i);}dos.flush();} catch (IOException e) {flag = false;throw e;} finally {if(dis != null) dis.close();if(dos != null) dos.close();}return flag;}/*** 计算分辨率* @param maxLevel 最大级别*/public static double[] getResolutions(int maxLevel){double max = 360.0/256.0;double[] resolutions = new double[maxLevel+1];for(int z=0;z<=maxLevel;z++) resolutions[z] = max/Math.pow(2, z);return resolutions;}public static void main(String[] arg) throws IOException{double[] re = getResolutions(18);double[] extent = {106.54,21.59,108.26,23.20};for(int z=0;z<18;z++){int totalX = (int)Math.ceil(360.0/(re[z]*256.0)); //列数向上取整int totalY = (int)Math.ceil(180.0/(re[z]*256.0)); //行数向上取整 */	//起始结束列int sX = (int)Math.floor(((extent[0] + 180) / 360) * totalX);int eX = (int)Math.floor(((extent[2] + 180) / 360) * totalX);//起始结束行int sY = (int)Math.floor(((90 - extent[3]) / 180) * totalY);int eY = (int)Math.floor(((90 - extent[1]) / 180) * totalY);for(int y=sY;y<=eY;y++){for(int x=sX;x<=eX;x++){String urlstr = "http://t3.tianditu.com/DataServer?T=cva_c&x="+x+"&y="+y+"&l="+z; //天地图服务器t0-t8间选一个System.out.println(urlstr);String path = "D:/打包/"+z+File.separator+y+File.separator+x+".png";File file = new File(path);URL url = new URL(urlstr);download(url,file);}}}}
}

注意

所谓谷歌系,指的是原点在左上角,满足长宽比1:2的地图。若是如OSM等正方形,请自行改变。

这篇关于简易版谷歌系瓦片下载(天地图为例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1136088

相关文章

Linux实现简易版Shell的代码详解

《Linux实现简易版Shell的代码详解》本篇文章,我们将一起踏上一段有趣的旅程,仿照CentOS–Bash的工作流程,实现一个功能虽然简单,但足以让你深刻理解Shell工作原理的迷你Sh... 目录一、程序流程分析二、代码实现1. 打印命令行提示符2. 获取用户输入的命令行3. 命令行解析4. 执行命令

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

前端下载文件时如何后端返回的文件流一些常见方法

《前端下载文件时如何后端返回的文件流一些常见方法》:本文主要介绍前端下载文件时如何后端返回的文件流一些常见方法,包括使用Blob和URL.createObjectURL创建下载链接,以及处理带有C... 目录1. 使用 Blob 和 URL.createObjectURL 创建下载链接例子:使用 Blob

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

Python下载Pandas包的步骤

《Python下载Pandas包的步骤》:本文主要介绍Python下载Pandas包的步骤,在python中安装pandas库,我采取的方法是用PIP的方法在Python目标位置进行安装,本文给大... 目录安装步骤1、首先找到我们安装python的目录2、使用命令行到Python安装目录下3、我们回到Py

使用Folium在Python中进行地图可视化的操作指南

《使用Folium在Python中进行地图可视化的操作指南》在数据分析和可视化领域,地图可视化是一项非常重要的技能,它能够帮助我们更直观地理解和展示地理空间数据,Folium是一个基于Python的地... 目录引言一、Folium简介与安装1. Folium简介2. 安装Folium二、基础使用1. 创建

使用国内镜像源优化pip install下载的方法步骤

《使用国内镜像源优化pipinstall下载的方法步骤》在Python开发中,pip是一个不可或缺的工具,用于安装和管理Python包,然而,由于默认的PyPI服务器位于国外,国内用户在安装依赖时可... 目录引言1. 为什么需要国内镜像源?2. 常用的国内镜像源3. 临时使用国内镜像源4. 永久配置国内镜

Python如何快速下载依赖

《Python如何快速下载依赖》本文介绍了四种在Python中快速下载依赖的方法,包括使用国内镜像源、开启pip并发下载功能、使用pipreqs批量下载项目依赖以及使用conda管理依赖,通过这些方法... 目录python快速下载依赖1. 使用国内镜像源临时使用镜像源永久配置镜像源2. 使用 pip 的并

jdk21下载、安装详细教程(Windows、Linux、macOS)

《jdk21下载、安装详细教程(Windows、Linux、macOS)》本文介绍了OpenJDK21的下载地址和安装步骤,包括Windows、Linux和macOS平台,下载后解压并设置环境变量,最... 目录1、官网2、下载openjdk3、安装4、验证1、官网官网地址:OpenJDK下载地址:Ar