用GDAL 1.4 For C#来写ShapeFile注意事项

GDAL1.5已经出来一段时间了,一直没有机会用。用时又来不及下,现在还主要是用1.4。
用swig将在gdal1.4基础上生成C# 的Wrap后发现,OGR命名空间下几何体方面的类只有Geometry,没有那些熟悉的Point,PolyLine,Ploygon等,搜索了命名空间也没发现,可能是用的swig的头文件里边就没有包装1.4这个几个类吧。另外一些常量也没有找到,几何打算放弃1.4下载1.5编译,或者用JTS中的类库来操作。
不过最后还是搞好了,这里记录一下要点:

1、常量大部分在ogr类中,这里ogr(小写)是个类,主要提供了一下常量和静态函数,方便调用。不过元数据中没有注释,有点不方便理解只好参考c++版帮助。
2、有Geometry类基本就可以实现创建各类几何对象,方法是用WKT或者WKB或者GML格式先构造好几何数据,在该类构造函数中传入即可。
3、还有一点要注意的是,有的地方类型如果不是很清楚的时候尽量用UnKnow类型,这样类库可以根据传入参数自动识别,更可靠一些。
4、创建Shapefile的主要流程大概是:1)CreateDatasource。2)CreateLayer。3)CreateFiled。4)New Feature,注意要用Layer的Def,并给各个字段SetValue,SetGeometry。5)Layer.CreateFeature将Featrue写入文件。

5、还有一个问题没解决:操作完毕后无法关闭文件,导致别的进程无法访问刚刚创建的文件,必须关闭才可以。推测是托管造成的,但还不知道如何解决。也许这些问题都已经在1.5中解决掉了,有时间应该试一下。

原文地址:https://www.cnblogs.com/flyingfish/p/1147610.html