由Greenwich想起的
Confach 发表于 November 10, 2005 5:14 pm
版权信息 :严禁转载, 若想推荐或收藏,请用链接的形式.
网址:http://www.36sign.com/blog/me/thinking-from-greenwich.html
还记得前几个月写了一些东西,但是后来使用者告诉我里面的时间不对。原来是我采用的是GMT Daylight Time时间,但是GMT Daylight Time和我们使用的时间GMT是有一些区别的。 那么什么是GMT时间呢?GMT是GREENWICH MEAN TIME的缩写。说到这里,英国人经常会说GMT为 “GREENWICH MEANS TIME”,这就是英国人特有的幽默。你认为如何呢。 GREENWICH,中文翻译为格林尼治,如果对地理熟悉的人应该知道他是伦敦东南角的一个小镇。为什么格林尼治这么特殊?我想这应该和他的特殊地理位置有关系。严格的说,穿过格林尼治天文台的经线是世界公认的“本初子午线”。这就决定了他的重要性。那么这个又和GMT有什么关系?记得北京时间GMT+8吗,说到这里,就可以看出其关系了。但是GMT+8是什么意思?地球以本初子午线分为东西两个半球(记住,这里是东西,而不是南北),每个半球各分为12个时区。所以就有来了GMT -1 到GMT -12,GMT+1 到GMT+13的说法了。我不知道为什么会有GMT+13,有待继续研究。根据这个你可以知道各个时区的差别。比如说北京时间和纽约的时间相差多少,非常简单,北京时间是GMT+8,而纽约的时间是GMT-5,所以相差13 小时,也就是说我们我们这边是早上9点,那么那边是晚上8点。不知道我说的对不对。既然如此,格林尼治已经成为时间的一个代名词。我没有去过格林尼治,但我相信在格林尼治天文台那里肯的会有时间来供大家核对的。就如中国核对北京时间一样。 据了解,也查过一些资料,格林尼治和航海有非常大的关系。提到航海,就不得不提经度和纬度者两个概念。有了这两个家伙,我才知道我的船停在大西洋的某个角落。想知道上海的经度和纬度估计是多少吗,那我告诉你吧,大约是北纬31.24553,东经121.47870。这里令我感到遗憾的是我不知道他们怎么算,但是功夫不服有心人,查了N多资料,总算知道了。 首先介绍经度和纬度的概念。 纬度,英文是Latitude,是指某点与地球球心的连线和地球赤道面所成的线面角,其数值在0至90度之间。位于赤道以北的点的纬度叫北纬,记为N,位于赤道以南的点的纬度称南纬,记为S。纬度数值在0至30度之间的地区称为低纬地区,纬度数值在30至60度之间的地区称为中纬地区,纬度数值在60至90度之间的地区称为高纬地区。当初,那帮航海家按照太阳和月亮的高度角可以推算出某一点的纬度。厉害之极。 再看经度,英文是longitude。是地球上一个地点离一根被称为本初子午线的南北方向走线以东或以西的度数。本初子午线的经度是0°,地球上其它地点的经度是向东到180°或向西到180°。不象纬度有赤道作为自然的起点,经度没有自然的起点,做为本初子午线的那条线是人选出来的。 看了经度的定义,你有什么感觉。我倒是觉得挺玄乎的。为什么,看了最后一句话,不象纬度有赤道作为自然的起点,经度没有自然的起点,做为本初子午线的那条线是人选出来的。看来经度是自己定义出来的。继续参考了一些资料,原来那帮航海家为了如何测定经度上头乐了大脑。恐怕达.枷玛,哥伦布,麦哲伦都在这里折服了。 在1707年10月,4艘英国海军的船只定位混乱,所以在西西里岛附近相撞,2000多人死亡,这实属震惊世界的悲据。基于此,当时的英国会议成立一个委员会,称为“经度委员会”,来寻找其解决方案,换句话说,就是寻求简单的方法来计算经度。据说当时悬赏2万英镑来做这件事情。不过在当时这个数目可就相当于如今的一百万。厉害。 可惜,消息一出,成千上万的方法就出来了,但是都是夸夸奇谈,异想天开。直至过了N多年后,N在这里应该是几十年吧,我也不是太清楚,才找到解决方案。这个Guy既不是天文学家,也不是数学家,而是一个钟表匠人,他的名字叫John Harrison。 原来,同一瞬间位于不同的经度上的地方,有着不同的时间。后来人们推算出,时间相差一分钟,经度相差0.25度。0.25度,我怎么不知道呢?所以为了精确计算出经度,Harrison花了29年的时间,用机械齿轮制作除了四代不需要钟摆的计时器。结果,这个计时器在62天的航海上居然只有5秒的误差。强!恐怕我手机上的时钟也不止5秒吧。有付出,就有回报。Harrison在80岁的时候得到了巨额奖金。 找了张图给大家看看 既然说到了格林尼治天文台,就说说里面的一些人物吧。第一任台长是John Flamsteed。为了绘制完整的星空图,付出了毕生精力。由于当时条件插,其身体状况也是不尽人意。由于经济水平有限,需要外出打工赚一些津贴。还有,就是晚婚,没有子女。最后自己出版了一本书籍,据说出版了400本,而自己就买了300本。声称是为真理做出的牺牲。 其次,就是哈雷。这个人物真是大名鼎鼎,哈雷彗星就是此人发现的。当时在牛津大学读书的时候,只有19岁,漂洋过海,背井离乡,到了南半球的一个小岛绘制341可恒星的位置。也是一个厉害人物。 对于他们,我们后人给予他们崇高的赞扬,因为他们给我们留下了宝贵的资源,为人类做出了巨大的贡献。 那么,如何将这些用到实际生活中呢?我用Microsoft Mappoint来求。代码如下: Public Sub CalcPos() Static locNorthPole As MapPoint.Location Static locSantaCruz As MapPoint.Location ‘ Center of western hemisphere Static dblHalfEarth As Double ‘ Half circumference of the earth (as a sphere) Static dblQuarterEarth As Double ‘ Quarter circumference of the earth (as a sphere) Static Pi As Double ‘ Check if initialization already done If locNorthPole Is Nothing Then Set locNorthPole = objMap.GetLocation(90, 0) Set locSantaCruz = objMap.GetLocation(0, -90) ‘ Compute distance between north and south poles == half earth circumference dblHalfEarth = objMap.Distance(locNorthPole, objMap.GetLocation(-90, 0)) ‘ Quarter of that is the max distance a point may be away from locSantaCruz and still be in western hemisphere dblQuarterEarth = dblHalfEarth / 2 Pi = 3.14159265358979 End If ‘ Compute latitude from distance to north pole mDblLat = 90 - 180 * objMap.Distance(locNorthPole, mLocX) / dblHalfEarth Dim l As Double Dim d As Double ‘ Compute great circle distance to locX from point on Greenwich meridian and computed Latitude d = objMap.Distance(objMap.GetLocation(mDblLat, 0), mLocX) ‘ convert latitude to radian l = (mDblLat / 180) * Pi ‘ Compute Longitude from great circle distance mDblLong = 180 * Arccos((Cos((d * 2 * Pi) / (2 * dblHalfEarth)) - Sin(l) * Sin(l)) / (Cos(l) * Cos(l))) / Pi ‘ Correct longitude sign if located in western hemisphere If objMap.Distance(locSantaCruz, mLocX) mDblLong = -mDblLong End If
- Last update 2006-03-15 位置:北京时间与NY时间相差13个小时