C# 中SharpMap的简单使用实例详解
什么是SharpMap
SharpMap是一个用于展示地理信息的C#开源框架。它支持众多的地理信息数据格式和投影方式,并且可以与许多数据库和WebGIS系统无缝集成。
SharpMap的基本用法
安装SharpMap
在Visual Studio中创建一个C#项目后,可以使用NuGet包管理器搜索并安装SharpMap。
创建地图
以下代码使用SharpMap创建一个简单的地图:
SharpMap.Map myMap = new SharpMap.Map(new System.Drawing.Size(800, 600));
myMap.BackColor = System.Drawing.Color.White;
SharpMap.Layers.VectorLayer myLayer = new SharpMap.Layers.VectorLayer("MyLayer");
myMap.Layers.Add(myLayer);
SharpMap.Layers.LabelLayer myLabelLayer = new SharpMap.Layers.LabelLayer("MyLabelLayer");
myMap.Layers.Add(myLabelLayer);
这段代码创建了一个大小为800x600像素、背景为白色的地图,同时创建了两个图层:一个名为"MyLayer"的矢量图层和一个名为"MyLabelLayer"的标注图层。
加载地理信息数据
SharpMap支持加载多种地理信息数据格式,以下是几个常用的地理信息数据格式示例:
加载Shapefile
SharpMap.Data.Providers.ShapeFile myShapefile = new SharpMap.Data.Providers.ShapeFile("myShapefile.shp", true);
myLayer.DataSource = myShapefile;
加载GeoTIFF
SharpMap.Layers.GdalRasterLayer myTiffLayer = new SharpMap.Layers.GdalRasterLayer("myTiffLayer", "myGeoTiff.tif");
myMap.Layers.Add(myTiffLayer);
加载数据库中的数据
string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=True";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM MyTable", connection);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
SharpMap.Data.Providers.DataTablePoint dataSource = new SharpMap.Data.Providers.DataTablePoint(dataTable, "XColumn", "YColumn");
myLayer.DataSource = dataSource;
渲染地图
以下代码将创建好的地图渲染到Windows窗口上:
SharpMap.Forms.MapBox myMapBox = new SharpMap.Forms.MapBox();
myMapBox.Map = myMap;
this.Controls.Add(myMapBox);
示例说明
以下是两个使用SharpMap的示例:
示例1:创建一幅简单的地图
SharpMap.Map myMap = new SharpMap.Map(new System.Drawing.Size(800, 600));
myMap.BackColor = System.Drawing.Color.White;
SharpMap.Layers.VectorLayer myLayer = new SharpMap.Layers.VectorLayer("MyLayer");
myMap.Layers.Add(myLayer);
SharpMap.Layers.LabelLayer myLabelLayer = new SharpMap.Layers.LabelLayer("MyLabelLayer");
myMap.Layers.Add(myLabelLayer);
SharpMap.Data.Providers.ShapeFile myShapefile = new SharpMap.Data.Providers.ShapeFile("myShapefile.shp", true);
myLayer.DataSource = myShapefile;
SharpMap.Forms.MapBox myMapBox = new SharpMap.Forms.MapBox();
myMapBox.Map = myMap;
this.Controls.Add(myMapBox);
以上代码创建了一个大小为800x600像素、背景为白色的地图,并加载了一个名为"myShapefile.shp"的Shapefile地理信息数据,并将该数据渲染在地图上。
示例2:创建一个支持缩放、平移、旋转、量测等交互操作的地图
SharpMap.Map myMap = new SharpMap.Map(new System.Drawing.Size(800, 600));
myMap.BackColor = System.Drawing.Color.White;
SharpMap.Layers.VectorLayer myLayer = new SharpMap.Layers.VectorLayer("MyLayer");
myMap.Layers.Add(myLayer);
SharpMap.Layers.LabelLayer myLabelLayer = new SharpMap.Layers.LabelLayer("MyLabelLayer");
myMap.Layers.Add(myLabelLayer);
SharpMap.Data.Providers.ShapeFile myShapefile = new SharpMap.Data.Providers.ShapeFile("myShapefile.shp", true);
myLayer.DataSource = myShapefile;
SharpMap.Rendering.Thematics.CustomTheme myTheme = new SharpMap.Rendering.Thematics.CustomTheme(GetFeatureStyle);
myLayer.Theme = myTheme;
SharpMap.Forms.MapBox myMapBox = new SharpMap.Forms.MapBox();
myMapBox.Map = myMap;
myMapBox.Dock = DockStyle.Fill;
SharpMap.Rendering.Decoration.Legend myLegend = new SharpMap.Rendering.Decoration.Legend();
myLegend.LegendStyle = SharpMap.Rendering.Decoration.LegendStyle.Table;
myLegend.Title = "My Map Legend";
myLegend.Dock = DockStyle.Right;
SharpMap.Forms.ToolBar myToolBar = new SharpMap.Forms.ToolBar();
myToolBar.Dock = DockStyle.Top;
myToolBar.MapBox = myMapBox;
SharpMap.Forms.StatusBar myStatusBar = new SharpMap.Forms.StatusBar();
myStatusBar.Dock = DockStyle.Bottom;
myStatusBar.MapBox = myMapBox;
this.Controls.Add(myMapBox);
this.Controls.Add(myLegend);
this.Controls.Add(myToolBar);
this.Controls.Add(myStatusBar);
private SharpMap.Styles.VectorStyle GetFeatureStyle(SharpMap.Data.FeatureDataRow row)
{
SharpMap.Styles.VectorStyle style = new SharpMap.Styles.VectorStyle();
return style;
}
以上代码创建了一个支持缩放、平移、旋转、量测等交互操作的地图,并加载了一个名为"myShapefile.shp"的Shapefile地理信息数据,并将该数据渲染在地图上。此示例还加入了工具栏、状态栏和图例等控件,并定义了一个特征样式函数"GetFeatureStyle"来在地图中自定义渲染数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 中SharpMap的简单使用实例详解 - Python技术站