使用GDAL和Delphi创建轮廓线
发布时间:2020-12-15 04:13:02 所属栏目:大数据 来源:网络整理
导读:我正在尝试使用Delphi和GDAL18创建isolines.为此,我使用以下代码: layer:= OGRCreateLayer( ogr_ds,PAnsiChar(WideStringToString('contour')),nil,ogr.wkbLineString,nil);err:= GDALContourGenerate(band,1,aFixedLevel,layer,nil); GDALContourGenerate
我正在尝试使用Delphi和GDAL18创建isolines.为此,我使用以下代码:
layer:= OGRCreateLayer( ogr_ds,PAnsiChar(WideStringToString('contour')),nil,ogr.wkbLineString,nil); err:= GDALContourGenerate(band,1,aFixedLevel,layer,nil); GDALContourGenerate命令返回“不支持的几何类型” – 错误. 我通过以下方式包含了gdal18.dll: function GDALContourGenerate(srcBand: TGDALRasterBandH; contourInterval: double; contourBase: double; fixedLevelCount: longint; fixedLevel: TDoubleArray2; useNoData: longint; noDataValue: double; layer: TOGRLayerH; idField: longint; elevField: longint; pfnProgress: TGDALProgressFunc; pProgressArg : POINTER): TOGRErr; external External_Lib name 'GDALContourGenerate'; 我也尝试过其他几何类型(例如wkbLineString25D),但这没有用. [编辑]我发现当我用“nil”重放“layer”(在GDALContourGenerate中)时会发生同样的错误.所以也许问题出在其他地方.[/ edit] 解决方法
您可能应该在外部声明之后添加cdecl,因此(名称与Delphi中的函数声明匹配,因此可以忽略):
function GDALContourGenerate(srcBand: TGDALRasterBandH; contourInterval: double; contourBase: double; fixedLevelCount: longint; fixedLevel: TDoubleArray2; useNoData: longint; noDataValue: double; layer: TOGRLayerH; idField: longint; elevField: longint; pfnProgress: TGDALProgressFunc; pProgressArg : POINTER): TOGRErr; cdecl; external External_Lib; 或者stdcall单词取决于dll是如何编译的. 对于字符串参数,由于gdal在其C flat API中使用* char参数AFAIK,因此您可以直接使用PAnsiChar: layer:= OGRCreateLayer( ogr_ds,'contour',nil); 在Delphi 2009之前,你可以使用指针(aString)来表示这样的参数,而且自从Delphi 2009以来,只需要一个指针(AnsiString(aString))来强制转换一个aString:string值. 你是怎么convert the .h header的? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |