(一)

上周主席打来电话说有个朋友叫Tony,哭天抹泪的找人帮忙恢复数据库。我听后顿时感到和Tony同命相连,完全能够体会到他此刻的心情──从接触电脑至今,硬盘已经报废过几次了,其中有四次刻骨铭心,甚至是泪流满面。

所以没等Tony打来电话,我就主动联系了他并自告奋勇帮忙挽回损失。经过几天的尝试,对Mysql数据损坏和修复有了一定的了解,虽然最终没有帮上什么忙,但至少让自己学习到了一些知识。

本想将有关文字整理出来共享给朋友们,无奈昨天开始我又进入了每三两个月就必然要经历一次的"疼痛周期",这次牙痛比以往都要厉害,甚至出现了短暂的失聪,闹得我心烦意乱、再也无心写字。

(二)

最近找到了一个既无聊、又打发时间的玩意儿──在百度知道里面发问一些无厘头的问题,例如蝴蝶是否可以食用、北京城哪里有卖手机的......看着真有人傻乎乎的认真帮我解答,顿时感觉自己的确是一个无聊且无耻的人。

当然我也会问出一些自己的确想了解的事情,例如北京外国语大学的食堂饭菜好不好吃、北京化工大学的美眉漂不漂亮等等,可能是因为问题太有针对性,回答的人比较少、甚至无人解答。

(三)

不知为什么,突然热血沸腾的想玩儿速降,粗粗细细的绳子买了好几捆,却发现北京周围根本没有适合速降的地方。最近的自然速降地距离京城最快也要3小时的车程,而且还没有公交专线,只能开车前往。

而"私家车"这个名词在我心里是一道疤,真不知这道疤何时才能被抹平,男人身上的疤痕是荣耀,而心里的伤疤和肩头的疤痕确是男人脆弱的体现。我想这些大大小小的疤痕并非虚荣或大男子主义所致,而是由责任和压力所产生的,这样的伤疤、不易恢复。

(四)

玄火曾经买了个大大的耳机在我面前炫耀,记得当时无论我如何恳求,他就是不让我听,我当时也想像不出一幅耳机中传出的音乐能有多动听、一幅耳机能有多贵。

昨天到音响器材专卖店逛了逛,看到的耳机价格令我乍舌。高档耳机竟然要上万元,入门级耳机至少也要1300多元,最菜的菜鸟级耳机大约需要400元,菲利普高保真耳机9000元,还有两个国外牌子的发烧入门高保真报价分别是1200元和900元。

我想我对音乐不感兴趣,我不喜欢听音乐,音乐会打扰我,我的电脑里面反正也没有什么歌,算了吧,我不需要耳机。

读阮一峰博客随感随笔

| | Comments (0) | TrackBacks (0)
阮一峰昨天转载了一篇《山寨机揭秘》,今天又发表了一篇《从"山寨机"看手机的未来》,都是关于"山寨"这个话题的。看过两篇文章,觉得心里怪怪的、就是想帮价格高昂的品牌手机说几句话。

虽然山寨的质量可靠、功能丰富、价格低廉,但是品牌手机之所以高价也是有其苦衷的:

1、硬件设计和开模成本:一款品牌手机的外形是由专业设计师设计出来的,这笔设计费用在品牌手机制造商那里节省不下来,他们必须在一张白纸上画出产品外观。但是对于山寨而言则没有了这个环节,直接照猫画虎,剽窃设计师灵感即可。

而开模成本更是相差甚远的,国内的RP技术使得模具复制成本几乎为零,而老外苦心打造的纯钢模具价格少说几万、多则上十万,这笔钱平摊到每款品牌手机上、又是导致成本增加的原因。

2、配料安全性和稳定性:手机组成中绝大部分的材质都是热塑型塑料,这在大多数人看来很普通的外壳,其实是有优劣差别的:

塑料的外观手机和颜色虽然都想同,但因加工工艺和原料的不同,可能会因劣质而释放对人体有害的小分子气体,影响健康;

热塑型塑料的特点是加热后可重新塑形,因而为了降低成本,山寨塑料也许是由各类废旧塑料制品重新回收利用生产出来的。这不是说回收利用不好,而是再利用途径也许并不适合和人类亲密接触;

还是因加工工艺的不同,塑料外壳的内应力和抗疲劳等物理性能会有很大的区别,两款塑料制品摆放在一起并无差别,但它们抗温差、跌落、耐热等性能也许相差甚远;

3、硬件来路不明:以前看过一个帖子,说的就是一个专门回收手机的村庄,每天都将成百上千废旧手机解拆后回收零件。这些零件当然都可以用、而且我觉得也应该鼓励回收再利用,但品牌手机使用全新硬件其价格自然无法与山寨抗衡了。

总结来说,买不买山寨是个人自由,无所谓买品牌就是崇洋、买山寨就是败德。但卖山寨机的人不应该用"品牌厂商太黑"、"几百元的手机他们竟敢卖到上千"等言语中伤名牌企业。

另外,前几天看到石景山有一家山寨专卖店,门口写有对联精彩非常:上联是"水深货全",下联是"山高寨小"
上周四晚上和3252号女友约会,她在一个专门测绘GPS地图的公司上班,正好和我现在学习的WebGIS有一定关联,便请教了几个问题。然而当天晚上在可乐思喝高了,回家倒头大睡,起来后竟然忘记了当时问过什么。

刚刚收拾屋子的时候发现了一个小笔记本,上面有我罗列的几个地图测绘问题,这些问题是我以前不知道答案的、现在看了却知道答案。我想可能是3252告诉我的吧。这里一下发上来:

1、现在主流的绘图软件有哪些?AutoCAD能不能绘图?

答:中国地图绘制公司常用MapInfo,因为那是Windows下的软件,功能丰富、而且界面为大众熟悉。但是我用的是Grass,跨平台软件,使用起来比较难,界面由Python开发,偶尔会出现缓慢的情况。AutoCAD绘制的地图需要转换才能使用。

2、一张地图通常分作多少层?

答:纯地图层通常只分三层,地面、道路、建筑。通常情况下每个图层由一个组来绘制,一个组2-3个人左右,每个组每2天完成一个中小级城市的地图绘制。以此推算,6-9个人两天完成一个城市的地图绘制工作。

3、如何确保地图与现实的内容同步?

答:无法确保,绘制出来的地图都是上一年的数据。数据由专门的踩点人员持设备外出采集。采集回来的数据用于绘图公司绘制地图,绘制出来的地图出售给GPS巡航产品的研发公司,并融入其产品。因而地图每年都会绘制新版、卖出去。

4、不同的投影系统和大地基准如何选取?

答:绘制区域地图不需要考虑这种复杂情况。这些都是给航海地图或航空地图使用的,路程不跨洲、不跨海,就不用考虑坐标变换和投影变换。一旦需要考虑,实际上也是几种不用投影地图各画个的,使用的时候根据需要选取。例如航海地图,在南北极时会给出专门为南北极绘制的地图。

5、一张地图是画在一张大图上、还是分割成几块来画?

答:都可以,根据实际需求决定。例如,如果是中小城市,一张地图就可以画出来。对于北京这样的大城市,也能够画在一张图上,但也可以根据区域分割成几张来画。在将地图投入到地图读取设备之后,设备应可对地图进行拼合,然后根据所在位置选取不同的地图。
福生来中国了,选择在流感爆发的日子、选择在敏感的日子、选择在比马来还热的日子来到了中国,我不知道他是如何入境的,也很难用英语给他讲清楚这时候来中国是多么的不合时宜。

早上天亮,我却因为一夜鏖战而困顿,刚刚躺下电话就响了起来,看了一眼是个国际长途,随手挂断。之后才想起这可能是福生打来的,便又急忙回拨。对方张嘴说了句"你好"让我吃惊,他竟然会说中文、而且说的非常好。

约在东华门见面,我对那里很熟悉,曾经在东华门住过一年多、而且前些天专门去过两次踩点儿。一小时后,我们在南池子附近握手聊天儿、我再次因他那流利的中文而吃惊。

和福生是在网络上认识的,他是我博客的忠实读者、我也很喜欢读他的博客,一来二去就熟识了。起初还以为福生是个二十来岁的小伙子,见面后发现原来他49岁、而且是华人。

福生的中文语法虽然很好,但是知道的名词并不多,他不知道"电冰箱"和"手机"是什么,需要我指给他看。而且他对我普通话的发音提出了很大的质疑,所以我们见面后改用英语交流。这倒考验起我的听力和口语。

我发现,基本上大马华人与北京土著用英语交流还是很顺利的,只要将脑子里想到的句子中能说的词儿说出来,彼此就能进行交流。我和福生就在这样一言一语中开始了谈话。

聊了一会儿,我说"Let's go 吧,go to see beijing",他说"可以, go"。

对于这一天,我已经计划了将近两个月,因而路线早已订下来了。从南池子出发去看东华门、西华门、景山、故宫和大广场,围着看,走了一圈。福生问我高高的是什么,我告诉他是前门楼子,他又转了个身问我另一个高高的呢?我说是大高楼。

看了一圈,福生很兴奋,因为他本是华人,但却是平生第一次亲眼看到"大高楼"。而我也有很大的收获,因为我拍了50张照片,虽然挨了骂、劝阻我、不让我拍照,但我还是拍了。

看过了华表、金水河、金水桥之后,我们直奔什刹海。买了福瑞林西点的泡芙和蛋塔,然后跑去姚记炒肝店买了炒肝、豆汁和焦圈,福生边吃边问这些都是什么,我想了想告诉他都是北京美食,福生皱皱眉,想来可能是不理解北京饮食文化吧。

吃过午饭,我们顶着烈日逛起了后海,蹬三轮的兄弟很卖命,屁股一扭一扭的卖着力气,我想三个人加上三轮,分量差不多有600斤,所以遇到上坡我就会用力推那兄弟的后背、希望能帮帮他。

三轮把我们拉到了一个四合院,跑出来一个大老娘们儿,据说是英语呱呱叫的导游。我问她北京除了四合院之外有没有五合院或六合院,她说有,我拍了拍蹬三轮的兄弟,让他带我们去看九合院。

蹬三轮的兄弟没有去九合院,而是把我们拉到"奥运之家"的小院子,这回跑出来的是一个小女孩,一张最就是一连串儿的英语,我一句没听懂、福生脑袋点的好像乒乓球落地一样。于是我们由英语小导游带着进"奥运之家"听故事。

小院子不大,也算不上标准的四合院,室内陈设只有一张床能称作古旧物件,其余桌椅板凳摆放的和饭店一样、物品陈设也没有一样能看出北京的味道来。我对老北京的了解是通过《老照片》、《老北京民俗》、《老北京民间风俗百图》三本书得来的,想想理论和实际总是有差距,所以也就不苛求什么了。

逛到这里,本来还有很多计划,例如要去看和绅府、听京剧、参观水立方和鸟巢,但福生突然拿出一张舞台剧的门票,问我要不要一起去。我一看这是描述中国武术和功夫的歌舞剧,由上百名和尚参演,一群秃驴我没兴趣,便委婉拒绝了。

于是这一天的行程告一段落,去南锣鼓巷转了一圈,更是让我失望。平日美女如云的巷子今天竟空空荡荡,连个妇女都看不到。悻悻地走到巷口,与福生相互作别、回家继续睡觉去了。
因为WebGIS采用的是"有级缩放"、而非"无级缩放",因而需要定义几个缩放级别,这个定义是在config.php内完成的,对每一张地图自定义几个量级即可。

这几天看到和ka-map齐名的、甚至大有优势的open layer,功能更加灵活花哨、而且支持的API文档丰富完善,且它的文档中提到无须定义缩放级别,没有仔细看,因而没有发言权。

有了缩放级别之后就面临着新的问题──如何在不同级别显示出不同的信息量?因为在大地图上展现出来的信息含量很多,如果这些信息一直展示着,那么在小地图上观看的时候就会拥挤不堪。

因而每一个图层的信息是否要被显示出来,就要根据当前的缩放级别来定义了。这个操作可以在.map文件内实现,通过MinScale和MaxScale两个参数来确定当前图层要在哪个级别区间内展现。

在上一集中对比的几个地图服务商,发现中国的服务商都取巧的做了很多伪实现,其中go2map的缩放级别值得一说,它们的地图应该只有两个组:

第一个组只有一层,即最底层的一张标准测绘图、上面只有地面情况,并且可能是由一张大图片作出来的,为什么这么说呢?因为无论放大缩小,会发现go2map的道路宽度是跟着一起变化的,也就是说道路等信息实际是被"画"在一张图片上的。

第二个组由若干层构成,每层都是由点构成、且每个点含有一个地名信息,主要用于在地图上体现出出不同地方的地名,go2map有多少缩放级别、这个组里就含有多少层,以此来确定地图上文字的丰富程度。

如果按照上集所说,其余信息都是动态创建,那么有了上面两个组就足够了,剩下的工作就是在数据库内记录各种地理信息,在搜索的时候经过筛选进行输出、并动态绘制在地图上,且每一个动态绘制点都被注入html代码,用以实现浮动弹窗。

这种方法和英文版的Google Maps有很大不同,经过比较发现只有Google Maps是最健全、严格依据图层绘制的分层地图。

上述文字先放一放,现在来说坐标系大小,这两个话题都是今后工作的铺垫:

多种不同的映射系统我都没看明白,但至少可以利用直角坐标系来构建简单的webgis了。对于ka-map的直角坐标系而言,就是一个无限边界的广域平面,任何方向都是无限延伸的。当不考虑经纬度与坐标系之间的对应关系时,可将地图放在任何位置。

我将一张背景图放在0,0位置,并确定第一象限为正方向,此时背景图左下角的经纬度对应的就是坐标系原点,地球上其余各点经纬度均可据此推算出来。

为了推算,还要确定背景图上每一个像素代表的实际举例,这是通过地图附加的地理信息文件确定的,文件扩展名为.tfw,格式网上有专门介绍。

一旦确定了这些基本信息,以后调整的时候就比较麻烦了,不能去调整原始信息,因为一旦调整了原始参数,所有点坐标都要重新计算。因而最好的做法就是在开始之前就将这些数据确定。

日后如果想对地图扩充,就是对边界进行扩充,这是我此刻的想法,换言之从一开始就应该将最细腻程度确定,之后可以放大、但无法缩小(这些话说出来好像很混乱,不知是我理解不够透彻、还是表达能力不强)。

再把上述文字放一放,备注一下最近的工作,免得日后忘了:

1、每个功能点都测试通过了,但是还没有整理出明确简单的操作步骤,自己操作都颠三倒四、步骤繁杂,要精简、要直观;

2、似乎有很多功能都是多余的,甚至有些功能在任何民用级webgis中都未体现,要列出所有功能点,然后由具体产品来指导哪些功能是真正需要的;

3、具有依赖关系的多个模组都是必要的,但每一个究竟都是做什么用的还不清楚,有些模组甚至无法满足KISS原则,要整理一份标准模组列表,以便快速搭建和优化;

4、程序代码中引起的错误和警告多得吓人,虽然程序能跑、但底层混乱不堪,正在优化代码、逐步纠错,力求出错完全,并写出branch版本,脱离主线;

5、这东西的具体的、实际的应用在哪里?虽然我是一个科学家,但是每天纯理论学习好枯燥,能否找个服务器来跑个有用的demo?用以娱乐、也能更有动力去完善;
0、有哪些可参考的商业WebGIS服务?

mapabc:他们自己的网站我这里无法使用。但是Google中国使用的ditu就是他们提供的内容。但是谷歌应该是只使用了mapabc的地图内容、而技术则是彼此独立的。

服务器环境:Apache/2.2.8 (Unix) DAV/2 mod_jk/1.2.26 CovalentSNMP/2.3.0

go2map:以前没注意,今天才发现原来就是搜狗地图。有点儿不明白他们之间的关系。

服务器环境:Apache/2.0.53 (Unix) DAV/2 mod_jk2/2.0.4 PHP/5.2.6

百度地图:和谷歌一样,都是采用mapabc的地图,这可能和mapabc的开放api有关。毕竟各个地图服务商只需要充分利用api开发自己的实用功能、并增加各自的独有图层就行了。基础数据由mapabc提供,这样才能展现出分工合作的优势。

1、如果一直向一个方向拖动,走出了地图的边界之后会是什么?

搜狗map看过了,最大的地图是一张标准的世界地图,但是只有中国的地图是有细节的,其他国家都是没有任何细节的。并且和我现在搭建的WebGIS环境一样,拖动到地图外面之后就是无限区域,并非封闭系统。

谷歌地图的拖动比较有趣,横向循环、纵向无限扩展。百度比谷歌更完善一些,横向拖动重复、纵向拖动一旦越过北极或南极,就会自动将版图拉回来,不致于迷失在广阔空间中。本来还想不明白为什么横向拖动可重复、现在想明白了,这更象我们玩儿地球仪时的体验。

2、有没有框选的功能?此刻想着似乎没有印象,如果没有、为什么?

的确都没有提供[ i ]功能,我似乎能想明白这其中的原因:我现在搭建的环境中Query Hilite机制和[ i ]机制相冲突,采用了Query Hilite后框选查询便失效了、这是其一;再者,框选似乎可以被搜索取代,当然这一点我又觉得不太贴谱,因为有一个需求是只有框选才能做到的;

可不可以这样认为:这些地图框架都是采用几个基本的底图做为地图展现、而将标点内容动态绘制?从我现在搭建的框架来看,这样做的确有优势:可以抛弃grass62,还可以抛弃多余的图形文件,只需要数据库支持,并且数据录入、点录入都变成了纯数据问题,绘制形式也更灵活,最重要的是能否将更多的搜索功能溶入其中。

3、搜索结果的样式有哪些?

基本上都是一样的,搜索一个关键词,给出若干结果在左侧结果栏中、同时动态标点在右侧viewport中。此时如果点击左侧结果条目,右侧会有浮动弹窗,鼠标移动到右侧某一点,也会有相应的浮动弹窗。这些功能是我已经实现了的。

4、附加功能有哪些?具有特色的亮点有哪些?

功能一、测距:这是一个纯js插件,实现并不复杂,只要一个换算式即可实现;

功能二、专题搜索:如果将所有数据都放入数据库中,并在数据库中单独建立专题表,此功能便很容易实现了;

功能三、视野内搜索:和上述专题搜索一样,如果所有结果标点都是动态的,那么在进行搜索的时候可以先确定视野范围和视角级别,然后根据这两个参数进行数据查询,并将结果绘制出来;

功能四、公交查询:绘制若干点,并将点点相连,实现没有问题;

功能五、线路查询:这是一个难点,两点之间直线距离最短,但是前提是要有路才行,它们是如何直到两点之间的道路在哪里的呢?

综上所述,我之前的工作似乎走偏了一些,这些地图公司并没有中规中矩的按照GIS来做事情,而是采用了实用性更强的方法。这方法用的灵活讨巧,也让我一时想不出弊端,晚上再好好想想吧。
前几天因为升级内核导致FreeBSD崩溃,后来虽然修复了,但使用过程中总感觉有问题:系统缓慢、硬盘频繁读取、经常僵死......我当时恨不得再重装一遍系统。然而用top看了一下影响系统效率的却只有一个该死的trackerd-client,完全不知道这是个什么东西,经搜索才了解其中的原因:

原来新版本的Nautilus带有一个叫做trackert的模组,这东西就是类似Google那个磁盘搜索的本地搜索引擎,它会不断监控文件状态并创建索引,用以快速检索本地信息。

这家伙是个服务进程,没完没了的对硬盘内各类文档进行索引,如果在编译Nautilus的时候选择了更多的选项,它还会帮你把非FreeBSD系统的文档一并索引,例如微软的office中各类文件格式。

正是这个索引过程使得本地电脑变成了一个搜索引擎服务器,硬盘频繁读取也就不奇怪了。而且我电脑内的文档比较多,它拼命三郎一样分析每一个文件,系统资源被耗尽也就理所应当。因而重新编译了一遍Nautilus,并将相关的模组去掉、并用pkg_delete删除了相关的程序。

再次启动gnome,发现硬盘又恢复了之前的平静。说起来,我只所以喜欢FreeBSD,就是它对磁盘的访问非常少,少的令人不敢相信。我很少能看到硬盘指示灯工作,也很少能听到硬盘的声响,这种安静让我在深夜感到无比安然。

题外话:昨天用mini饭盒跑程序的时候竟然听到了很大的风扇声响、并且感到出风。饭盒不是被动式散热、其中没有风扇结构么?怎么会出现这种情况?上次换内存的时候差过一次,随没留意、但似乎也没有看到风扇,见鬼。
经过两天一夜,终于有了质的进步,为第二季的顺利开展奠定了良好的基础;第二季的顺利开展也是第一季能够得以不断写出来的重要前题,在不断的理解与顿悟中,将心得整理成铺垫。

转入正题:在一组组的图形矢量文件被绘制出来之后,就可以将它们整合到.map文件中,并通过ka-map显示到浏览器中了。这个时候每一个shape文件都被定义为一个层(Layer),每个层内只能有一种类型图,例如点层、线层、面层......一层层的Layers叠加在一起便形成了一张地图。

然而此时会遇到一个问题:现实世界中怎么可以有只由一种图形构成的图层呢?举例而言:当我们定义一张地图是由地面、房屋、植被所构成的,那么地面即可能是线、也可能是面;而房屋是面;植被就很可能是点、也可能是面所构成的。

因而此时需要至少五个层才能表示出三种地面类型来。当然有人会想到将由线构成的地面绘制在一个图层中;然后将由点构成的植被绘制在一个图层中;最后一个由面构成的图层中同时包含有道路、房屋和植被。如此便可通过三个图层来传达信息了。

上面的做法显然是不合理的,因为这种混合只会让数据和图层文件混淆,无法用于日后的研究或深入分析。

所以这个时候就要用到组(Group)的概念了,将由线构成的路面和由面构成的路面归为"Road"组,同理的将房屋和植被分别归为"Build"和"Tree",如此每一组表达一种现实物品,其下每一个组成员表达其中不同的结构类型,即可有效的进行区分和归类。

层名称和所属分组在.map中的定义很容易,有了上面的概念也就不难理解和撰写了。这里要说一个叫做TRANSPARENT的参数,默认状态下它是off的,直到WebGIS学习第二季我才了解了这个参数的目的──如果将它设置为on,那么便可在浏览器中设置每个组(Group)的现实状态和组与组之间的层压关系。

当TRANSPARENT被设置为on之后,ka-map的LEGEND功能中每一个组名称前便多出了一个复选框(check box),通过选择可设定该组内容是否显示在viewport视图中。同时可以通过上下调节按钮确定哪个图层在上面、在上面的图层会覆盖其下的图层,因而默认情况下对每一个图层的层压关系应该规划好,否则就会被遮挡住。

下一集将整理关于缩放级别的内容、下下集整理平面坐标系地图大小的概念、之后对当前几个比较流行的地图商业服务进行功能调查、并分析其每一个功能实现的可能性和功能框架。
GIS应用领域随着网络硬件的发展而得到快速推进,因而引发出了WebGIS领域,然而与传统客户端相比,WebGIS多少还会显现出一定的不足,例如WebGIS都没有采用无级缩放技术。

客户端中比较娱乐的是Google Earch,一个小巧的客户端带给用户的惊奇和实用性都是令人震撼的,你可以从距离地球上万米的高空俯视大地、然后逐渐靠近地面,那感觉就像从飞机上坠地作死,爽到极点。

可这种无级缩放如果想实现在网页内,想着虽然有思路,但实现起来恐怕很复杂,至少就ka-map而言要动大手术。基本思路是这样的:

1、在地图视中采用至少两个层,两层要能交替显示;

2、第一个层用于显示当前缩放级别的地图,当放大地图的时候只需要改变每张分割图片的大小,让这些增加了尺寸的图片自适应放大,这时的图片分辨率会逐渐降低;

3、利用第二个层接收新缩放级别的清晰图片,待新分割图片下载完毕之后替换第一层内容;

4、缩小的时候同上原理;

5、当放大或缩小不足以激发新级别的时候,就不进行新分割图片的调用,只使用当前图片,只通过改变当前图片大小来实现伪缩放;

6、当放大视图、并且未完成新分割图替换的时候,进行了缩小操作,就放弃第二层图片的读取操作,以此防止资源的过渡损耗。

上面的逻辑只是拍着脑袋想出来的,光这点儿东西想着头就大,还没有考虑浏览器是否能顺利申请到足够的资源用以流畅运行,同时也没有算法支持。

但可以肯定,无级缩放是可以实现在浏览器内部的,随着网络发展、浏览器技术发展,并且最关键的──等到WebGIS的实用性功能足矣完美到无须过多耗费程序员的时间之后,就有精力和能力去实现这一美丽而又令人惊叹的视觉效果了。
声明:本集内容暂时没有得到充分证明,其中的公式也均为近似计算,用于民用与娱乐应该没有问题,但如果用于专业研究则不可参考。

现在的民用GIS设备越来越多,随便花几百元就可以买一个精度很高的手持GPS导航仪,用于记录经纬度。然而我的问题是当获得了多组经纬度数据之后,如何将这些数据转换成XY坐标并标注在二维平面坐标系统中?

因为GIS环境在部署过程中已经设置了它的坐标为XY参考系,也就是一大张平面图纸,这上面的每一个点都是相对左下角坐标零点的一个XY坐标值。左下角坐标原点对应的经纬度,称为"原点经纬度",以任意点A所在经纬度称为A点经纬度,求A点的X、Y值。

假设A点和原点经度、纬度均不相同,那么以A和原点为对角线可在球面上绘制一个曲面梯形,四条边界分别是:A点的纬线、原点的纬线、原点的经线、A点的经线。除原点和A点外,另两个边界焦点分别设为P、Q。

原点距离A点的球面最小距离可以通过Haversine公式计算,距离为D。此外还可分别计算出OP、OQ、AQ、AP四段距离,其中两条经线距离相等,纬线距离不等,高纬度纬线距离小于低纬度纬线距离。

有了上面几组数据,我就可以促略估算出A点的坐标了,但是这个估算只适用于小范围内、且不科学。大范围计算会出现很大的偏差,不能直接使用。

小范围内的估算很简单,就是假设这是一个规矩的矩形、更精确一点可以假设成一个标准的梯形,前者估算方法就是分别用两个三角公式计算第三边长,然而取平均值。后者直接利用梯形公式推导A点坐标即可。

为什么说这是不科学的呢?因为这是一个曲面图形,展开成平面之后并非规矩的矩形、也不是标准梯形。由形变引起的误差不可乎略。网络上有精确的计算方法,我看了两天没看懂,所以就只好偷懒的用这个不科学方法了。
友情链接

Google