本文主要结合SQLSERVER2008的空间数据库的一些特性,讲解Silverlight在矢量地图绘制方面的一些技术点。服务器端负责提供数据服务,客户端负责图形的绘制,当然这个过程会遇到性能瓶颈,但本文的重点在于地图数据模型的转化过程,以及Silverlight的数据绑定与数据模型间的关系的理解。
服务器端
数据模型层:
1.获取原始数据模型
从SQLSERVER2008取得数据集DataSet,其中包含的几何数据类型Geometry在.NetCLR中被映 射为SqlGeometry类型,该类型在程序集 Microsoft.SqlServer.Types.dll的 Microsoft.SqlServer.Types 命名空间下(该程序集由SQLSERVER2008自带)。
2.封装成可序列化的用户数据模型 :GeometryFeature类
遍历DataSet,除SqlGeometry类型外,其余数据保存在以字典 Dictionary<string,object>中,Key为字段名,Value为值。SqlGeometry数据由类型自 带的STAsBinary()函数转化为byte[]类型 。
GometryFeature申明为指定序列化或反序列化时Web服务能够使用的识别的已知类型。
代码
[DataContract(IsReference = true), ServiceKnownType(typeof (GeometryFeature))]
public class GeometryFeature
{
public GeometryFeature()
{
}
public GeometryFeature(byte[] bytes, Dictionary<string,object> attributes)
{
this.BinaryGeometry = bytes;
this.Attributes = attributes;
}
[DataMember]
public Dictionary<string, object> Attributes
{
get;
set;
}
[DataMember]
public byte[] BinaryGeometry
{
get;
set;
}
}