📄 index.html
字号:
<div class="content_main">
<P>Google maps切割方法 <BR>
<P>1. 缩放等级与图幅数 <BR>
<P>Google maps的缩放等级是0-17共18个等级,比例尺与缩放等级是成反比的(比例尺越大地图越详细),其第17 等级只有一幅世界地图,某一等级下所含地图数的计算公式为2^(17-n)^2(n为缩放等级)。 <BR>
<P>2. 图幅生成与编号 <BR>
<P>可以假设Google maps在每一缩放等级下的地图上都建立了一个坐标系,坐标原点为(西经180度,北纬90度),正方向分别为向东向南,经度跨度为360度,纬度跨度为180度。一般情况下,为便于理解可以这么认为,若在缩放等级n的情况下,共需生成(2^(17-n))^2副图片,其编号形如(x,y)(0<=x<=2^(17-n)-1,0<=y<=2^(17-n)-1)。 <BR>
<P>但由于制图区域的范围、形状和地理位置等的不同需要选择不同的投影方式,以减少投影成平面地图后的误差值。在世界地图中常用墨卡托投影绘制世界航线图、世界交通图与世界时区图;我国出版的世界地图多采用等差分纬线多圆锥投影,选用这个投影,对于表现中国形状以及与四邻的对比关系较好,但投影的边缘地区变形较大。根据不同的需要还有许多其它的投影方式,在此不再赘述,当然国家基本比例尺地形图的投影、分幅等,是由国家测绘主管部门研究制订,不容许任意改变的,另外编制小区域大比例尺地图,无论采用什么投影,变形都是很小的。 <BR>
<P>由于Google是面向全世界的,故其不同比例尺下并且相同比例尺下不同地区不同国家其投影方式都是不同的,我猜测为使整个世界范围内的地图达到相对的精确是以牺牲海洋两极 <BR>等人烟稀少地图的变形为代价的,当然这也只是针对小比例尺下的地图,随着比例尺的不断放大这种投影上的差距会越来越小。 <BR>
<P>3. 结论 <BR>
<P>每个切割的小图片是256*256(像素),常识来判断每个小图片代表的实际区域长宽之比应为2:1,但由于投影不同的存在,其实它是1:1 的,至于中间过程怎么处理的我也没搞明白。 <BR>关于51ditu <BR>
<P>1. 缩放等级 <BR>
<P>使用的比例级别总共有0-12级共13个级别,他们和实际的比例尺的对应关系分别是: <BR>
<P>0级 -------------------- 1:2,500 <BR>
<P>1级 -------------------- 1:5,000 <BR>
<P>2级 -------------------- 1:10,000 <BR>
<P>3级 -------------------- 1:25,000 <BR>
<P>4级 -------------------- 1:50,000 <BR>
<P>5级 -------------------- 1:100,000 <BR>
<P>6级 -------------------- 1:250,000 <BR>
<P>7级 -------------------- 1:500,000 <BR>
<P>8级 -------------------- 1:1,000,000 <BR>
<P>9级 -------------------- 1:2,500,000 <BR>
<P>10级 ------------------- 1:5,000,000 <BR>
<P>11级 ------------------- 1:10,000,000 <BR>
<P>12级 ------------------- 1:50,000,000 <BR>
<P>简单的说,0级地图最详细,12级地图最简单。 <BR>
<P>以上是其官方发布的数据。 <BR>
<P>2. 与Google的比较 <BR>
<P>51地图和Google maps都开放了API,有人结合两者的API 把它们集成到一块,发现两者的经纬度吻合的非常好,我想这也主要是在大比例尺地图下只要两者的切割方法相同就可以做到的,故为了以后能更好的兼容并向领先者学习­我们也争取达到这种比较好的吻合效果。 <BR>
<P>但分析两者的切割图片发现Google的是256*256(像素),而51ditu是128*128(像素)。如下图(1)、图(2)两幅图(两幅图均没有包含到最南端的曾母暗沙): 由于两者是采用的不同的投影方式,故地图在外形上有着比较大的差别,但应该注意的是每一小片上只是面积上的差别,通俗点来讲要有都有要没有都没有;由于两者每一­幅图片是不等的,在实际中Google的每一图幅的面积应该是51ditu的4倍,但我们将两者放在同样大小的比例中发现两者吻合的比较好,由此也可推测随着比例的放大吻合程度将会更好,也就是说两者的切割方法是相同的,只不过导出图片的­大小不同而已。 <BR>
<P>3. 坐标系统 <BR>
<P>同样可以假设51ditu在每一缩放等级下的地图上也都建立了一个坐标系,不同的是其坐标原点为(西经11.25度,北纬0度),正方向分别为向东向北,跨度范围基本上就是覆盖中国的国土面积,即经度跨度为【67.5,135】,纬度跨度为【0,56.25】,而中国领土北起漠河以北的黑龙江江心(北纬53°30′),南到南沙群岛南端的曾母暗沙(北纬4°),跨纬度49度多;东起黑龙江与乌苏里江汇合处(东经135°05′),西到帕米尔高原(东经73°40′),跨经度60多度。 <BR>
<P><img src="images/Google.PNG" border="0" onload="javascript:DrawImage(this);" alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" />
<P>图(1) <BR>
<P><img src="images/51ditu.PNG" border="0" onload="javascript:DrawImage(this);" alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><BR>
<P>图(2) <BR>拟采用的方案 <BR>
<P>1. 方案简述 <BR>
<P>由于Google maps并没有提供大比例尺下的中国地图,故将其作为参照系不是一个很好的选择,为便于以后的比较,我们采用与51ditu相同的坐标系统,即编号方式。 <BR>
<P>如上图(2)所示,小图片12-1-7.png,是缩放等级12之下的一副图片,1是纬度方向上的序号,7是经度方向上的序号,从以上分析我们得知,缩放等级1­2之下,整个地球的切图共是*张,在投影影响的基础上,每个图片的跨度为11.25*11.25度,图片12-1-7.png左下角点的经纬度为(67.5,11.25),很明显(67.5+11.25)/11.25=7,11.25/11.25=1。这样我们就得到了切割图片序号的计算公式,一般化如下:
<P>在缩放等级为n之下,切割图片的边长(设为d)d=360度/2^(17-n),若小图片左下角坐标为(x,y),并设经度方向上的序号为bx, 纬度方向上的序号为by,可得到其表达式为bx=(x+11.25)/d;by=y/d.。 <BR>
<P>由于我们只是针对中国范围,故取经度跨度为【67.5,135】,纬度跨度为【0,56.25】,在切割时可以适当延展,延展单位以11.25为准。 <BR>
<P>2. 命名规则、存储方案 <BR>
<P>在最大比例尺即缩放等级为0之下,取经度跨度为【67.5,135】,纬度跨度为【0,56.25】,可以计算出共需切割的图片数量为2^17*(67.5 /360)*2^17*(56.25/360)=131072*(3/16)*131072*(5/32)=112,442,880.缩放等级n之下,所需图片数量的计算公式为2^(17-n)*(67.5/360)*2^(17-n)*(56.25/360)=15*2^(25-2n)(0<=n<=12) <BR>
<DIV>以下为各比例尺之下的对应关系 </DIV>
<P>
<TABLE cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2><STRONG>缩放级别</STRONG><STRONG></STRONG></FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2><STRONG>比例尺</STRONG></FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2><STRONG>图幅数</STRONG></FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2><STRONG>存储空间(4K/</STRONG><STRONG>幅)</STRONG></FONT></DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>0级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:2,500</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>503,316,480</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1920G</FONT></DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:5,000</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>125,829,120</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>480G</FONT></DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>2级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:10,000</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>31,457,180</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>120G</FONT></DIV></TD></TR>
<TR>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>3级</FONT></DIV></TD>
<TD vAlign=top width="25%">
<DIV align=center><FONT size=2>1:25,000</FONT></DIV></TD>
<TD vAlign=top width="25%">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -