私はArcMapで作業しています。私はポイントを持っているフィーチャクラスレイヤー(ポリライン)を持っています。それぞれの点について、それをジオメトリにキャスト/変換し、それを別のレイヤーの属性テーブルに配置する必要があります。形状フィールドの列の下に表示されます。IPoint変数をIGeometryにキャスト
テーブル内のシェイプフィールド列(ポイント間の距離など)で他の計算を試してみると、「空のジオメトリで操作しようとしました」というエラーが表示されます。これは、私がテーブルに値を正しく挿入していないと私に信じさせる。さらに、私は正しくキャストしていないとか、IGeometry変数を正しく作成していないと信じています。
また、アトリビュートテーブルを見てみると、「形状」フィールドの欄にPointZMが表示されますが、地図を見るとArcmapのポイントは表示されません。私のコードは以下の通りです。
IFeatureLayer _SelectedLayer = MultiItemList._CapturedFeatureLayer;
IFeatureClass _SelectedFeatClass = _SelectedLayer.FeatureClass;
IDataset _SelectedFeatureDataset = (IDataset)_SelectedFeatClass;
IWorkspace _SelectedWorkspace = (IWorkspace)_SelectedFeatureDataset.Workspace;
string _SelectedPath = _SelectedWorkspace.PathName;
IFeature _mySelectedFeature = _SelectedFeatClass.GetFeature(0);
IGeometry _theGeometry = _mySelectedFeature.Shape as IGeometry;
IPolyline _PolyLine = (IPolyline)_theGeometry;
IPointCollection _pointsCollection = (IPointCollection)_PolyLine;
if (_pointsCollection.PointCount>=2)
{
IEnumVertex2 _enumVertex = _pointsCollection.EnumVertices as IEnumVertex2;
IPoint _queryVertex = new PointClass();
_enumVertex.Reset();
IPoint _outVertex;
int partIndex;
int vertexIndex;
_enumVertex.Next(out _outVertex, out partIndex, out vertexIndex);
while (_outVertex != null)
{
ITable LeveePointsTable = (ITable)LeveePoints_featureClass;
int ShapeIndex = LeveePointsTasble.FindField("Shape");
IRow LeveePointsRow = LeveePointsTable.CreateRow();
// trying to cast IPoint to IGeometry
IGeomerty _myPoints = (Igeometry)_outVertex
LeveePointsRow.set_Value(ShapeIndex, _MyPoints);
}
}
このトピックに関するお手伝いをいただければ幸いです。前もって感謝します。
私はこの行の後にブレークポイントを設定すると仮定します。少なくとも3つの異なる理由でコンパイルされませんが、再入力したとします。 'IGeomerty _myPoints =(Igeometry)_outVertex'。あなたがそれをしたとき、 '_myPoints'はnullでしたか?熟考するもう一つのポイントは、_outVertexの実際の実行時の型が 'IGeometry'を実装しているかどうかです。あなたはそれを確認しましたよね? –
はい、_outVertex(IPoint)はIGeometryを実装しています。 'IGeomerty _myPoints =(Igeometry)_outVertex'という行で、変数_outVertexのX座標とY座標を出力するためにMessageBoxを使用することができます。プラス私はこの行にキャストエラーを取得しません。私は何も変数 '_myPoints'を初期化しませんでした。おそらく、最初にnullに初期化する必要があります。 – user1898629
いいえ、 '_myPoints'をnullに初期化しないでください。既に '(IGeometry)_outVertex'に初期化しています。それだけで十分です。 –