使用GDAL和Delphi创建轮廓线

| 我正在尝试使用Delphi和GDAL18创建等值线。为此,我使用以下代码:
layer:= OGRCreateLayer( ogr_ds, PAnsiChar(WideStringToString(\'contour\')), nil, ogr.wkbLineString, nil);
err:= GDALContourGenerate(band, 1, 0, 0, aFixedLevel, 0, 0, layer, 0, 1, nil, 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),但这没有帮助。 如果您有任何建议,我会很高兴。 非常想念 马里奥 [edit]我发现当我用\“ nil \”重播\“ layer \”(在GDALContourGenerate中)时,会发生相同的错误。所以也许问题出在其他地方。[/ edit]     
已邀请:
        您可能应该在外部声明之后添加“ 2”,这样(名称与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;
或“ 4”字取决于dll的编译方式。 对于字符串参数,由于gdal在其C Flat API中使用
*char
参数AFAIK,因此可以直接使用
PAnsiChar
,如下所示:
      layer:= OGRCreateLayer( ogr_ds, \'contour\', nil, ogr.wkbLineString, nil);
在Delphi 2009之前,您可以使用
pointer(aString)
表示此类参数,而从Delphi 2009开始,只需键入ѭ9即可键入cast10ѭ值。 您如何转换.h标头?     

要回复问题请先登录注册