在delphi中调用Geoprocessor 调用ArcToolBox工具

本文介绍使用Delphi进行地理信息系统(GIS)开发的方法,并通过与VB代码的对比,展示如何利用ArcGIS Engine进行空间数据处理。具体示例为裁剪空间数据。
用delphi开发AO可以参考VB的代码 两者实现方式相当
但是也有一些细微的差别需要自己去琢磨
关于Geoprocessing 参考文档 Using Geoprocessing Tools in VB
上代码:


var

pInLayer        :ILayer;
  pClipLayer      :ILayer;
  pFeaInLayer     :IFeatureLayer;
  pFeaClipLayer   :IFeatureLayer;
  sInFeatures,sClipFeature,sOutFeatures : WideString;
  pathName:WideString;
  pDataset:IDataset;
  pFeaClass:IFeatureClass;
  pWS:IWorkspace;
  pGeoResult:IGeoprocessorResult;

  pAOI : IAoInitialize;
  pLicenseStatus:TOleenum;
  pVA             :IVariantArray;
  pGP             :IGeoProcessor;

begin
 pFeaInLayer:=pInLayer as IFeatureLayer;
    pFeaClipLayer:=pClipLayer as IFeatureLayer;

    pAOI:=CoAoInitialize.Create as IAoInitialize;
    pAOI.Initialize(esriLicenseProductCodeArcInfo,pLicenseStatus);

    pGP:=CoGeoprocessor.Create as IGeoprocessor;
    //pGP.ResetEnvironments;
    //pGP.SetEnvironmentValue('workspace','C:\temp');
    //pGP.AddToolbox('D:\Program Files\ArcGIS\ArcToolBox\Toolboxes\Analysis Tools.tbx');
    pGP.Set_AddOutputsToMap(True);
    pGP.Set_OverwriteOutput(True);
    pVA:=CoVarArray.Create as IVariantArray;

    pFeaInLayer.Get_FeatureClass(pFeaClass);
    pDataset:=pFeaClass as IDataset;
    pDataset.Get_Workspace(pWS);
    pWS.Get_PathName(pathName);
    sInFeatures:=pathName+'\'+OverlayChooseLayerFrm.LayerName1+'.shp';

    pFeaClipLayer.Get_FeatureClass(pFeaClass);
    pDataset:=pFeaClass as IDataset;
    pDataset.Get_Workspace(pWS);
    pWS.Get_PathName(pathName);
    sClipFeature:=pathName+'\'+OverlayChooseLayerFrm.LayerName2+'.shp';

    CreateDirectory(pChar('C:\temp'),Nil);
    sOutFeatures:='C:\temp\Clip_output.shp';

    pVA.Add(sInFeatures);
    pVA.Add(sClipFeature);
    pVA.Add(sOutFeatures);

    pGP.Execute('Clip_analysis',pVA,Nil,pGeoResult);
    pGP.Get_MessageCount(layercount);
   { for I := 0 to layercount - 1 do
    begin
      pGP.GetMessage(i,sOutFeatures);
      showmessage(sOutFeatures);
    end;   }
    pAOI.shutdown;
    ShowMessage('裁剪完成,裁剪结果保存于C:\Temp目录下');
end

转载于:https://www.cnblogs.com/hihikoo/archive/2009/08/30/1556676.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值