ArcGIS for WPF 访问外部资源【进阶之构造URL】
原文 http://www.cnblogs.com/wdysunflower/archive/2013/05/29/3039645.html
呵呵~好久没逛园子,没写博客了。
最近刚好又在弄GIS这块,有些收获跟大家分享一下,有些问题也希望能得到“知情人”的解答。
首先需要指出的是,“访问外部资源”实现的方式,在我之前的文章里已经写的比较清楚了:
【主题】
探索构造可用URL的方法及思路 。
(仅供大家研究、学习、分析使用)
【正文】
在 public override string GetTileUrl(int level, int row, int col)方法中,我们需要传出对应的一个url。
先来看看目前大家常用的一些地图,通过HttpWatch来抓取url,分析其瓦片存储分布规律,组合我们需要的url。
string url = string.Format(UrlFormat, _random.Next(ServerBeginNum, ServerEndNum), level, row, col);
其中能找出url规律的:
Google地图:
抓取到的数据:
在一篇资料上看到,其中mt(0~3)表示的是服务器,通过这种方式来分解服务器压力。
至于其他参数,除了hl=zh-CN&gl=CN大致能猜测跟语言和区域有关外,其他的就清楚了,尤其好奇末尾的“s=”是起什么作用的?
UrlFormat = "http://mt{0}.google.cn/vt/lyrs=m@213000000&hl=zh-CN&gl=CN&src=app&x={3}&y={2}&z={1}&s=";
百度地图:
抓取到的数据:
根据googleMap的规律猜测,q(1~8)即为不同的服务器。
对于其中的fm=44,也不甚理解?
UrlFormat = "http://q{0}.baidu.com/it/u=x={3};y={2};z={1};v=015;type=web&fm=44",
百度的行列坐标(中心为原点、常规的数学坐标系)与ArcGis、Google(左上角为原点、类似显示器分辨率分布)还有所不同,折腾了一下午。
其中负数部分用M作为前缀。

int zoom = level + MapData.LevelOffset;
int offsetX = (int)Math.Pow(, level);
int offsetY = offsetX - ;
int numX = col - offsetX;
int numY = -row + offsetY; string xstr = numX < ? "M" + (-numX) : numX.ToString();
string ystr = numY < ? "M" + (-numY) : numY.ToString();

使用其中的zoom、xstr、ystr构造url。
天地图
抓取到的数据:
同样t(0~7)应该也是代表服务器,它的url就更长了,部分参数更难以猜测其含义了。
不难发现它区分了“vec”和“cva”,而且都是成对出现的。
经过验证,原来一个链接的是地图图形本身,一个链接的是地图上显示的文字。
难以找出规律,按目录结构获取瓦片图片的:
搜狗地图:
抓取到的数据:
SOSO地图:
抓取到的数据:
Bing地图:
抓取到的数据:
目前对于难以找出规律的这部分,个人也还没找到解决办法,看上去也不怎么好弄。
期待高人发表见解。
至于其它地图,但凡符合规律的差不多按类似的方法都能正确显示出数据。
当然,光有url还是不够的,【空间参考】—— 坐标系、比例尺、分辨率这些也直接关系着地图能否正常显示。
不过目前我自己对这些概念也还是一知半解,以后有了心得再跟大家分享。
【其他】
在探索这些过程中,也发现了一些之前没接触过的地图:比如【高德地图】,很多地方也都有用到。
还有一个【中原地图】,貌似是只显示的香港地区。
【奇摩地图】,应该是雅虎地图的台湾版本。
【新浪地图】,一直没有图像显示,不知道为什么。
ArcGIS for WPF 访问外部资源【进阶之构造URL】的更多相关文章
- ArcGIS for WPF 访问外部资源
原文 http://www.cnblogs.com/wdysunflower/archive/2011/07/14/2105584.html ArcGIS for WPF 访问外部资源 应用背景: 因 ...
- springmvc:BeanNameViewResolver访问内部资源视图对象和访问外部资源视图对象
<!-- 处理器映射器 --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerM ...
- WPF 访问外部的xaml文件
原文:WPF 访问外部的xaml文件 今天做主题时,需要访问外部的xaml文件,方法: using (FileStream s = new FileStream("C:\\Control.x ...
- WPF Demo9外部资源文件
<Window x:Class="Demos.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/ ...
- 密码太多记不住?SSO帮你轻松访问VDI及外部资源
单点登录(SSO)有多种方式,简单来讲,SSO是一个允许用户使用单一登录访问多个资源的认证过程.使用云应用的VDI用户可能需要某种方式的认证访问桌面外部的应用.SSO只需要用户单次输入认证信息就可以访 ...
- kubernetes之Endpoint引入外部资源实践;
1. 什么是Endpoint? 我们创建Service的时候会自动给我们创建一个同名的Endpoint资源,每一个同名的 Servie都有一个Endpoints资源,因为Service自己并不直接匹配 ...
- docker网络-如何让外部网络访问容器资源
docker网络-如何让外部网络访问容器资源 安装httpd 服务: docker:/root# docker exec -it f63b2633d146 bash bash-4.1# yum ins ...
- 给tomcat配置外部资源路径(应用场景:web项目访问图片视频等资源)
对于一个web项目来说,除了文字之外,图片,视频等媒体元素也是其重要的组成部分.我们知道,web项目中如果用到大量的图片.视屏的资源,我们 通常的做法是只在数据库中存储图片.视频等资源的路径,web项 ...
- WPF 访问资源中的Storyboard
原文:WPF 访问资源中的Storyboard <UserControl.Resources> <Storyboard x:Key="testStoryboard" ...
随机推荐
- 导入Excel表格到SharePoint站点
在Excel中创建表 选中所有要导入的行,点击菜单"插入"->"表格" 如果数据内容包含表头,选择"我的表格包含表头". 选择菜单 ...
- java设计模式--行为型模式--模板方法
什么是模板方法,这个有待考虑,看下面: 模板方法 概述 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中. TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步 ...
- AJAX实例入门
一.开门见山 这些时间,瞎子也看得见,AJAX正大踏步的朝我们走来.不管我们是拥护也好,反对也罢,还是视而不见,AJAX像一阵潮流,席转了我们所有的人. 关于AJAX的定义也好,大话也好,早有人在网上 ...
- Redhat Enterprise Linux中如何关闭SELinux?
转自http://www.cnitblog.com/lywaml/archive/2005/06/21/468.html 红帽企业 Linux 4 包括了一个 SELinux 的实现.SELinux ...
- mysql 中 LIMIT的简单用法
mysql--语法: SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset --举例: select * from table l ...
- 《Two Days DIV + CSS》读书笔记——CSS选择器
1.1.2 CSS选择器 CSS 选择器最基本的有四种:标签选择器.ID 选择器.类选择器.通用选择器. [标签选择器] 一个完整的 HTML 页面由很多不同的标签组成,而标签选择器,则是决定哪些标签 ...
- OpenstackHigh-level-service
1,yum -y install openstack-cinder;
- 认识Ant
Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一. ...
- PC--CSS技巧
1.图片不存在的时候,显示一个默认图片 <img src=”01.jpg” onerror=”this.src=’02.jpg'” /> 2.CSS强制图片自适应大小 img {width ...
- NET中级课--浅谈委托,事件,异步调用,回调等概念
直接说题. 委托 首先明确它是什么,其实就是一个类,定义一个委托即定义一个类,那么它是什么类?用来说明方法的类型的类.字段有类型,那么方法其实也有类型,就是委托. 委托是某 ...