用户操作
[即时聊天] [发私信] [加为好友]
粟卫民ID:suen
140914次访问,排名566好友37人,关注者81
爱好技术,爱好开源,在华工学过计算机,在武测学过GIS,国家认证系统分析师,曾负责或参与中国科学院开放基金、国家基础测绘科技计划、国家自然科学基金、××市人防指挥地理信息系统、境界数据建库、地图网站等多个项目。因热心GIS技术传播而获得“CSDN地理信息专家”称号,虽然自己觉得离专家的差距还很大,但一直在努力,^-^。
suen的文章
原创 39 篇
翻译 5 篇
转载 41 篇
评论 65 篇
小粟的公告
终于完成GeoWeb开源社区(http://www.gisdev.cn)的搭建和初步测试,请大家注册用户,测试,并提出宝贵意见。
最近评论
douweibin:我也建了一个群 群号是 51824242 也做您的后备群用吧 呵呵
sparkwong3:#common22 发表于2008-08-07 15:54:58 IP: 119.40.19.*
不知道你注意到没有 百度地图其实用的是mapbar的图片引擎

对的
chenshengbj:你好!我想问一下,怎么用GDAL类库对栅格影像进行矢量化?GDAL提供矢量多边形的最小外包矩形的接口吗?我的邮箱是chenshengbj@163.com,希望给我好消息。我继续这几个功能。
xbt746:呵呵,为什么不用postgresql试试
xbt746:呵呵,为什么不用postgresql试试
文章分类
收藏
    相册
    我的照片
    GIS
    .NET开源GIS翻译WiKi
    GeoWeb开源社区
    GIS空间站
    GIS论坛
    中科院地理所
    国家测绘局
    我的旧BLOG归档
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 基于.NET 2.0的GIS开源项目SharpMap分析手记(九):SharpMap中Styles和Geometries名称空间下有关类的分析收藏

    新一篇: 基于.NET 2.0的GIS开源项目SharpMap分析手记(十):开源空间信息软件体系与技术概述 | 旧一篇: 基于.NET 2.0的GIS开源项目SharpMap分析手记(八):怎样对SharpMap进行扩展开发——从许可角度来谈

    基于.NET 2.0GIS开源项目SharpMap分析手记(九):SharpMapStylesGeometries名称空间下有关类的分析

    粟卫民 http://www.gisdev.cn/ http://blog.csdn.net/suen/ 日期:2007-6-15

    转载自:心帆http://group.qq.com/group_index.shtml?groupid=8755486

    1 Styles名称空间下有关类的分析

    1.1 概述

    Style,译为样式,是在绘制图形时使用。

    GIS中,系统在保存数据时,有的格式对每一个要素有其的显示样式,比如Mapinfo;有的不保存,比如Shapefile。无论是否保存,在绘制图形时,都需要使用样式来显示一个要素。比如一个要素是用来表示公路,一个要素用来表示河流,他们在文件存储时是没有太大的区别,而在绘制时,由于使用了不同的样式,就可以很明显的看出来。

    1.2 与其他模块的关系

    样式的使用,在SharpMap中,主要是有图层绘制(又称为图层渲染)时使用,具体见VectorLayer.cs中的Render方法。

    VectorLayer中,包含有一个样式对象(见private Styles.VectorStyle _Style;),说明SharpMap的思路是一个图层只能有一种显示样式(专题图时例外)。同时,SharpMapShapefile文件格式非常近,一个图层也只有一种类型的数据(要么都是点,要么都是线,要么都是面)。而Mapinfo则不是这样,一个图层可以包含有点线面各种数据。SharpMap使用这样的方式,也是出于简单易行的目的。

    1.3 本身的构成

    SharpMap中,实现IStyle接口的有两个类,VectorStyleLabelStyle

    VectorStyle是用来绘制矢量要素的,点或者线或者面都可以使用这个类的对象来进行绘制,但是不同的几何类型是使用VectorStyle对象中的不同成员(似乎在设计时有缺陷,比方如果这个图层都是线,那VectorStyle中的_FillStyle就不用,但这好像不太合理)。查看VectorStyle的几个成员,很容易明白各个成员的意义。

    LabelStyle用来绘制标注文本,可以设置其字体,颜色,大小,背景发光,以及水平对齐和垂直对齐方式等等,应该说对一般的文本显示来说够用了。

    SharpMap中由于使用的是样式,没有符号库的概念,所以只有使用一些GDI+中的基本画笔、画刷对象,不能绘制出复杂的符号,尤其是线符号是没办法解决的,比方说国界的符号,桥梁的符号等等。

    2 Geometries名称空间下有关类的分析

    2.1 Geometries概述

    Geometry在此处指的是现实世界中的各种事物抽象出来的几何描述,从大的方面来讲,就是点、线、面三种类型,个人认为译为几何类型比较合适。例如,一个城市可以抽象为一个点,一条道路可以用一条线来描述,大面积的湖泊则可以用面来描述。

    应该注意还有一个词汇Feature,一般译为要素。要素在理解上是对现实世界中的一个对象的完整描述,现实中的对象,除了用几何类型来描述其位置信息,还应该有其他的属性信息。例如,一个城市,可以用一个点描述其位置信息,再加上城市的名称、人口数、面积等等其它属性,就构成了Feature。简单的说,就是Geometry加上其他的属性信息可以构成Feature

    SharpMap中的Geometry使用的是OpenGIS中对几何类型的规范,在本文的第三部分中将会详细说明Geometry下的各个子类。

    2.2 与系统其他类的关系

    GeometrySharpMap中的基础,用来的它的地方主要是在数据访问与图层绘制以及空间分析和空间关系判定时。

    GIS中,矢量数据一般是以记录的形式存储在文件或者数据库中(一个要素对应一条记录),一个底层平台软件,需要将数据读取出来,然后在内存中构建成Feature,而大部分的空间分析与操作,需要提取Feature中的Geometry来进行,比方判断两个对象是否包含。

    数据访问需要解决的问题就是要将文件或者数据库中的要素读取出来,构建内存中的要素。

    如果系统设计的要素不全,有些文件中的Geometry就完全正确的读取。比如Mapinfo中有圆对象, SharpMapGeometry没有相关的类,这时要么把圆对象抛弃,要么用转换的方法,比如可以在圆周上加密点,然后以面对象构建它。

    从抽象的角度来看,系统的几何类型是越少越好,但是从功能和兼容其他数据的角度,系统的几何类型是越丰富越好,这是一对矛盾。应该说使用OpenGIS中的几何类型,也可以描述出现实世界了。任何一个软件不可能解决所有的问题。

    图层绘制,就是需要将内存中Geometry绘制成屏幕上的图形,这个地方一般来说都需要Geometry。(有一种做法其实也可以不用Geometry,那就是读取一条要素后,放入一个事先开辟好的足够大的内存空间,然后直接绘制出来。但是这不太合理)

    空间分析使用Geometry是很容易理解的,很多分析都是直接在Geometry类的基础上做的,比方说点、线、面的缓冲区就可以如此。

    空间关系的判定也需要使用,比方说要判断对象是否相交时,如果没有构建两个Geometry,就没办法判断这两个几何体是否相交。

     

    发表于 @ 2007年06月15日 15:43:00|评论(loading...)|编辑

    新一篇: 基于.NET 2.0的GIS开源项目SharpMap分析手记(十):开源空间信息软件体系与技术概述 | 旧一篇: 基于.NET 2.0的GIS开源项目SharpMap分析手记(八):怎样对SharpMap进行扩展开发——从许可角度来谈

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 小粟