[GDAL]写入shp

 C#通过Wkt码构建shp,记录写不进去!

复制代码
 1  static void WriteVectorFile()
 2         {
 3             string strVectorFile = "E:\\";
 4             // 注册所有的驱动
 5             Ogr.RegisterAll();
 6             //创建数据,这里以创建ESRI的shp文件为例
 7             string strDriverName = "ESRI Shapefile";
 8             Driver oDriver = Ogr.GetDriverByName(strDriverName);
 9             if (oDriver == null)
10             {
11                 Console.WriteLine("%s 驱动不可用!\n", strVectorFile);
12                 return;
13             }
14             // 创建数据源
15             DataSource oDS = oDriver.CreateDataSource(strVectorFile, null);
16             if (oDS == null)
17             {
18                 Console.WriteLine("创建矢量文件【%s】失败!\n", strVectorFile);
19                 return;
20             }
21 
22             // 创建图层,创建一个多边形图层,这里没有指定空间参考,如果需要的话,需要在这里进行指定
23             Layer oLayer = oDS.CreateLayer("TestPolygon", null, wkbGeometryType.wkbPolygon, null);
24             if (oLayer == null)
25             {
26                 Console.WriteLine("图层创建失败!\n");
27                 return;
28             }
29 
30             // 下面创建属性表
31             // 先创建一个叫FieldID的整型属性
32             FieldDefn oFieldID = new FieldDefn("FieldID", FieldType.OFTInteger);
33             oLayer.CreateField(oFieldID, 1);
34 
35             // 再创建一个叫FeatureName的字符型属性,字符长度为50
36             FieldDefn oFieldName = new FieldDefn("FieldName", FieldType.OFTString);
37             oFieldName.SetWidth(100);
38             oLayer.CreateField(oFieldName, 1);
39             FeatureDefn oDefn = oLayer.GetLayerDefn();
40 
41             // 创建三角形要素
42             Feature oFeatureTriangle = new Feature(oDefn);
43             oFeatureTriangle.SetField(0, 0);
44             oFeatureTriangle.SetField(1, "三角形");
45             Geometry geomTriangle = Geometry.CreateFromWkt("POLYGON ((0 0,20 0,10 15,0 0))");
46             oFeatureTriangle.SetGeometry(geomTriangle);
47             oLayer.CreateFeature(oFeatureTriangle);
48 
49             // 创建矩形要素
50             Feature oFeatureRectangle = new Feature(oDefn);
51             oFeatureRectangle.SetField(0, 1);
52             oFeatureRectangle.SetField(1, "矩形");
53             Geometry geomRectangle = Geometry.CreateFromWkt("POLYGON ((30 0,60 0,60 30,30 30,30 0))");
54             oFeatureRectangle.SetGeometry(geomRectangle);
55             oLayer.CreateFeature(oFeatureRectangle);
56 
57             // 创建五角形要素
58             Feature oFeaturePentagon = new Feature(oDefn);
59             oFeaturePentagon.SetField(0, 2);
60             oFeaturePentagon.SetField(1, "五角形");
61             Geometry geomPentagon = Geometry.CreateFromWkt("POLYGON ((70 0,85 0,90 15,80 30,65 15,70 0))");
62             oFeaturePentagon.SetGeometry(geomPentagon);
63             oLayer.CreateFeature(oFeaturePentagon);
64             Console.WriteLine("\n数据集创建完成!\n");
65         }
View Code
复制代码

通过对象构建

 

 

posted @   太一吾鱼水  阅读(385)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
历史上的今天:
2012-04-02 MVC和MVP的初步理解
点击右上角即可分享
微信分享提示