Sharpmap自定义数据源
来源:互联网 发布:谢道清 知乎 编辑:程序博客网 时间:2024/05/17 07:54
业务数据有位置信息,都可以在地图上显示。那问题就来了,在现实世界中,有各种各样的数据,怎样将这些数据上图呢?
Sharpmap为我们提供了数据源接口,来完成各种各样数据的接入。
类图:
核心方法:
/// <summary> ///返回查询到的数据集 /// </summary> /// <param name="box">当前地图视野矩形</param> /// <param name="ds">填充后的返回的数据集</param> void ExecuteIntersectionQuery(Envelope box, FeatureDataSet ds);
FeatureDataSet是对DataSet的扩展,在行对象中,添加了Geometry属性。这样返回结果就可以包含业务数据和几何数据。
在使用FeatureDataSet之前,先定义表的数据接口。如下:
this.data = new FeatureDataTable(); this.data.Columns.Add("Name", typeof(string));
数据查询:
public void ExecuteIntersectionQuery(Envelope box, FeatureDataSet ds) { var dtb = this.data.Clone(); dtb.BeginLoadData(); //循环判断数据是否在地图视野范围之内 foreach (var section in dataList) { if (section.Geometry != null) { //对数据外界矩形进行相交判断。 if (box.Intersects(section.Geometry.EnvelopeInternal)) {//创建行数据 var row = dtb.NewRow(); row["Name"] = section.Name;//名称赋值 row.Geometry = section.OutlineGeometry;//几何对象赋值 dtb.Rows.Add(row);//添加到返回集 } } } dtb.EndLoadData(); dtb.AcceptChanges(); ds.Tables.Add(dtb); }
通过上面的方法,不管是文件的,数据库的或网络中的数据,都可以采用以上的方法,获取数据,返回给sharpmap的layer类,来完成数据的上图显示。
总结:
sharpmap的显示流程:map调用Layer的Render()方法,Layer调用Provider的ExecuteIntersectionQuery()方法获取图层数据,Layer获取后,对数据进行绘制。这是sharpmap的核心,所有其它的类方法都是围绕上面的流程开展的。
提供以通用图层,如:VectorLayer、WmsLayer、LabelLayer。通用数据源:ShapeFile、GeometryProvider等。
在完成图层绘制时,提供通用的绘制方法类:VectorStyle、LabelStyle。
0 0
- Sharpmap自定义数据源
- Sharpmap自定义图层
- SharpMap
- sharpmap中添加自定义图层
- 贡献一个sharpmap,自定义专题地图源码
- Sharpmap自定义工具,工具管理类
- SharpMap 中添加 GeometryProvider数据源并支持theme
- 创建自定义数据源
- 自定义GridView/ListView数据源
- 润乾 自定义数据源
- MyDataSource自定义的数据源
- yii 自定义数据源
- 自定义GridView/ListView数据源
- CAS 自定义数据源
- datatables 自定义数据源
- 创建自定义数据源
- MyBatis-自定义数据源
- 自定义配置数据源 DataSource
- 有关automator
- Oracle11g快捷版链接字符串
- operties文件的读取、添加、修改、清空、另存
- Core Data浅谈系列之四 : 数据模型的版本变迁
- 谷歌三大技术中文版
- Sharpmap自定义数据源
- 机器学习、数据挖掘、计算机视觉等领域经典书籍推荐
- 嵌入式学习之路(十七)——C语言学习(12)
- MATLAB GUI ,2,使用MATLAB的函数来实现MATLAB GUI,part 2,eval和回调函数
- node.js中使用sqlite3
- Android4.4 MTP在哪里打开
- 统计机器学习理论理解(转
- linux 下查看机器是cpu核数
- 设计模式初探-桥接模式