FAQ
エラー:変更されたジオメトリは、フィーチャの元のジオメトリ(コピーまたは新規インスタンス)とは異なるジオメトリ インスタンスでなければなりません。

ナレッジ番号:5528 | 登録日:2023/07/27 | 更新日:2024/11/21

【エラー メッセージ】
ジオメトリック ネットワークの不整合をもたらすコーディング例が確認されています。

このエラーは、ArcGIS 9.3 で以下のようなコーディング例を回避しようとした結果として生じます。
 ・ IFeature.Shape プロパティを使用してフィーチャのジオメトリを取得する
 ・ フィーチャへの参照を更新する
 ・ 同じ参照を使用してフィーチャのジオメトリを設定する


【原因】
このエラーは、ジオメトリック ネットワークの不整合をもたらすコーディング例を回避するため、調整を試みたことによって生じます。


【解決方法または回避方法】
カスタム コードを使用していない標準の ArcGIS ツールやコマンドの一つによってこのエラーが生じる場合、 ESRI 技術サポートにご報告ください。

カスタム コードを使用してこのエラーが生じている場合は、ジオメトリそのものではなく、ジオメトリのコピーを変更してください。これは、IFeature.Shape の代わりに、IFeature.ShapeCopy を使用することで、フィーチャのコピーを変更することができます。

下記にあるサンプル コードは、このエラー メッセージを回避するために必要な変更を示しています。

※ 下記は、IFeature.ShapeCopy を使用した正しいコード例で、エラーが生じる原因となりうる行をコメント アウトしています。



 pEditor.StartOperation
  
  Set pEdLayers = pEditor
  Set pFeatures = pEditor.EditSelection
  
  pFeatures.Reset
  Set pFeature = pFeatures.Next
  
  Dim pGeom As IGeometry
  'このコードは正しくありません。
  'Set pGeom = pFeature.Shape 
  
  'このコードが変更するジオメトリにアクセスするための正しい方法です。
  Set pGeom = pFeature.ShapeCopy
  
  Dim pGeomColl As IGeometryCollection
  Set pGeomColl = pGeom
  
  Dim pPointColl As IPointCollection
  Set pPointColl = pGeomColl
  
  Dim pPoint1 As IPoint
  Dim pPoint2 As IPoint

  Set pPoint1 = New Point
  pPoint1.PutCoords -5959.167882, 5667307.034188
  Set pPoint2 = New Point
  pPoint2.PutCoords -5983.323227, 5667300.739636
  
  pPointColl.AddPoint pPoint1
  pPointColl.AddPoint pPoint2

  Set pFeature.Shape = pGeom
  pFeature.Store

  pEditor.StopOperation ("エッジ フィーチャのジオメトリを更新します。")

メタデータ

種類

製品