PGIS下载离线地图 SQLite+WPF

项目是超高分辨率屏幕墙,实时在线加载PGIS地图速度会比较慢,造成屏幕大量留白。于是使用地图缓存,事先把这个区块的地图全部down下来,使用Sqlite数据库保存。留存。

//Task taskDown = new Task(DownTiles);
//taskDown.Start();

private void DownTiles()
        {
            double maxX = 138.796586;
            double maxY = 24.371022;
            double minX = 138.447725;
            double minY = 24.086215;
            double X0 = -180;
            double Y0 = 90;
            string tempUrl = "";
            HttpWebRequest req = null;
            Stream stream = null;

            int bufferLen = 1024 * 1024;
            int actual;
            byte[] buffer = new byte[bufferLen];

            for (int i = 9; i < 21; i++)//Level
            {
                int cmin = Math.Abs(Convert.ToInt32(Math.Floor((X0 - minX) / (256 * MapMethods.GetResoulution(i)))));
                int cmax = Math.Abs(Convert.ToInt32(Math.Floor((X0 - maxX) / (256 * MapMethods.GetResoulution(i)))));
                int rmin = Math.Abs(Convert.ToInt32(Math.Floor((Y0 - maxY) / (256 * MapMethods.GetResoulution(i)))));
                int rmax = Math.Abs(Convert.ToInt32(Math.Floor((Y0 - minY) / (256 * MapMethods.GetResoulution(i)))));
                for (int r = rmin; r < rmax; r++)//循环行
                {
                    for (int c = cmin; c < cmax; c++)//循环列
                    {
                        //Thread.Sleep(100);
                        tempUrl = GetTileUrl(i, r, c);
                        req = (HttpWebRequest)WebRequest.Create(tempUrl);
                        stream = req.GetResponse().GetResponseStream();

                        MemoryStream memoryStream = new MemoryStream();

                        while ((actual = stream.Read(buffer, 0, bufferLen)) > 0)
                        {
                            memoryStream.Write(buffer, 0, actual);
                        }
                        memoryStream.Position = 0;

                        SaveTile(i, r, c, StreamToBytes2(memoryStream));

                    }
                }
            }
        }

        private byte[] StreamToBytes2(MemoryStream input)
        {
            byte[] bytes = new byte[input.Length];
            input.Read(bytes, 0, bytes.Length);
            return bytes;
        }
时间: 2024-10-23 22:43:42

PGIS下载离线地图 SQLite+WPF的相关文章

Android 百度地图 SDK v3_3_0 (三) ---离线地图

转发请标明出处:http://blog.csdn.net/tanzuai/article/details/43793455 本篇博客要实现的功能 先上效果图: 下面我们来介绍怎么一一实现 1.功能介绍 对于官方开发指南对于离线地图的教程,提供了两种方案: 第一,手动导入,先将从官网下载的离线包解压,把vmp文件夹拷入SD卡根目录下的BaiduMapSDK文件夹内. 第二,接口下载方法如下:mOffline.start(cityid);还比较靠谱,我相信这是大家最喜欢的. 2.百度地图离线相关AP

百度谷歌离线地图解决方案(离线地图下载)

离线地图解决方案,除了买地图数据,使用专业的ArcGIS来做外,也可以使用GMap.Net来做. 关于GMap的开发教程,可以看我以前的文章:基于GMap.Net的地图解决方案 使用了GMap一年了,也有了一些积累,开发了一个可以下载百度.谷歌.高德.腾讯SOSO的地图下载器,各个地图加载显示如下: 百度普通地图: 百度混合地图: 谷歌普通地图: 谷歌混合地图: 从目前的情况来看,百度的普通的地图数据是更新最快的,但是有些小地方没有卫星地图,而谷歌几乎所有的地方都有卫星地图,但是谷歌中国的地图更

详解Mobile Atlas Creator1.9.16离线地图下载神器之下载自定义图源

Mobile Atlas Creator1.9.16离线地图下载神器之下载自定义图源 本文详细的介绍了如何使用Mobile Atlas Creator来下载自定义图源,Mobile Atlas Creator是用于下载图源的工具,本文测试的是高德地图,其他地图也差不多类似. 1.关于Mobile Atlas Creator的介绍 Mobile Atlas Creator是用于下载图源的工具,此工具免费,相信大家也找过不少相关的软件,但是大多数都是收费的.很多制作手机离线地图的朋友也会用到此工具来

谷歌离线地图包下载

一键离线地图发布(工具软件下载) 使用教程 百度离线地图发布  教程 手机离线地图发布--Oruxmaps制作发布高清卫星离线地图 谷歌离线地图发布API解析 说明: 1. 当前版本支持 谷歌电子/卫星地图瓦片.高德地图.阿里云地图.超图.腾讯地图等(只需下载该地图源的瓦片拷贝到指定目录即可): 2. 效果预览演示地址:http://www.bigemap.com/google 后台编辑体验地址:http://www.bigemap.com/google/login.html 可随意在后台添加/

MBTiles 离线地图演示 - 基于 Google Maps JavaScript API v3 + SQLite

MBTiles 是一种地图瓦片存储的数据规范,它使用SQLite数据库,可大大提高海量地图瓦片的读取速度,比通过瓦片文件方式的读取要快很多,适用于Android.IPhone等智能手机的离线地图存储.详情请参考:MBTiles移动存储简介.       在WEB地图介绍中我们看到,瓦片是参照了他们的z/x/y 形式坐标,在磁盘存储上,他们通常存储在以z.x为名字上的目录中,这样就有一个瓦片文件路径是0/0/0.png. 同样用谷歌或百度地图JS API很方便调用.但是有个缺点就是文件多了,暂用磁

ArcGIS移动客户端离线地图的几种解决方案[转]

原文地址:http://blog.chinaunix.net/uid-10914615-id-3023158.html 移动GIS中,通常将数据分为两大类:basemap layer和operational layer.前者是指漫游或导航时起参考作用的图层,这些图层内容通常不会变化,只起到视觉辅助作用,称为底图图层:后者是指存储GIS数据的图层,比如可通过这些图层来提供属性/空间查询操作,或者对其内容进行编辑,然后与服务器端进行同步,称为业务图层. 目前ArcGIS移动产品有5种,基于Windo

百度离线地图开发

离线地图资源,完全可脱离互联网访问,正在发愁局域网或内网使用地图定位的小伙伴们福音来了......哈哈哈哈哈!!! 支持各大主流浏览器 IE7.8.9.10.11,火狐.360浏览器.谷歌浏览器 如果这正是你需要的功能,或者项目上需要内网使用并且用到地图的,欢迎咨询,这是我工作项目客户要求内网使用,然后自己通过研究重改的东西,本人是程序猿,如果你也是那就根据下方方式联系吧!!! 电话:13144039336 杨工 QQ:349686124 如果不想拷贝QQ的,兄弟请点击这里  点击下载视频介绍

GMap.net离线地图

enjoyeclipse的 深入理解最强桌面地图控件GMAP.NET ---离线地图 http://www.cnblogs.com/enjoyeclipse/archive/2013/01/29/2882254.html GMap.Net开发之在WinForm和WPF中使用GMap.Net地图插件 http://www.cnblogs.com/luxiaoxun/p/3463250.html

GMap.net 离线地图问题

转载自百度知道:请问一下,使用Gmap.net 怎么导入离线地图我使用[http://www.cnblogs.com/enjoyeclipse/archive/2013/01/29/2882254.html]所提供的方式导出地图数据但是在[C:\Users\用户名<你的计算机用户名>\AppData\Local\GMap.NET\TileDBv5\en]这个文件夹下看到的Data.gmdb永远是256m用这个Data.gmdb文件也无法导入请问导出地图数据的话还需要注意哪些地方? 离线地图导出