设为首页 加入收藏

TOP

C++ AO读取shapefile的属性值(一)
2014-03-10 12:53:17 来源: 作者: 【 】 浏览:226
Tags:  读取 shapefile 属性

  C++ AO读取一个shapefile文件的所有属性值

  #include "stdafx.h"

  #include "iostream.h"

  #include "atlbase.h"

  #include "comdef.h" 字串1

  #pragma warning(push)

  #pragma warning(disable : 4192)

  #pragma warning(disable : 4146) 字串6

  #import "esriSystem.olb" \

  raw_interfaces_only,                             \

  raw_native_types,                                \

  no_namespace,                                    \

  named_guids,                                     \ 字串7

  exclude("OLE_COLOR", "OLE_HANDLE", "VARTYPE")

  #import "esriGeometry.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids

  #import "esriDataSourcesFile.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids

  #import "esriGeoDatabase.olb" raw_interfaces_only, raw_native_types, no_namespace, named_guids

  字串2

  #pragma warning(pop)

  字串5

  //CString VariantToString1(VARIANT * va);

  字串2

  int main(int argc, char* argv[])

  {

  ::CoInitialize(NULL);

  字串1

  IWorkspaceFactoryPtr pWSFactory(CLSID_ShapefileWorkspaceFactory);

  IWorkspacePtr pWS;

  // BSTR path;

  // path = ::SysAllocString(L"C:\\test");

  HRESULT hr = pWSFactory->OpenFromFile(CComBSTR(L"C:\\test\\bj"),0,&pWS);

  if (FAILED(hr) || pWS==NULL)

  {

  cerr《"Failed to open the destination folder."《endl;

  return 1;

  } 字串1

  IFeatureWorkspacePtr pFWS(pWS);

  IFeatureClassPtr pFClass;

  pFWS->OpenFeatureClass (CComBSTR(L"bj_est1"),&pFClass);

  字串3

  IFeatureCursorPtr pFCursor;

  pFClass->Search (NULL,VARIANT_TRUE,&pFCursor);

  字串7

  long lngFieldCount ;

  IFieldsPtr pFields;

  IFieldPtr pField;

  pFCursor->get_Fields (&pFields);

  pFields->get_FieldCount (&lngFieldCount); 字串4

  IFeaturePtr pFeature;

  pFCursor->NextFeature (&pFeature); 字串8

  USES_CONVERSION; 字串9

  long t;

  CComBSTR bsValues;

  CComVariant varValue;

  esriFieldType esriFldType;

  while (pFeature)

  {

  bsValues = CComBSTR(L"  ");

  for (t =0; t < lngFieldCount ; t++)

  {

  pFields->get_Field(t, &pField);

  pField->get_Type(&esriFldType);

  switch (esriFldType)

  {

  case (esriFieldTypeGeometry):

  bsValues += CComBSTR(L"Shape  ");

  break;

  default:

  pFeature->get_Value(t, &varValue);

  if (varValue.vt != VT_BSTR)

  varValue.ChangeType(VT_BSTR); 字串4

  bsValues += varValue.bstrVal;

  bsValues += CComBSTR(L"  ");

  break;

  }

   

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++文件读写详解 下一篇记忆化搜索算法之动态规划

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·HTTPS 详解一:附带 (2025-12-26 02:20:37)
·TCP/IP协议到底在讲 (2025-12-26 02:20:34)
·TCP和UDP在socket编 (2025-12-26 02:20:32)
·有没有适合新手练习 (2025-12-26 01:48:47)
·用清华镜像网怎么下 (2025-12-26 01:48:44)