ArcGIS for WPF 访问外部资源【进阶之构造URL】

简介: 原文 http://www.cnblogs.com/wdysunflower/archive/2013/05/29/3039645.html 呵呵~好久没逛园子,没写博客了。 最近刚好又在弄GIS这块,有些收获跟大家分享一下,有些问题也希望能得到“知情人”的解答。

原文 http://www.cnblogs.com/wdysunflower/archive/2013/05/29/3039645.html

呵呵~好久没逛园子,没写博客了。

最近刚好又在弄GIS这块,有些收获跟大家分享一下,有些问题也希望能得到“知情人”的解答。

首先需要指出的是,“访问外部资源”实现的方式,在我之前的文章里已经写的比较清楚了:

ArcGIS for WPF 访问外部资源

 

【主题】

探索构造可用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地图:

网址:http://ditu.google.cn/

抓取到的数据:

在一篇资料上看到,其中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=";

 

百度地图:

网址:http://map.baidu.com/

抓取到的数据:

根据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(2, level);
 int offsetY = offsetX - 1;
 int numX = col - offsetX;
 int numY = -row + offsetY;

 string xstr = numX < 0 ? "M" + (-numX) : numX.ToString();
 string ystr = numY < 0 ? "M" + (-numY) : numY.ToString();
复制代码

使用其中的zoom、xstr、ystr构造url。

 

 天地图

 网址:http://www.tianditu.cn

抓取到的数据:

同样t(0~7)应该也是代表服务器,它的url就更长了,部分参数更难以猜测其含义了。

不难发现它区分了“vec”和“cva”,而且都是成对出现的。

经过验证,原来一个链接的是地图图形本身,一个链接的是地图上显示的文字。

UrlFormat = "http://t{0}.tianditu.cn/vec_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=c&TILEMATRIX={1}&TILEROW={2}&TILECOL={3}&FORMAT=tiles";

UrlFormat = "http://t{0}.tianditu.cn/cva_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=c&TILEMATRIX={1}&TILEROW={2}&TILECOL={3}&FORMAT=tiles";

 

难以找出规律,按目录结构获取瓦片图片的:

搜狗地图:

网址:http://map.sogou.com/

抓取到的数据:

 

SOSO地图:

网址:http://map.soso.com/

抓取到的数据:

 

Bing地图:

网址:http://cn.bing.com/ditu/

抓取到的数据:

 

目前对于难以找出规律的这部分,个人也还没找到解决办法,看上去也不怎么好弄。

期待高人发表见解。

 

至于其它地图,但凡符合规律的差不多按类似的方法都能正确显示出数据。

当然,光有url还是不够的,【空间参考】—— 坐标系、比例尺、分辨率这些也直接关系着地图能否正常显示。

不过目前我自己对这些概念也还是一知半解,以后有了心得再跟大家分享。

 

【其他】

在探索这些过程中,也发现了一些之前没接触过的地图:比如【高德地图】,很多地方也都有用到。

还有一个【中原地图】,貌似是只显示的香港地区。

奇摩地图】,应该是雅虎地图的台湾版本。

新浪地图】,一直没有图像显示,不知道为什么。

还有一些校园地图,比如【复旦大学】【清华大学】【重庆大学】【华中科技大学】【国立台湾大学

目录
相关文章
|
1月前
|
网络协议 开发工具 Android开发
应用研发平台EMAS产品常见问题之接入httpdns后 访问重定向的url访问有问题如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
1月前
|
Web App开发 测试技术 Python
使用 Python 结合 Selenium 访问一个 url
使用 Python 结合 Selenium 访问一个 url
26 0
|
2月前
|
C#
浅谈WPF之样式与资源
WPF通过样式,不仅可以方便的设置控件元素的展示方式,给用户呈现多样化的体验,还简化配置,避免重复设置元素的属性,以达到节约成本,提高工作效率的目的,样式也是资源的一种表现形式。本文以一个简单的小例子,简述如何设置WPF的样式以及资源的应用,仅供学习分享使用,如有不足之处,还请指正。
42 0
|
3月前
|
DataWorks 对象存储 数据安全/隐私保护
dataworks多个业务流程上传同名资源到同一个oss url会有什么问题?
【1月更文挑战第20天】【1月更文挑战第98篇】dataworks多个业务流程上传同名资源到同一个oss url会有什么问题?
111 1
|
4月前
|
存储 NoSQL Redis
一个网站有很多页面url,做一个URL排行榜功能。排行根据url的访问次数pv排行
一个网站有很多页面url,做一个URL排行榜功能。排行根据url的访问次数pv排行
31 2
|
6月前
|
C#
2000条你应知的WPF小姿势 基础篇<57-62 依赖属性进阶>
2000条你应知的WPF小姿势 基础篇<57-62 依赖属性进阶>
20 0
|
6月前
|
前端开发 JavaScript
Spartacus base-url 访问 - CSR 端需要修改的配置
Spartacus base-url 访问 - CSR 端需要修改的配置
41 0
|
8月前
|
域名解析
访问 URL 报错 500 Internal Privoxy Error
访问 URL 报错 500 Internal Privoxy Error
354 0
|
9月前
|
JSON 前端开发 安全
ajax中实现访问url已阅即焚的解决方案(url动态参数、变量加密、常量不变、php加密解密、API访问验证方式)
ajax中实现访问url已阅即焚的解决方案(url动态参数、变量加密、常量不变、php加密解密、API访问验证方式)
181 0
|
9月前
|
前端开发 JavaScript 关系型数据库
宝塔设置PHP定时任务实战记录(定时任务、ajax异步刷新API、shell脚本、访问url)
宝塔设置PHP定时任务实战记录(定时任务、ajax异步刷新API、shell脚本、访问url)
471 0

热门文章

最新文章