zoukankan      html  css  js  c++  java
  • MapBar和MapInfo中的比例尺[更新:MapBar比例尺是正确的]

    真搞不懂MapBar中的比例尺,今天发上来让大家说说这比例尺怎么个算的。可以先选择缩放级别然后点查看比例尺会有和百度地图中一样的比例尺,只是我搞不懂这比例尺怎么算的,发代码上来让大家讨论下。代码其实很简单,就那么几行代码重要的也只有三行吧。那4公里这个比例尺为例,首先是在缩放级别为8的情况下才是这个比例尺,按照给出的数组应该是第九个(这个数组可能是在该比例尺下分幅时每个图幅的间隔,单位可能时度,个人猜测),就是0.2,0.2*100*60/300=4,这就是比例尺算法,结果为4公里,其中0.2由上诉所得,300是每幅图片的宽度为300象素,100和60是本身提供的参数没有从任何地方获得。如果这样的话,那么0.2度*100*60/300象素=4公里?度/象素=公里?没有这个道理吧。而且度是实单位,象素是虚单位,即使把度化成了公里(0.2*111.3199338=22.26398676公里),把象素化成厘米(300/28.346=10.58厘米,因为图片为72分辨率的,72分辨率是英寸为单位的,化为厘米为单位就是28.346分辨率),22.26398676*100*60/10.58=12626,这就更不通了,不解,希望有朋友能够想出这里的原理。


    var Ud0=new Array(90,40,20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01,0.005);//可能是分割图幅间隔
    var v7CX=Ud0[myzm];//myzm是缩放级别
    var H8507=v7CX*100*60/300;//300是象素值
    H8507=(H8507<10)?(H8507).toPrecision(1):parseInt(H8507);//这个H8507即为最终显示出来的比例尺

    [更新:MapBar比例尺是正确的]
    MapBar中的度是以一个大概值来计算的,1度为100公里(如果按照WGS84坐标投影中所用的椭球体的话实际1度为111.3199338公里,所以这个比例尺也只能参考下,具体就要相差10%左右),这样仍然以4公里为例,0.2*100*60/300=4公里,0.2是度,100是公里/度,60和300都是象素。最关键的是60的由来,其实60是那个比例尺图片的宽度,看那4公里下面那根黑颜色的图片就是60象素的(这个我郁闷了很久了,把它换成了2.12厘米所以老是算不对)。这样的话,MapBar本身的博客地图的比例尺就不难解释了,因为它那图片是81象素的,所以比例尺应该是幅宽*100*81/300,这样算下来比例尺和百度地图中的比例尺是不一样的,可以分别去看下。结论是,MapBar中的比例尺正确,它的比例尺上的X公里表示的是这个文字下面那幅图片宽度所代表的长度,而不是1厘米或2厘米就是X公里。

    MapInfo中的比例尺:
        MapInfo中的比例尺刚开始实在无法理解,因为我用了截的图来进行计算的。看下面两幅图,一幅是在72分辨率下的截图,一幅是在96分辨率下输出的图,MapInfo中当时比例尺是1厘米比1千米,如果用72分辨率的截图那么是永远也算不正确的,应该按照96分辨率输出的图来进行计算。96分辨率的图实际宽为6.005厘米对应实际的距离为6000米(我取的比例尺的长度就是,6厘米对应6000米)粗略一算便是1厘米比1千米,如果按照72分辨率的算呢则是8.008厘米对6000米则比例尺为1厘米大概对0.749千米,和1厘米比1千米就不对应了。如果用象素算也是一样的,227象素在96分辨率下实际长度为6.0053厘米(227/37.8=6.0053,96分辨率即为37.8象素/厘米)。当然如果你用72分辨率算下来的比例尺除以(72/96=0.75)这个比例同样也可以得到真实的比例尺,象上面的0.749/0.75就约为1。所以在MapInfo中地图比例尺应以输出地图的长度对应实际长度才是正确的比例尺。
            

        ArcInfo中的比例尺,这个我还是不太明白,如果有明白的朋友可以告诉我一下,先谢谢了,呵呵。ArcInfo中的比例尺原理怎么好像和MapInfo的不大一样啊。

    RoverTang@罗孚传说
    E-mail:65985498[at]qq.com
    微博/微信:rovertang

  • 相关阅读:
    什么是 bean 的自动装配?
    什么是 Spring 的内部 bean?
    什么是 Spring 的 MVC 框架?
    Spring AOP and AspectJ AOP 有什么区别?
    解释 JDBC 抽象和 DAO 模块?
    volatile 类型变量提供什么保证?
    一个 Spring Bean 定义 包含什么?
    什么是 Spring MVC 框架的控制器?
    使用 Spring 访问 Hibernate 的方法有哪些?
    什么是 Callable 和 Future?
  • 原文地址:https://www.cnblogs.com/Tangf/p/322854.html
Copyright © 2011-2022 走看看