ArcObjects c++ 获取栅格或矢量图层的范围

        double xLeft = 0;
	double yBottom = 0;
	double xRight = 0;
	double yUpper = 0;
	if (0 == inputType)
	{
		//获取矢量图层的范围
		CComBSTR srcPath;
		srcPath = GeoProcessHander::QString2BSTR(inputPath);
		CComBSTR srcName;
		srcName = GeoProcessHander::QString2BSTR(inputName);
		IWorkspaceFactoryPtr ipWkspFactory(CLSID_ShapefileWorkspaceFactory);
		IWorkspacePtr ipWksp;
		HRESULT hrw = ipWkspFactory->OpenFromFile(srcPath, 0, &ipWksp);
		if (FAILED(hrw) || ipWksp == 0)
		{
			return false;
		}
		IFeatureClassPtr ipSrcFeatureClass;
		hrw = ((IFeatureWorkspacePtr)ipWksp)->OpenFeatureClass(srcName,
			&ipSrcFeatureClass);
		if (FAILED(hrw) || ipSrcFeatureClass == 0)
		{
			return false;
		}

		IFeatureLayerPtr ipFeatureLayer(__uuidof(FeatureLayer));
		ipFeatureLayer->putref_FeatureClass(ipSrcFeatureClass);
		IEnvelopePtr ipEnv(CLSID_Envelope);		
		ipFeatureLayer->get_AreaOfInterest(&ipEnv);
		
		ipEnv->get_XMax(&xRight);
		ipEnv->get_YMax(&yUpper);
		ipEnv->get_XMin(&xLeft);
		ipEnv->get_YMin(&yBottom);
	}
	else if (1 == inputType)
	{
		//获取栅格数据范围		
		CComBSTR srcPath;
		srcPath = GeoProcessHander::QString2BSTR(inputPath);
		CComBSTR srcName;
		srcName = GeoProcessHander::QString2BSTR(inputName);
		IWorkspaceFactoryPtr ipWkspFactory(CLSID_RasterWorkspaceFactory);
		IWorkspacePtr ipWksp;
		HRESULT hr = ipWkspFactory->OpenFromFile(srcPath, 0, &ipWksp);
		if (FAILED(hr) || ipWksp == 0)
		{
			return false;
		}

		IRasterWorkspacePtr ipRastWork(ipWksp);
		IRasterDatasetPtr ipRastDataset;
		hr = ipRastWork->OpenRasterDataset(srcName, &ipRastDataset);
		if (FAILED(hr) || ipRastDataset == 0)
		{
			return false;
		}

		IRasterLayerPtr ipRasterLayer(__uuidof(RasterLayer));
		ipRasterLayer->CreateFromDataset(ipRastDataset);
		IEnvelopePtr ipEnv(CLSID_Envelope);
		ipRasterLayer->get_AreaOfInterest(&ipEnv);

		ipEnv->get_XMax(&xRight);
		ipEnv->get_YMax(&yUpper);
		ipEnv->get_XMin(&xLeft);
		ipEnv->get_YMin(&yBottom);
	}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值