2009年7月19日 周日11:24

GDAL/OGR是非常著名的开源GIS库,GDAL是对栅格数据进行操作,而OGR是对矢量数据进行操作,它们相当于一个通用数据访问库。甚至ESRI的产品中都用了此库。

现在,GDAL/OGR也提供了对.NET的编译支持,具体的编译与使用过程大家GOOGLE一下,网上资料非常详尽。其官网上有一些C,C++,Python的示例代码。 但没有C#的示例代码,但程序之间大同小异,下面我试的一个C#创建Shape文件,并往其中添加Point的示例代码,希望对各位有用。

 

 1C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            //注册Ogr库
 2C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            string pszDriverName = "ESRI Shapefile";
 3C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            OSGeo.OGR.Ogr.RegisterAll();
 4C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]
 5C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            //调用对Shape文件读写的Driver接口
 6C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            OSGeo.OGR.Driver poDriver = OSGeo.OGR.Ogr.GetDriverByName(pszDriverName);
 7C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            if (poDriver == null)
 8C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]                MessageBox.Show("Driver Error");
 9C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]
10C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]           //用此Driver创建Shape文件
11C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            OSGeo.OGR.DataSource poDS;
12C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            poDS = poDriver.CreateDataSource("point_out.shp"null);
13C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            if (poDS == null)
14C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]                MessageBox.Show("DataSource Creation Error");
15C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]
16C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            //创建层Layer
17C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            OSGeo.OGR.Layer poLayer;
18C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            poLayer = poDS.CreateLayer("point_out"null, OSGeo.OGR.wkbGeometryType.wkbPoint, null);
19C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            if (poLayer == null)
20C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]                MessageBox.Show("Layer Creation Failed");
21C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            
22C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            //创建属性列两列
23C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            OSGeo.OGR.FieldDefn oField = new OSGeo.OGR.FieldDefn("名称", OSGeo.OGR.FieldType.OFTString);
24C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            oField.SetWidth(16);
25C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            OSGeo.OGR.FieldDefn oField2 = new OSGeo.OGR.FieldDefn("高度", OSGeo.OGR.FieldType.OFTInteger);            
26C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            poLayer.CreateField(oField, 1);
27C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            poLayer.CreateField(oField2, 0);
28C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]
29C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            //创建一个Feature,一个Point
30C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            OSGeo.OGR.Feature poFeature = new Feature(poLayer.GetLayerDefn());
31C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            OSGeo.OGR.Geometry pt = new Geometry(OSGeo.OGR.wkbGeometryType.wkbPoint);
32C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            //往创建的Shape中写入二十个点,
33C#用GDAL/OGR库创建与写Shape文件,测试通过[原创]            for (int i = 100; i < 120; i++)
34            poDS.Dispose();

这里还没有涉及到定义投影坐标系的问题,后面将会继续完善起来。

此文链接:http://www.cnblogs.com/webgis8/archive/2009/07/19/1526425.html

From:giswei之修道院

相关文章: