tryCollections)等OpenGIS简单要素规范;
5)可通过Data Providers(增加数据类型支持)、Layer Types(增加层类型)和Geometry Types等扩展;
6)图形使用GDI+渲染,支持anti-aliased等;
7)专题图。
3 实验结果
数据:安徽省的shape数据;开发环境:VS2005,IIS;开发语言:c#。
实现步骤:
1)新建一个WebService,实现WMS的函数:GetMap,Getcapabilities;
2)配置Webcong,使该WebService支持GET和POST请求两种方式;
3)GET方法实现如下:
第一步:新建asp.net website,获取http GET请求的相关参数;
第二步:通过GET方法,根据上一步参数调用新建的WebService,获得地图字节流;
第三步:所获得的字节流是以XML文档传输的,并对地图字节流采取一定的编码方式,对该XML文档进行解译,并对字节流进行解码,获得地图的原始数据;
第四步:将所获得地图渲染出来;
第五步:利用IIS发布WebService和asp.net website即可。
效果如图[4]和图[5]:
所给请求字符串1:
http://localhost/WMS/Default.aspx?VERSION=1.3.0&REQUEST=GetMapExtended&Layers=Xian,Xianboundary,XianLabel&STYLES=&CRS=EPSG:21413&BBOX=-176102.69,174551.45,270467.229,490514.5&FORMAT=image/png&WIDTH=1024&HEIGHT=768&ACTIVELAYER=Xian
所给请求字符串2:
http://localhost/WMS/Default.aspx?VERSION=1.3.0&REQUEST=GetMapExtended&Layers=Dq,Dqboundary,DqLabel&STYLES=&CRS=EPSG:21413&BBOX=-176102.69,174551.45,270467.229,490514.5&FORMAT=image/png&WIDTH=1024&HEIGHT=768&ACTIVELAYER=Dq

图[4] 图[5] 图[6] POST界面
4)POST方法实现如下:
第一步:新建asp.net Website;
第二步:设计POST界面如图[6]所示,主要包括REQUEST描述,POST地址,POST数据;
第三步:获取post地址,及要post的相关数据,利用该值初始化HttpWebRequest对象,设置POST方法,利用HttpWebResponse 获得post的XML,对该XML文档进行解译,并对字节流进行解码,获得地图的原始数据;
第四步:将所获得地图渲染出来;
第五步:利用IIS发布asp.net website即可。
核心代码如下:
public byte[] GetMap(string UserRequest)
{
byte[] bytesmap=null;
byte[] bytesmap1 = null;
System.Drawing.Imaging.ImageCodecInfo imageEncoder;
。。。。。。
{
string splitstringLower = splitstring.ToLower();
//Request中的参数名称大小写不敏感,因此在涉及到参数名称时,使用splitstringLower,涉及到参数值时,使用splitstring
int exist = splitstringLower.IndexOf('request');
if (exist >= 0)
{
string[] requestvalue = splitstring.Split(new char[] { '=' });
haveREQUEST = true;
REQUEST = requestvalue[1];
break;
}
}
System.IO.MemoryStream MS = new System.IO.MemoryStream();
img.Save(MS, imageEncoder, null);
img.Dispose();
byte[] buffer = MS.ToArray();
bytesmap = buffer;
}
return bytesmap;
}
}
POST方法获得地图数据,并渲染地图:
protected void Page_Load(object sender, EventArgs e)
{
# region 创建HttpWebRequest对象
string service = Session['URL'].ToString();
。。。
image.Dispose(); // 释放图像资源
using (MemoryStream ms = new MemoryStream())// 采用二进制流的方式输出图片
{
newImage.Save(ms, ImageFormat.Jpeg); //图片格式指定为Jpeg
Response.ClearContent(); //清除缓冲区流中的所有输出
Response.ContentType = 'image/jpeg'; //输出流的HTTP MIME类型设置为'image/Png'
Response.BinaryWrite(ms.ToArray()); //输出图片的二进制流
}
newImage.Dispose(); // 释放图像资源
Response.Flush(); // 输出
Response.End();
}
4 结论
.NET是 Microsoft用以创建Web服务平台,该平台将信息、设备和人以一种统一的、个性化的方式联系起来。借助于.NET平台,可以创建和使用基于XML的应用程序、进程和Web站点以及服务。通过.NET,所有的联网设备共同组成了一个无处不在的分布式计算平台,能够进行最有效的计算。通过Web Service,用户可以在任何时间、任何地点、通过任何设备获得信息。
Web Service的出现,改变了网络软件开发的方式,甚至改变了网络软件的使用方式。从开发方式来讲,Web Service就是网络上的组件,可以使用Web Service构建基于组件的WebGIS软件。而从使用方式来看,WebGIS软件的开发已经不局限于网络制图,网络数据的交换等功能,目前已经在向服务使用的方向发展。由第三方将数据和对数据的操作及使用等功能以Web Service的方式提供出来,将大大减轻开发者在利用GIS数据开发WebGIS软件和应用过程中的困难,更好地解决WebGIS中出现的各种问题。
5 参考文献
[1] 李新通,何建邦. GIS互操作与OGC规范[M]. 地理信息世界.2003
[2] 贾文珏,陈玉敏,龚健雅,李爱霞. 基于WebService的OGC地图服务实现方法[J].测绘信息与工程.2004
[3] 陈 博,徐满武. 基于Web 服务的计算模型———Web Service[J]. 计算机应用研究.2003
[4] 顾宁 等编著. Web Services原理与研发实践[M]. 北京:机械工业出版社.2006
2/2 首页 上一页 1 2 |