鱼和熊掌不可兼得

发布地理信息到互联网已经不是一个普遍存在的问题了,因为几乎每个GIS平台都提供了独具风格的解决方案。解决方案里最大部分是涉及由数据动态产生图象,例如:MapInfo的 MapExtreme, Intergraph的 GeoMedia WebMap, Bentley的 Web Publisher,以及 WMS (Web Map Service) 服务器等等。

图象格式通常采用GIF、JPG或者PNG,所有这些格式都可以被任何平台上的任何主流的浏览器所查看。这种方法是确定最大“范围(reach)”——这就是说,用户只能在你的数据范围内查看。然而,作为任何一位尝试用GIS桌面程序工作的人将发现位图的方法牺牲了“丰富(richness)”。正是由于作出了这种牺牲,我们知道所有这些纯功能使得GIS如此有用,比如读取一个对象属性的能力、缩放能力和漫游能力,而且服务器产生出下一屏图象不会有长时间的延时。

一些产品已经提供了私有的网络客户端软件来尽可能地平衡标准的网页浏览器,比如,Autodesk的MapGuide, SVG等等。采用这种插件技术主要的好处是数据作为矢量数据包装,而不是被“栅格化”的数据(生产一图位图)。

鱼和熊掌不可兼得

图1 一幅典型的关系图,横轴是用户可以看到内容的数量,纵轴是基于网络GIS提供信息的丰富程度。

矢量与栅格之间的区别

我确信大多数的GIS用户都意识到相矢量图形至少有一些好处,当与位图或者栅格图象已有的优点比较时。栅格图象包含每个像元屏幕显示的色彩信息,然而矢量图象包含一个以数学描述的图象。这使得在放大和缩小一幅矢量图象时可能不会损失图象质量,相反栅格图象一旦被生产出来就只能在单一比例尺下被查看。



图2.矢量数据
栅格数据

矢量格式文件与同等范围的栅格数据比起来有着更小的下载大小。另外,对象可以在交互时保持它们的属性以被使用。尝试在上面的矢量图象上移动你的鼠标,光标显示每个对象所对应的文本名称。

矢量图象其它的优点就是可以在不同的比例尺下“复用”数据。一个基于栅格的系统,例如一个WMS服务器,每当用户作缩放或者移动操作都会在服务器端创建一幅新的图象,然而这时可能并没有新的数据显示在用户的屏幕上(例如,当他放大时)或者很少的变化(例如,如果仅仅是很小的移动)。这造成服务器要接收太多的命令,以及用户要接受令人厌烦的等待等等。对于矢量系统,它在显示时可能会下载附加数据,可以复用已下载的大部分或全部数据。这样的结果就是服务器有更快的速度,更少负载。这可以帮助用户节约硬件和带宽的成本,而无须花费用户的时间。

那么什么是缺点呢?例如MapGuide或者Adobes SVG浏览器,这个缺点是在你可以开始浏览数据前,需要将3M的数据下载到插件中。这可能并不会给GIS狂热者带来障碍,但是这对于琼丝夫人想获得公交路线来说却是一个大的下载量。

丰富和范围,FLASH允许

这里有一种格式,它提供矢量功能和广泛使用的JPG、GIF或者PNG格式,它就是Macromedia的FLASH。如果你认为FLASH仅仅可以用来制作烦人的广告,那你需要重新认识FLASH了。在过去的十年里,FLASH从一个仅仅是好玩的可选的工具变成一个有活力的GIF工具,而后发展成了一个羽翼丰满的多媒体程序设计平台。

它对于GIS开发者来说有一种特别的吸引,因为它很好地支持矢量图形,它具有互操作性和程序设计可能性以及普及性(因为大多数主流网页浏览器已经预安装了 FLASH播放器),这并没有涉及正在迅速发展的设备,比如PDA和移动电话。(Macromedia公司最近宣布了与Nokia公司在有些产品中 合作的计划。)

除矢量图形外,现在的FLASH播放器还可以包含对象结构、XML、位图、影音等。所有这些可以使用FLASH现有的程序设计语言, ActionScript,来操作。ActionScript是一种简单易学的脚本语言,与JavaScript很相似,它是基于ECMA-262规范的。

FLASH提供一个丰富的方法而超过了专有的绘图插件,同时还具备一个其他任何矢量技术无法比的范围。FLASH播放器被预安装在98%的用户机器里。这个可以和14%SVG比较(对于MapGuide没有图是有效的)

鱼和熊掌不可兼得

图3 FLASH在广泛的分布格式中提供了矢量功能,丰富和范围。

创建“SWF”

FLASH使用的文件格式叫SWF(ShockWave Flash)。SWF文件格式,虽然被一个独立的公司开发和维护,但是它仍是一个开放的文件格式。这就意味着你可以不付任何费用地来生产和使用这种文件格式。

虽然大多数SWF文件和应用程序被Macromedia Flash权威工具创作出,但是这个规范是可以从Macromedia公司的站点下载到,并且使用这个规范来创作SWF的桌面和服务器程序文件。

对于PHP开发者们,这里有一个非常有用的有效库, MING,它允许服务器端生产SWF文件(on-the-fly)。

ActionScript自身具有绘图API,能够让你从原始数据通过编程或者用户直接在自身的客户端绘出矢量图形和多边形。



图4 尝试在上面的窗口中点击画出面状多边形(在一个点已经画出后,你可以在它周围点击并拖动)

根据Macromedia统计,全世界有超过一百万FLASH开发人员。这里至少有三个有效的商业系统可以从其它GIS格式转换生产SWF格式:

  • hyperGIS-通过和Oracle空间接口,转换GIS格式到FLASH。是自主开发的开源FLASH客户端。
  • Demis-WMS服务器生产位图作为SWF文件。是有效的开源FLASH客户端。
  • GeoClip-创建SWF格式的统计地图。

你可能感兴趣的:(鱼和熊掌不可兼得)