利用DOM、SAX交互解析基于SVG的
WebGIS地图编码
1
12
邓晓斌 黄志芳 刘小丽
(1.江西信息应用职业技术学院 江西 南昌 330043;2.江西省煤田地质勘察研究院 江西 南昌 330001)
摘 要: 采用SVG表达网络地图,使用DOM和SAX技术实现网络地图的交互,为WebGIS提供新的开发思路。
关键词: DOM;SAX;SVG;WebGIS
中图分类号:P208 文献标识码:A 文章编号:1671-7597(2012)1120028-01
0 引言 2 DOM与SAX的简介
WebGIS是Internet与GIS的结合产物,也是GIS研究的一个文档对象模型DOM是用于读取和操作XML文件的标准。重要方向。然而,在Web上发布信息量巨大的地理空间信息DOM为XML文档的已解析版本定义了一组接口。解析器读入整个(主要是以图形图像的方式)必将导致Internet网络传输速度文档,然后构建一个驻留内存的树结构,用户编写的代码就可降低,而短小灵活的矢量图形是缓解这个困境的有效手段。以使用DOM接口来操作这个树结构。用户可以遍历树以了解原SVG就是一种基于XML的矢量图形格式,由于它能良好的将矢量始文档包含了什么,可以删除树的几个部分,还可以重新排列图形展现在Web上,因而SVG可以成为GIS很好的网络载体。树和添加新的分支,等等[3]。
SVG可以直接使用XML的技术,其中DOM和SAX都是XML的重要技DOM的缺点有:
术,利用它们可以很好的解析SVG文档[1]。本文从SVG、DOM、1)DOM构建整个文档驻留内存的树。如果文档很大,就会SAX基本原理出发,用SVG语言创建地图文档,利用SAX可以快要求有极大的内存。
svg交互图文入门速的访问、查询文档中的标记或属性,而利用DOM对象添加、2)DOM创建表示原始文档中每个东西的
对象,包括元素、删除文档树的标记或属性,有机结合了SAX和DOM各自的优势,文本、属性和空格。如果只需关注原始文档的少量部分,那么从而实现了WebGIS地图的各种操作功能。创建那些永远不被使用的对象是极其浪费的。
3)DOM解析器必须在代码取得控制权之前读取整个文档。
1 SVG的Web地图表示功能
对于非常大的文档,这会引起显著的延迟。
SVG(Scalable Vector Graphics)[2]是一种基于XML的
SAX(Simple APIs for XML)在概念上与DOM完全不同。用来描述二维矢量图形和矢量/点阵混合图形的置标语言,是一
首先,不同于DOM的文档驱动,它是事件驱动的,也就是说,种全新的矢量图形规范,SVG规范定义了SVG的特征、语法和显
它并不需要读入整个文档,而文档的读入过程也就是SAX的解示效果,包括模块化的XML命名空间(namespace)和SVG文档
析过程。所谓事件驱动,是指一种基于回调(callback)机制对象模型(DOM)。SVG的绘图可以通过动态和交互式方式进
的程序运行方法。当需要处理大的文件的时候,SAX对内存的行,在实际操作中,则是以嵌入方式或脚本方式来实现的。
需求很小,因为它并不会因为XML文档尺寸的增加而增加对内SVG不仅提供超链接功能,还定义了丰富的事件。由于SVG支持
存的需求。SAX允许在任何时候终止解析,这样的一个好处是脚本语言(script),可以通过Script编程,访问SVG DOM或
如果实际上只需要对文档的一部分信息进行处理的时候,可以SAX的元素和属性,即可响应特定的事件,从而提高了SVG的动
在得到该部分信息以后,就终止对文档的解析。
态和交互性能。 SVG实现了图形、图像和文字的有机统一。
利用SAX可以快速的访问、查询文档中的某个点,并能对SVG除了支持HTML中常用的标记,如文本、图像、链接、交互
该点产生一个事件。SAX的特点正好弥补了DOM的缺陷[4]。
性、CSS的使用、脚本(Script)外,还提供了大量针对图
当然,SAX也有自身的缺点,比如它不适合用来添加、删形、图像、动画的特定标记。这就为实现GIS提供了可能。图
除文档中的内容,但DOM可以很好的弥补SAX的缺点。
1是用SVG生成的世界人口增长分布地图,使用标记<embed>嵌
由于用SVG表示地图的文件比较大,所以用SAX来快速访入到网页中。
问、查询文档中的内容,用DOM来添加、删除文档中的内容,
很好地实现WebGIS的地图操作功能。
3 网络地图的操作实现
3.1 SAX访问和查询SVG文档的内容
用SAX读取SVG文档中的内容按以下步骤:① 创建一个事
件处理程序;② 创建SAX解析器;③ 向解析器分配事件处理程
序;④ 解析文档,同时向事件处理程序发送每个事件。
SAX处理器一般情况下将产生三种事件:Start-
element()、Characters()、End- element()。
function Start-element()
{if(查询条件)
{response.write(“<svg>”);
Response.write(“<path>”);
图1(下转第15页)
隆卡也十分容易。使用pM3,只需要输入若干命令即可。
3 Proxmark3
3.1 Proxmark3功能简介
Proxmark3(PM3)是有Jonathan Westhues设计并且开发的开源硬件,可以在高频(13.56MHz)以及低频(125K-134KHZ)波段工作,主要有RFID的嗅探、读取以及克隆等功能。
以SVN528般般的firmware为例,PM3的主要功能如下表所
示:
3.3 PM3破解mfc卡
PM3也提供了对mfc卡的破解工具。首先使用PM3对读卡器
和卡之间的交互进行嗅探,命令如下:proxmark3>hf 14a
snoop,然后嗅探得到数据的命令如下:Proxmarks>hf 14a
list,然后在使用PM3的小工具就可以破解mfc卡的密钥并且复
制出来。
4 小结
从上述内容不难看出,非接触只能卡并非如我们想象的那
样安全,尤其是对于低频卡和mfc卡,在使用像PM3这样的工具
时,嗅探、克隆,都是很简单的事情。国外更是有研究者对各PM3的强大之处在于其分析能力,当拿到一个位置的非接个层次的RFID攻击进行了分类。目前和消费有段的非接触卡大
触卡时,可以通过PM3来判断是高频卡还是低频卡,然后在尝都已经采用CPU卡,就是为了应对逻辑加密卡易于被克隆的风试相应的命令来分析卡的具体种类。险。虽然目前暂时还没有公开发现CPU卡的安全漏洞,但是还
3.2 PM3模拟低频卡是希望大家养成良好的用卡习惯,尤其不要外接自己的门禁卡
以用的门卡为例,通过“hw tune”命令可以确认门卡为或饭卡,以免被克隆复制。
低频卡。然后输入命令:
参考文献:
[1]Reverse-Engineering a Cryptographic RFID Tag.KarstenNohl,Davi
D Evans,Starbug, Henryk Plotz.San Jose,CA:USENIX Security
运行的结果可以得出,dt=128,即64个采样。PM3的采样
Symposium,2008.
率为载波频率即125kHZ,于是dt=64*1/(125k)=0.000512s。
[2]安全+SECURITY.
从后面相邻的部分波形可以才出512μs可能是4bit,也就是
128μs/bit,每个16个采样1bit。
作者简介:
冯超(1978-),硕士研究生,吉林省彩虹人才开发咨询服务有限
公司,研究方向:计算机相关。
}属性,并将此属性放置在接点“tuli”下:svgAttribute }n e w I D=d o c.C r e a t e A t t r i b u t e("");n e w I D.I n n e r T e x t= function Characters()"";tuli.SetAttributeNode(newID);③ 建立一个节点,并{ if(查询条件)将此作为“tuli”的子节点:svgElement newNodeName= doc.
{ response.write(“”);CreateElement("");newNodeName.InnerText="";tuli.App }endChild(newNodeName);④ 用Save保存节点。图3是通过添}加节点生成了图例。
function End- element() 4 结语
{ if(查询条件)本文提出了将XML中重要技术DOM和SAX运用到SVG图形交互{ response.write(“”);解析中,充分利用了它们各自的优势,较好地完成了WebGIS地);图的操作功能。在实现的过程中,要时常交换使用DOM和SAX技}术,这也是一项复杂的任务,如何更好地将它们整合到一起,}将是今后研究的方向。
图2就是用SAX读取SVG图形(图1)中显灰部分的文档内容。
参考文献:
[1]邓晓斌,基于Asp、SVG技术的WebGIS研究与实现[J].计算机
与信息技术,2007.
[2]刘啸、毕永年,基于XML的SVG应用指南[Z].北京科海集团公
司,2001:10-12.
[3]冯艳杰,基于SVG的WebGIS实现技术[D].武汉:武汉大学,2005.
[4]干凌云、李琦、喻文承,Web Service与地理信息互操作[J].测绘
科学,2004,29(1):38-41.
图2 图3
3.2 DOM添加或删除SVG文档的内容
在DOM中用removeChild(node)可以删除SVG文档中的节作者简介:
点。而添加SVG文档中的节点有以下步骤:① 建立一个新节点邓晓斌(1983-),男,江西贵溪人,硕士,讲师,研究方向:网svgElement tuli = doc.CreateElement("g");② 建立一个络地理信息。
(上接第28页)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论