加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用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的?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读