平时要把一个形状数据写入到FeatureBuffer中时,一般情况下会将形状直接赋给featureBuffer,如语句:
ipAdminPosBuffer->putref_Shape( ipBufferGeo );
然而当形状数据ipBufferGeo在赋值给ipAdminPosBuffer时,要与另一个空间参照不一致的形状数据进行拓扑运算时,需要对当前形状数据进行克隆后,将克隆后的形状数据赋值给ipAdminPosBuffer。否则可能会引起拓扑操作的结果不正确。因此修正代码如下:
ISpatialReferencePtr spatial = ipGeo->GetSpatialReference();
IClonePtr ipClone;
((IClonePtr)ipGeo)->Clone( &ipClone );
((IGeometryPtr)ipClone)->PutRefSpatialReference( spatial );
ipAdminPosBuffer->putref_Shape( (IGeometryPtr)ipClone );