原文 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(, 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。

 天地图

网址: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还是不够的,【空间参考】—— 坐标系、比例尺、分辨率这些也直接关系着地图能否正常显示。

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

【其他】

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

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

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

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

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

ArcGIS for WPF 访问外部资源【进阶之构造URL】的更多相关文章

  1. ArcGIS for WPF 访问外部资源

    原文 http://www.cnblogs.com/wdysunflower/archive/2011/07/14/2105584.html ArcGIS for WPF 访问外部资源 应用背景: 因 ...

  2. springmvc:BeanNameViewResolver访问内部资源视图对象和访问外部资源视图对象

    <!-- 处理器映射器 --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerM ...

  3. WPF 访问外部的xaml文件

    原文:WPF 访问外部的xaml文件 今天做主题时,需要访问外部的xaml文件,方法: using (FileStream s = new FileStream("C:\\Control.x ...

  4. WPF Demo9外部资源文件

    <Window x:Class="Demos.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/ ...

  5. 密码太多记不住?SSO帮你轻松访问VDI及外部资源

    单点登录(SSO)有多种方式,简单来讲,SSO是一个允许用户使用单一登录访问多个资源的认证过程.使用云应用的VDI用户可能需要某种方式的认证访问桌面外部的应用.SSO只需要用户单次输入认证信息就可以访 ...

  6. kubernetes之Endpoint引入外部资源实践;

    1. 什么是Endpoint? 我们创建Service的时候会自动给我们创建一个同名的Endpoint资源,每一个同名的 Servie都有一个Endpoints资源,因为Service自己并不直接匹配 ...

  7. docker网络-如何让外部网络访问容器资源

    docker网络-如何让外部网络访问容器资源 安装httpd 服务: docker:/root# docker exec -it f63b2633d146 bash bash-4.1# yum ins ...

  8. 给tomcat配置外部资源路径(应用场景:web项目访问图片视频等资源)

    对于一个web项目来说,除了文字之外,图片,视频等媒体元素也是其重要的组成部分.我们知道,web项目中如果用到大量的图片.视屏的资源,我们 通常的做法是只在数据库中存储图片.视频等资源的路径,web项 ...

  9. WPF 访问资源中的Storyboard

    原文:WPF 访问资源中的Storyboard <UserControl.Resources> <Storyboard x:Key="testStoryboard" ...

随机推荐

  1. htpasswd.cgi 网页远程修改gerrit ht 认证的密码文件

    在搭建gerrit系统时,一般都会采用apache的.htacces 认证方法 但trac本身并不提供修改密码的功能,修改密码只能通过htpasswd/htpasswd2命令来进行,这的确是一件相当不 ...

  2. bzoj1750 [Usaco2005 qua]Apple Catching

    Description It is a little known fact that cows love apples. Farmer John has two apple trees (which ...

  3. html 表单初步学习

    <html> <head> <title> 静态页面</title> </head> <body> 这是一个静态页面<br ...

  4. Java Fuck Bignumber

    为了熟悉java , 开一套poj大数处理的题来写. ------------------------------------------------------------------- A: (1 ...

  5. 【布艺DIY】 零基础 做包包 2小时 就OK!_豆瓣

    [布艺DIY] 零基础 做包包 2小时 就OK!_豆瓣 [布艺DIY] 零基础 做包包 2小时 就OK!

  6. onethink 验证码二维码不显示的问题

    常规思路: 1 检查GD和FreeType.在项目根目录(index.php同级)下放一个php文件 <?php echo phpinfo(); ?> 访问此文件,查看GD和FreeTyp ...

  7. Hive 8、Hive2 beeline 和 Hive jdbc

    1.Hive2 beeline  Beeline 要与HiveServer2配合使用,支持嵌入模式和远程模式 启动beeline 打开两个Shell窗口,一个启动Hive2 一个beeline连接hi ...

  8. 一篇文章讲清楚android ImageView.ScaleType

    2016-01-10 刚开始android编程的时候, 关于ImageView.ScaleType网络上好多, 说实话没看懂. 本文就是为了讲清楚这个, 有用的话转走, 请注明原地址和作者. 典型的代 ...

  9. sqlserver2012一直显示正在还原(Restoring)和从单用户转换成多用户模式(单用户连接中)

    如果不需要还原,则使用: restore database test with recovery如果只需要还原,则使用: restore database test with norecovery U ...

  10. alarm函数可以定时

    貌似是可以的,不过感觉好像这样用不是很好,最好还是用回timer_settimer一些列函数吧,不过既然开了头,就看下alarm怎么用吧. 1. 所需头文件  #include<unistd.h ...