读SHAPE文件的属性数据

http://blog.sina.com.cn/s/blog_5fe64ab30100fkjx.html

///
//读取属性数据,调试后可以运行
void CAsongGISView::OnMenuExportdata()
{
 HRESULT hr;
 IMapPtr ipMap;

 ILayerPtr ipLyr;
 ipMap = m_MapControl.GetMap();
 if(ipMap)
  hr = ipMap->get_Layer(0,&ipLyr);

 IFeatureLayerPtr ipFeatLayer(ipLyr);

 if(FAILED(hr))
 {
  AfxMessageBox("获取图层错误!");
  return;
 }

 IFeatureClassPtr  ipFeatureClass;
 
 hr = ipFeatLayer->get_FeatureClass(&ipFeatureClass);

 if (FAILED(hr))
 {
  AfxMessageBox("Failed to open the feature class.");
  return;
 }
 
 IFeatureCursorPtr ipFeatureCursor;
 ipFeatureClass->Search(0, VARIANT_TRUE, &ipFeatureCursor);
 
 IFieldsPtr ipFields;
 ipFeatureCursor->get_Fields(&ipFields);

 long lFieldCount; 
 ipFields->get_FieldCount(&lFieldCount);
 
 IFieldPtr ipField;
 CComBSTR bsFieldNames;
 CComBSTR bsFieldName;

 for (int i = 0; i < lFieldCount; ++i)
 {
  ipFields->get_Field(i, &ipField);
  ipField->get_Name(&bsFieldName);
  bsFieldNames += CComBSTR(L"  ");
  bsFieldNames += bsFieldName;
 }

 IFeaturePtr ipFeature;
 ipFeatureCursor->NextFeature(&ipFeature);

 CComBSTR bsValues;
 CComVariant varValue;
 esriFieldType esriFldType;
 
 while (ipFeature)
 {
  bsValues = CComBSTR(L"  ");
  for (int i = 0; i < lFieldCount; ++i)
  {
   ipFields->get_Field(i, &ipField);
   ipField->get_Type(&esriFldType);
   switch (esriFldType)
   {
    case (esriFieldTypeGeometry):
      bsValues += CComBSTR(L"Shape  ");
      break;
    
    default:
      ipFeature->get_Value(i, &varValue);
      if (varValue.vt != VT_BSTR)
        varValue.ChangeType(VT_BSTR);
      bsValues += varValue.bstrVal;
      bsValues += CComBSTR(L"  ");
      break;
   }
  }

  ipFeatureCursor->NextFeature(&ipFeature);
 } 
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值