Gdal In C# 接口编译

18 views
Skip to first unread message

JoSn

unread,
Mar 12, 2009, 11:00:07 PM3/12/09
to gdal+python+GIS+geosings论坛
Gdal是栅格地理空间数据格式的转换开源类库,它使用一种单一的抽象数据模型,满足了其所支持的所有数据格式的应用需求。目前Gdal的最新版本为
GDAL/OGR 1.6.0
与Gdal类似地,与Gdal库一起的OGR类库,提供了对矢量数据的相关操作。
详细资料请参考GDAL
流浪者N应用Gdal是为了用C#实现对HDF文件的操作。
下面为流浪者N编译支持HDF4、HDF5的Gdal库的操作,首先声明流浪者N这么编译出的Gdal仍然不支持HDF,这里写下一为记录;二为交流,
寻求帮助。
流浪者N尝试编译的Gdal版本:gdal-1.5.2、gdal-1.6.0 ;
另外还需swig,这里用的版本:swigwin-1.3.38 ;HDF4:42r4-win-vnet;HDF5:5-182-win-
vs2005
为了支持HDF5,还需下载SZip,这里用szip21-vs2005 ;
OK,现在万事具备,只欠编译了,尽管编译出来不能支持HDF,但对于TIFF之类还是支持的,仍然期待…
编译准备……
1.Gdal压缩包、swigwin压缩包、HDF压缩包、szip压缩包解压;
2.修改。

修改Gdal中的bug,Source Files\leveller\levellerdataset.cpp文件171行 { “?,
kPI / 180.0, UNITLABEL_DEGREE },将“ “? ”修改为“ ”? “ ”,保存;
修改Gdal根目录下的nmake.opt文件:MSVC_VER=1400(即选择VS2005);GDAL_HOME=“YourDir”,
YourDir为你自己建立的用于存放编译生成的文件的地方,自行定义;SWIG = swig.exe,将swigwin解压后其中swig.exe
的路径填于此处;
3.再次修改nmake.opt,安装 Hdf4、Hdf5的驱动。

找到“Uncomment the following and update to enable NCSA HDF Release 4
support”位置,将该项下方的三个#去除。修改如下:HDF4_PLUGIN = YES HDF4_DIR = E:\JoSn
\sIon\Gdal0311_10\42r4-win-vnet HDF4_LIB = $(HDF4_DIR)\lib\
hd424.lib
同理修改HDF5的相关配置。修改如下:HDF5_PLUGIN = YES HDF5_DIR = E:\JoSn\sIon
\Gdal0311_10\5-182-win-vs2005 SZIP_DIR = E:\JoSn\sIon
\Gdal0311_10\szip21-vs2005-enc HDF5_LIB = $(HDF5_DIR)
\hdf5dll.lib \
$(SZIP_DIR)\dll\szlibdll.lib
修改部分结束
修改完毕,编译真正开始…
1.打开VS 2005 命令行,定位到Gdal所在的文件夹;
2.nmake /f makefile.vc;
3.nmake /f makefile.vc install;
4.nmake /f makefile.vc devinstall,这步完成后GDAL_HOME处生成一系列的文件,其bin目录下会有
gdal15.dll or gdal16.dll,视gdal版本而定。
5. cd swig\csharp,定位到gdal目录下的csharp文件夹。
6.nmake /f makefile.vc,这步完成后会在csharp目录下生成8个dll文件。将这8个文件拷贝到gdal15.dll
or gdal16.dll 所在位置(见第4步)。
测试程序……
1.添加*_csharp.dll 四个文件的引用。
2.OSGeo.GDAL.Gdal.AllRegister();
3.OSGeo.GDAL.Dataset ds=OSGeo.GDAL.Gdal.Open(@”d:
\test.tiff”,OSGeo.GDAL.Access.GA_ReadOnly);
4.int w = ds.RasterXSize; int h = ds.RasterYSize; MessageBox.Show
(”image width=” + w + “,height=” + h);
5.tiff文件的测试没有问题,但改为HDF4或HDF5文件就无能为力了。提示为:暂不支持该文件。
寻求交流与帮助
1.望对Gdal有较深研究者传授流浪者N编译支持HDF的方法
2.流浪者N后来用FWTools,据说FWTools编译的Gdal支持了HDF4、HDF5,但不知是流浪者N愚钝,不会用
FWTools2.2.8,还是FWTools2.2.8存在bug,总之有异常,说是“OSGeo.GDAL.GdalPINVOKE的类型初始值设
定项引发异常”,这倒与之前流浪者N错误编译Gdal库时的异常相同,不知是和缘故,望广大GIS同行们指点。
3.大家帮帮忙,期待ing

linux23...@gmail.com

unread,
Mar 17, 2009, 3:54:31 AM3/17/09
to gdal+python+GIS+geosings论坛
写的很正式,我很佩服你......呵呵

On 3月13日, 上午11时00分, JoSn <jors...@gmail.com> wrote:
> Gdal是栅格地理空间数据格式的转换开源类库,它使用一种单一的抽象数据模型,满足了其所支持的所有数据格式的应用需求。目前Gdal的最新版本为
> GDAL/OGR 1.6.0
> 与Gdal类似地,与Gdal库一起的OGR类库,提供了对矢量数据的相关操作。
> 详细资料请参考GDAL
> 流浪者N应用Gdal是为了用C#实现对HDF文件的操作。
> 下面为流浪者N编译支持HDF4、HDF5的Gdal库的操作,首先声明流浪者N这么编译出的Gdal仍然不支持HDF,这里写下一为记录;二为交流,
> 寻求帮助。
> 流浪者N尝试编译的Gdal版本:gdal-1.5.2、gdal-1.6.0 ;
> 另外还需swig,这里用的版本:swigwin-1.3.38 ;HDF4:42r4-win-vnet;HDF5:5-182-win-
> vs2005
> 为了支持HDF5,还需下载SZip,这里用szip21-vs2005 ;

> OK,现在万事具备,只欠编译了,尽管编译出来不能支持HDF,但对于TIFF之类还是支持的,仍然期待...
> 编译准备......


> 1.Gdal压缩包、swigwin压缩包、HDF压缩包、szip压缩包解压;
> 2.修改。
>
> 修改Gdal中的bug,Source Files\leveller\levellerdataset.cpp文件171行 { "?,
> kPI / 180.0, UNITLABEL_DEGREE },将" "? "修改为" "? " ",保存;
> 修改Gdal根目录下的nmake.opt文件:MSVC_VER=1400(即选择VS2005);GDAL_HOME="YourDir",
> YourDir为你自己建立的用于存放编译生成的文件的地方,自行定义;SWIG = swig.exe,将swigwin解压后其中swig.exe
> 的路径填于此处;
> 3.再次修改nmake.opt,安装 Hdf4、Hdf5的驱动。
>
> 找到"Uncomment the following and update to enable NCSA HDF Release 4
> support"位置,将该项下方的三个#去除。修改如下:HDF4_PLUGIN = YES HDF4_DIR = E:\JoSn
> \sIon\Gdal0311_10\42r4-win-vnet HDF4_LIB = $(HDF4_DIR)\lib\
> hd424.lib
> 同理修改HDF5的相关配置。修改如下:HDF5_PLUGIN = YES HDF5_DIR = E:\JoSn\sIon
> \Gdal0311_10\5-182-win-vs2005 SZIP_DIR = E:\JoSn\sIon
> \Gdal0311_10\szip21-vs2005-enc HDF5_LIB = $(HDF5_DIR)
> \hdf5dll.lib \
> $(SZIP_DIR)\dll\szlibdll.lib
> 修改部分结束

> 修改完毕,编译真正开始...


> 1.打开VS 2005 命令行,定位到Gdal所在的文件夹;
> 2.nmake /f makefile.vc;
> 3.nmake /f makefile.vc install;
> 4.nmake /f makefile.vc devinstall,这步完成后GDAL_HOME处生成一系列的文件,其bin目录下会有
> gdal15.dll or gdal16.dll,视gdal版本而定。
> 5. cd swig\csharp,定位到gdal目录下的csharp文件夹。
> 6.nmake /f makefile.vc,这步完成后会在csharp目录下生成8个dll文件。将这8个文件拷贝到gdal15.dll
> or gdal16.dll 所在位置(见第4步)。

> 测试程序......

Reply all
Reply to author
Forward
0 new messages