请教IFeatrue读取信息问题
来源:互联网 发布:js true false 编辑:程序博客网 时间:2024/06/05 11:50
遇到一个问题请教一下大家:
我要取得一个IFeatrue的第n列的数据,我用如下方式获取:
VARIANT varValTest;
ipFeature->get_Value(Index,&varValTest); //其中Index是int型数值
但是返回的varValTest.vt是VT_EMPTY
我用如下方式(函数名称没有校对):
VARIANT varValTest;
ipFeature->getTable(&iptable);
long loid=0;
ipFeatrue->getLOID(&loid);
IRowPtr iprow;
iptable->getrow(loid,&iprow);
iprow->getvalue(Index,&varValTest);
就可以返回正确值。
请教一下第一种方式是不是有问题,问题是不是与数值有关系,怎么能解决这个问题?因为第二种方式在大数据量的时候影响效率,因此最好能用第一种方式解决。
我要取得一个IFeatrue的第n列的数据,我用如下方式获取:
VARIANT varValTest;
ipFeature->get_Value(Index,&varValTest); //其中Index是int型数值
但是返回的varValTest.vt是VT_EMPTY
我用如下方式(函数名称没有校对):
VARIANT varValTest;
ipFeature->getTable(&iptable);
long loid=0;
ipFeatrue->getLOID(&loid);
IRowPtr iprow;
iptable->getrow(loid,&iprow);
iprow->getvalue(Index,&varValTest);
就可以返回正确值。
请教一下第一种方式是不是有问题,问题是不是与数值有关系,怎么能解决这个问题?因为第二种方式在大数据量的时候影响效率,因此最好能用第一种方式解决。
谢谢!!!
==========================================
用VC测试了,没有问题的
LONG index=2;
IFeaturePtr pFeature;
pFeatureClass->GetFeature(index,&pFeature);
VARIANT var;
index=5;
pFeature->get_Value(index,&var);
读取IFeature字段信息的代码
IEnvelopePtr ipEnv(m_MapControl.TrackRectangle());
ISelectionEnvironmentPtr ipSeletionEnv(CLSID_SelectionEnvironment);
ipSeletionEnv->put_SearchTolerance(2);
ipSeletionEnv->put_CombinationMethod(esriSelectionResultNew);
m_ipMap->SelectByShape(ipEnv,ipSeletionEnv,false);
iActiveView->PartialRefresh(esriViewGeoSelection,NULL,NULL);
ISelectionPtr ipSelection;
m_ipMap->get_FeatureSelection(&ipSelection);
long selcount;
m_ipMap->get_SelectionCount(&selcount);//获取选择要素的个数
IEnumFeaturePtr ipEnumFeature(ipSelection);
ipEnumFeature->Reset();
IFeaturePtr ipFeature;
ipEnumFeature->Next(&ipFeature);
while(!(ipFeature==0))
{
BSTR LayerName;
IObjectClassPtr pObjectClass;
ipFeature->get_Class(&pObjectClass);
pObjectClass->get_AliasName(&LayerName);//获得要素的对象名称
CString rootname=LayerName;
IFieldsPtr pFields;
IFieldPtr pField;
long Index;//字段索引
ipFeature->get_Fields(&pFields);
const CString fieldname="MISNAME";//定义要查询的字段名
pFields->FindField(_bstr_t(fieldname),&Index);
//得到具体的字段信息
CComVariant varValTest;
ipFeature->get_Value(Index,&varValTest); 、、为什么这样取值一直是空的呢?
CString fieldvalue;
fieldvalue=varValTest.bstrVal;
ipEnumFeature->Next(&ipFeature);
}
但是这样就可以获取信息了,速度有点慢啊,能不能用前面的方法解决啊?
ipFeature->get_Class(&pObjectClass);
pObjectClass->get_AliasName(&LayerName);//获得要素的对象名称
ipFeature->get_OID(&lOid);
//重新通过IFeatureClas 得到这个要素,因为ipFeature没有返回所有的字段
//他只返回了ID
ipFeatureClass=pObjectClass;
ITablePtr pTable;
IRowPtr pRow;
pTable=ipFeatureClass;
pTable->GetRow(lOid,&pRow);
pRow->get_Value(Index,&varValTest);
ISelectionEnvironmentPtr ipSeletionEnv(CLSID_SelectionEnvironment);
ipSeletionEnv->put_SearchTolerance(2);
ipSeletionEnv->put_CombinationMethod(esriSelectionResultNew);
m_ipMap->SelectByShape(ipEnv,ipSeletionEnv,false);
iActiveView->PartialRefresh(esriViewGeoSelection,NULL,NULL);
ISelectionPtr ipSelection;
m_ipMap->get_FeatureSelection(&ipSelection);
long selcount;
m_ipMap->get_SelectionCount(&selcount);//获取选择要素的个数
IEnumFeaturePtr ipEnumFeature(ipSelection);
ipEnumFeature->Reset();
IFeaturePtr ipFeature;
ipEnumFeature->Next(&ipFeature);
while(!(ipFeature==0))
{
BSTR LayerName;
IObjectClassPtr pObjectClass;
ipFeature->get_Class(&pObjectClass);
pObjectClass->get_AliasName(&LayerName);//获得要素的对象名称
CString rootname=LayerName;
IFieldsPtr pFields;
IFieldPtr pField;
long Index;//字段索引
ipFeature->get_Fields(&pFields);
const CString fieldname="MISNAME";//定义要查询的字段名
pFields->FindField(_bstr_t(fieldname),&Index);
//得到具体的字段信息
CComVariant varValTest;
ipFeature->get_Value(Index,&varValTest); 、、为什么这样取值一直是空的呢?
CString fieldvalue;
fieldvalue=varValTest.bstrVal;
ipEnumFeature->Next(&ipFeature);
}
但是这样就可以获取信息了,速度有点慢啊,能不能用前面的方法解决啊?
ipFeature->get_Class(&pObjectClass);
pObjectClass->get_AliasName(&LayerName);//获得要素的对象名称
ipFeature->get_OID(&lOid);
//重新通过IFeatureClas 得到这个要素,因为ipFeature没有返回所有的字段
//他只返回了ID
ipFeatureClass=pObjectClass;
ITablePtr pTable;
IRowPtr pRow;
pTable=ipFeatureClass;
pTable->GetRow(lOid,&pRow);
pRow->get_Value(Index,&varValTest);
0 0
- 请教IFeatrue读取信息问题
- 请教!~请教一个问题!~~~~~~~
- 请教Windows Mobile6中保存注册表修改信息的问题
- 请教问题
- 请教问题
- 请教问题
- 请教问题
- 问题请教
- 请教问题
- 请教问题
- 请教问题
- 问题请教
- python读取配置文件信息问题
- 请教一个问题
- 先请教一个问题:
- 请教老大问题
- 请教,java反编译问题
- java基础问题请教!
- 详谈Javascript中的String对象
- Java集合类
- 模板
- 正则表达式
- 深入浅出mfc 系列 第14章MFC 多线程程序设计
- 请教IFeatrue读取信息问题
- 封装代码和UI利器—Fragment(二)
- Activity 生命周期
- Unity3D脚本18:可视化辅助设置类 Gizmos
- 算法基础(五):二叉树(基础)
- tcp的使用
- node.js 和v8的理解
- matlab2
- 6174问题