没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
基于.NET 2.0 的 GIS 开源项目 SharpMap 分析手记(一)
介绍: 是一个“小巧可爱”的基于 使用 开发的
渲染类库,可以渲染各类 数据(目前支持 和 格式),可
应用于桌面和 程序。
其网址为:
和 !"
的发布许可(# )为 $%!&! # ,开发者
为 $!()。目前的稳定版本为 '((
已发布),代码行数近 ) 行,实现了以下功能:
① 支持的数据格式:
*#,+!
支持 !,
支持 和 -栅格数据格式
② . 控件,可以移动和缩放
③
通过
//!
支持
0
程序
④ 点、线、多边形、多点、多线和多多边形等几何类型和几何集合
(,!! )等 1!.& +
⑤ 可通过 23(增加数据类型支持)、#,4,(增加层类型)
和 ,4, 等扩展
⑥ 图形使用 25渲染,支持 6! 等
⑦ 专题图
上面这段话是根据马兄的
7#1
整理的,如果不希望我引用请马兄告知我删除。
下面就是实用的 4784。
())下载 9$4:
由于 基于$4,为了分析 ,首先要作的就是下载一个 9
$4:,这个比较大,估计有 );,所以建议找个速度快点的网站或者…
()安装 9$4:
还算比较好装,我装的时候没碰到什么问题,一次成功;
(<)设置 0$4 为
这点必须注意,因为默认的 0$4 为 ))(我安装操作系统的是
3<);
做法是打开 信息服务管理器,在“默认网站”上单击右键选择“属性”,弹出如下对话
框,在 0$4 页设置 0$4 的版本为 :==;
(>)下载
到 !"
去下载一个 ,我下载的是
( 版;
(:)解压和试运行
解压后可以看到一个 文件夹,在 9: 中打开 !",在 9
: 中单击右键,选择“在浏览器中查看
基于.NET 2.0 的 GIS 开源项目 SharpMap 分析手记(二):源代码
解压下载的 ( 版源代码,有两个文件夹: 和 %。
其中 % 是用户界面相关命名空间,如窗体 .、0?" 等。
工程是主体,包括数据转换、坐标、数据、几何体、图层等命名空间,下面分
别介绍:
命名空间 ,包括 类,通过创建 对象的实例来生成地图。 对象
由包含 #, 对象组成 #, 集合,通过 方法来 地图。
3
命名空间 ,提供数据转换服务。
,
命名空间 ,提供坐标系统及其投影和转换。
2
命名空间 ,提供对各种数据支持,现在包括 *# 和 .! 支持。
3
名称空间 ,包括了 3 接口和 文件、 数据的读
取实现。该名称空间为 提供数据读(写)支持,通过面向接口的设计,可以比
较容易的增加各类数据格式。
命名空间 ,包括了 要使用到的各种几何类及其接口类,例
如点、线、面等类。是 的基础之一,所有几何对象都继承自 , 这个抽
象类,其中定义了几何对象应该具备的公共操作,例如大小、2、外接矩阵、几何运算
等等。
#,
命名空间 ,提供各种图层支持,包括注记层、矢量层等。#, 是一个抽象
类,实现了 #, 接口,#, 目前有 < 个子类,分别是
9 #,、#!#, 和 #,,分别代 < 种不同数据类型的图层。
@
命名空间 ,目前包括矢量渲染器类和几个专题图渲染器类,该类可以将
几何对象根据其 ,! 设置渲染为一个 ,2@ 对象。
,!
命名空间 ,该命名空间主要提供了图层的样式设置类,例如线样式、点样式、
填充样式等。
%!
名称空间 包括 0!@ 类(目前仅实现了一个方法);3
类,是 3 的一个 /!,应用了反射机制;&@ 主要用于系统的
和 7& 的序列化;4+ 提供了从图片坐标到地理坐标的互相变换,也即桌面
的二次开发中经常使用的屏幕坐标和地理坐标的转换,主要用于地图的渲染、交互操
作等。
%!!"@ 用于对象的空间索引。
名称空间 实现了 //! 和 @ 类,用于网络环境。
命名空间,包括对网络支持如 /44 等, 提供对 的支持。
% 工程包括:
. 名称空间,包含 @ 控件,一个简单的 %!(用户控件),
封装了 类,用于 . 编程。
%0?" 提供对 0?" 支持。
基于.NET 2.0 的 GIS 开源项目 SharpMap 分析手记(三):地图渲染分析
)运行过程
我们通过实例来讲述 的运行过程和渲染(绘制)机制。首先打开
!",可知此页面有一组单选框(< 个,分别是放大、缩小和漫游)和一个图像
按钮,用于显示地图。它的代码在 !" 中。
打开 !" ,在 @A# 函数中是页面初始化代码。可知地图生成分
两步:
))初始化地图
,B/!!CD
,2@CDDE@9!&F
DE@/@9!&EEG
我们找到 /!!C 函数,发现地图的初始化分为以下几步:
())创建地图,创建图层
!C+CH@CH
BDCEG
& &!,
#,9 #,!,&B
#,9 #,DI&IEG
& +!0A+!
!,&2& B
23.!D/"&3
DJIKL0AL &IEF&EG
()基本的图层显示设置
+!!6,!@
!,&,!.!!B!7&D!EG
!,@3! &!
!,&,!1&!B,2@7! G
!,&,!!1&!B&G
!,&2B><;G
(<)加入图层到地图
0!,?
4,F
3!&
#,0D!,&EG
#,0D!,3EG
#,0D!,EG
#,0D!,#!EG
#,0D!,,#!EG
(>)地图放缩、背景、中心等设置
!C<;@
"&MB<;G
7 !B!#@7!&G
MB<;G
BDFEG
)绘制并生成地图
我们回到 !" 的 @A# 函数,发现下一步调用
DEG
4!3+M"+
,M4"DEG
FC+&!!D<;@E
,BDFEG
,MB<;G
DEG
在同一文件中,DE包含以下两步:
())保存当前地图状态
3 & C3
90DIIF,EG
90DIMIF,MEG
()渲染地图
,2@@@B,DEG
@@2B @ D)F@EG
@@%!BI@"N2BI5
/%!,%! D@2EG
它的核心就是通过 ,DE创建了一个地图图片。我们来看看这个
DE函数。
在 文件中找到 DE函数,它分为以下几步:
① 创建图像,得到图像绘制环境参数
,2@@@B
,2@7DCFC/@EG
,2@ @B
,2@ .@D@EG
@4+B4+G
@!D7 !EG
@@%B,2@ %"!G
② 绘制图层
2BD#,&ON#,PQ26)EG
2++!,
+DBGRA#,&G55E
S
+DA#,.Enabled && _Layers.MaxVisible >= this.Zoom &&
_Layers.MinVisible < this.Zoom)
A#,.Render(g, this);
T
关键在于A#,.Render(g, this)
,它是
ILayer
接口的一个函数,我们找
VectorLayer
的实现来看看,它分为两种,一种是专题地图,一种是非专题地图绘制。
对于专题地图,它针对 2.&24! 的每一个 +&
进行绘制,先绘制其外框,再绘制内部几何体。对于非专题地图,它针对
2& 9D3!E得到的几何体进行绘制,也
是先绘制其外框,再绘制内部几何体。最后的绘制工作都调用
@9 类的函数完成。
@9 类包含绘制注记、线串、多线串、多点、多
多边形、点、多边形等。
绘制好图层后将激发 #, 事件:
+D#,UB&!!E#,DF@EG.3
绘制好地图后将激发 类的 事件:
+DUB&!!ED@EG.3
@9 的各个函数具体分析现在我们对渲染
地图的全过程已经有了个总体概念和初步理解,下面来具体看一下
@9 的各个函数:
)2#!
VVVVVR&,O
VVVVV!!
VVVVVR&,O
VVVVVRBI@IO + RO
VVVVVRBI#!IO#!! RO
VVVVVRBI1++IO1+++!!
RO
VVVVVRBI+IO.&+@RO
RBI+ !IO.+ !ROVVVVV
RBI !IO7 @& !RO
VVVVVRBI!IO!+!RO
VVVVVRBIIO4"
@RO
VVVVVRBI"IO4"RO
VVVVVRBIIO+ RO
&! 32#!D,2@ @F
,2@.#!F,2@.1++F
,2@.+F,2@!+ !F
,2@7& !F,2@!F+!
F@"FE
这里面要注意的是这是绘制使用的函数是 2 和 .!!,而且是作者从
2@ 改进的,可能是为了绘制过程的统一,因为其它几何体的具体绘制也使用
2。
+D!UB&!!E
@2D!FEG
@.!!D,2@!7&D+ !EFEG
@2@D"F+F
,2@!7&D+ !EF#!WF
#!8EG
剩余35页未读,继续阅读
资源评论
智慧安全方案
- 粉丝: 3599
- 资源: 59万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- apk.tw_LineLite_v8a_v.2.17.1_sign.apk
- Elasticsearch实战:构建高效搜索系统的秘诀.zip
- HTML+CSS+JS网页设计:从入门到精通.zip
- 数据库课程设计:从理论到实践的全面指南.zip
- Python闭包:深入理解与应用场景解析.zip
- Win64OpenSSL-3-3-0.exe
- 课高分程设计-基于C++实现的民航飞行与地图简易管理系统-南京航空航天大学
- 航天器遥测数据故障检测系统python源码+文档说明+数据库(课程设计)
- 北京航空航天大学操作系统课设+ppt+实验报告
- 基于Vue+Echarts实现风力发电机中传感器的数据展示监控可视化系统+源代码+文档说明(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功