64,648
社区成员
发帖
与我相关
我的任务
分享
IWorkspaceFactoryPtr ipWSFac;
hr = ipWSFac.CreateInstance(__uuidof(ShapefileWorkspaceFactory));
if(FAILED(hr))
return false;
IWorkspacePtr ipShapeWS;
hr = ipWSFac->OpenFromFile(CComBSTR(szShapeDir), NULL, &ipShapeWS);
if(FAILED(hr) || ipShapeWS == NULL)
return false;
IFeatureWorkspacePtr ipFWS = ipShapeWS;
IFeatureClassPtr ipFC;
hr = ipFWS->OpenFeatureClass(CComBSTR(szShapeName), &ipFC);
if(FAILED(hr) || ipFC == NULL)
return false;
IFeatureCursorPtr pFCursor;
hr = ipFC->Search (NULL,VARIANT_TRUE,&pFCursor);
if(FAILED(hr) || pFCursor == NULL)
return false;
long lFieldCount = 0;
IFieldsPtr pFields;
IFieldPtr pField;
hr = pFCursor->get_Fields (&pFields);
if(FAILED(hr) || pFCursor == NULL)
return false;
hr = pFields->get_FieldCount (&lFieldCount);
if(FAILED(hr))
return false;
IFeaturePtr pFeature;
hr = pFCursor->NextFeature (&pFeature);
if(FAILED(hr) || pFeature == NULL)
return false;
CComBSTR bstrName;
CComVariant varVal;
CString strCodeVal;
CString stProvCode;
CString strCityVal;
bool bName = false;
bool bVal = false;
while(pFeature)
{
for (int t = 0 ; t < lFieldCount ; t++)
{
pFields->get_Field(t, &pField);
pField->get_Name(&bstrName);
....
这是取数据大致流程,记得使用完释放接口,或者使用CComPtr