zoukankan      html  css  js  c++  java
  • SharpMap源代码解析

    1. 简介

    SharpMap是基于.net2.0的GIS系统。支持多种.NET开发语言(C# C++ 等)。使用属性数据作为注记。符合OpenGIS的简单要素规范(OpenGIS Simple Features Specification),支持点、线、面、多点、多线、多面、几何对象集合等要素类型)。可使用代理(delegates)编制复杂主题地图。能实时投影。支持使用Http Handler生成地图。支持AJAX地图控件。支持WMS1.3.0服务。支持数据格式扩展。支持图层扩展。

    2. 下载SharpMap

     下载地址:http://sharpmap.codeplex.com/SourceControl/latest

    下载的压缩文件中,有三个目录,一个是Branches,为SharpMap的一些分支版本;一个叫BuildProcessTemplates,是一些预定义的项目编译模板;第三个目录Trunk,是包含项目代码的主目录,也是主要讲述的内容。

    Trunk目录下有三个Visual Studio项目文件,即SharpMap.sln、SharpMap.VS2008.sln、SharpMap.VS2010.sln,分别对应VS2005、VS2008、VS2010三个版本。

    Trunk目录还包含如下子目录:

    (1)ExternalReferences:它是项目用到的第三方库文件。

    (2)SharpMap。它是核心项目,包括Map、Layer、Data、Geometries、Rendering、Style等主要内容。

    (3)SharpMap.UI。它包括地图控件。

    (4)SharpMap.Extensions。它包括一些数据、图层扩展对象。

    (5)UnitTests。它用于管理单元测试。

    (6)SharpMap.SqlServerSpatialObjects。空间数据库,底层使用MS SQLServer的空间对象机制。

    (7)PostgisDemoDb、MsSqlSpatialDemoDB。它们是使用PostGIS、MsSqlSpatial空间数据库的例子项目。

    (8)DemoWebSite、DemoWinForm、WinFormSamples。它们是三个综合实例,第一个为Web应用,其他两个为桌面系统。

    (9)ExampleCodeSnippets。它是SharpMap的代码段项目。

    二、地图Map类

    Map是装载地图图层Layer的容器。用户可以通过创建Map对象的实例来得到地图,并通过GetMap方法来得到渲染(render)后的地图图形。

    实例:

    构造一个地图对象,代码

    SharpMap.Map myMap = new SharpMap.Map();
    myMap.MinimumZoom = 100; //最小缩放
    myMap.BackgroundColor = Color.White;
    SharpMap.Layers.VectorLayer myLayer = new SharpMap.Layers.VectorLayer("My layer");
    string shpLayerFullPath = @"C:dataLotlines.shp";
    myLayer.DataSource = new ShapeFile(shpLayerFullPath);
    myLayer.FillStyle = new SolidBrush(Color.FromArgb(240, 240, 240));
    myLayer.OutlineStyle = new Pen(Color.Blue, 1);
    myLayer.Style.Line.Width = 2;
    myLayer.Style.Line.Color = Color.Black;
    myLayer.Style.Line.EndCap = System.Drawing.Drawing2D.LineCap.Round;
    myLayer.Style.Line.StartCap = layRailroad.LineStyle.EndCap;
    myLayer.Style.Line.DashPattern = new float[]{4.0f, 2.0f};
    myLayer.Style.EnableOutline = true;
    myLayer.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
    myLayer.MaxVisible = 40000;
    myMap.Layers.Add(myLayer);
    myMap.Center = new SharpMap.Geometries.Point(725000, 6180000);
    myMap.Zoom = 1200;
    myMap.Size = new System.Drawing.Size(300, 200);
    System.Drawing.Image imgMap = myMap.GetMap();
    

      

    Map类的数据成员、属性、方法和事件

    三、地图控件MapImage类

    四、图层类

    五、绘制渲染类Rendering

    六、样式类Style

    七、数据类Data

    八、几何对象类Geometry

    九、Windows应用程序开发——WinFormSamples

    十、Windows应用程序开发——DemoWinForm

    十一、数据源扩展与图层对象扩展

    >>与GPSMap对比

    开发语言:C#  -  Java

    开发平台:Windows  -  Android

    Map  -   Map

    MapImage  -  MapControl

    Layer  -  Layer

    Rendering  -  Render

    Style  -  ?

    Data(PostGIS空间数据库)  -  Dataset(SQLite数据库)

    Geometry  -  Cargeometry

     

    D:DocumentsVisual Studio 2008Projectssharpmap-78712TrunkSharpMap.VS2008.sln

     d:DocumentsVisual Studio 2008ProjectsMySharpMapMySharpMap

    注:参考书籍:陈真,何津,余瑞, 《GIS软件SharpMap源码解析及应用》,2012,3.

  • 相关阅读:
    三国演义中的十大谎言 VS 程序员十大口头禅
    Node.js 的单线程事件驱动模型和内置的线程池模型
    为了让医院把医护还给患者,他们用了这个…
    华为云数据库内核专家为您揭秘:GaussDB(for MySQL)并行查询有多快?
    brew
    Python
    Python
    Python
    AtCoder Beginner Contest 215 (个人题解 A~F)
    AcWing 第 13 场周赛  补题记录
  • 原文地址:https://www.cnblogs.com/2008nmj/p/5458218.html
Copyright © 2011-2022 走看看