霸气侧漏 发表于 2013-3-10 16:24:51

用TCP Server给Global Mapper提供图块数据


Global Mapper V12之后就可以添加数据源,但是这个功能过于简单。。。
该方案的原理很简单,编程制作一个简单的TCP Server,接收GM的请求,翻译后转发出去,获得数据后再发回GM。
GM请求很简单,如下:
GET /12/3290/1579.jpg HTTP/1.1
User-Agent: app_name
Host: XXXXXX
Connection: Keep-Alive
Cache-Control: no-cache
“/12/3290/1579” 这部分就是图块地址,具体格式是/Zoom/X/Y。提取这部分后,就可以按需要自由构造更复杂的URL,比如计算经纬度、算四叉树编码(quadkey)。
图块服务一般都使用多个服务器来平衡访问量,在生成URL时,可以模拟这种方式。
此外,对图块服务器的请求有必要加上报头,可以用Fiddler或是HTTPWatch之类的工具观察通过浏览器使用地图时的请求报头。
GM发请求是同步模式,若请求失败会重发,成功收到数据或是重发失败5次,才会发出下一个新请求。服务器下载到图块后,用字节流的方式把图块数据发给GM。
GM图块请求的顺序是依次Y+1,填满区域宽度后X+1,就像打字,打满一行后换行。插图中的程序“预测”后两个图块地址,异步下载,一次发出三个请求,把预先下载的图块存档,GM发出请求时,从本地文件读出数据发给GM,这样虽然会多下几个图块,但提高了一些效率。

页: [1]
查看完整版本: 用TCP Server给Global Mapper提供图块数据