0

レイヤーのすべての機能を別のレイヤーと交差させようとしていますが、「ConstructUnion」関数の実行中にWebADFアプリケーションがスタックします。

これが私がこれまでに書いたコードです

// create a geometrybag for layer1
ESRI.ArcGIS.Geometry.IGeometry geometryBag = new ESRI.ArcGIS.Geometry.GeometryBagClass();
geometryBag.SpatialReference = m_firstLayerFirstfeatureIGeometry.SpatialReference;
ESRI.ArcGIS.Geometry.IGeometryCollection geometryCollection = (ESRI.ArcGIS.Geometry.IGeometryCollection)geometryBag;
// Cycle all features of first layer and add them to the collection
foreach (DataRow m_dr in m_firstLayerfeatureGraphics.Rows)
{
    // Takes this feature's geometry
    ESRI.ArcGIS.ADF.Web.Geometry.Geometry adfFeature =
        m_firstLayerfeatureGraphics.GeometryFromRow(m_dr) as ESRI.ArcGIS.ADF.Web.Geometry.Geometry;
    // convert to a igeometry object
    ESRI.ArcGIS.Geometry.IGeometry m_tempfeatureIGeometry =
    ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.Local.Converter.ToIGeometry(adfFeature, ctx);
    System.Diagnostics.Debug.WriteLine("m_firstLayerfeatureGraphics +1 ");
    object missing = Type.Missing;
    geometryCollection.AddGeometry(m_tempfeatureIGeometry, ref missing, ref
    missing);
}
ESRI.ArcGIS.Geometry.ITopologicalOperator mtopo1 = new ESRI.ArcGIS.Geometry.PolygonClass();
// FOLLOWING LINE BLOCKS APPLICATION
mtopo1.ConstructUnion((ESRI.ArcGIS.Geometry.IEnumGeometry)geometryBag);

なぜですか?

4

1 に答える 1

0

このウェブサイトのGISバージョンで述べられているように、これは解決策です

IServerContext.CreateObjectを使用して、ArcGIS Server SOC上にArcObjectインスタンス(コードスニペットの最初にGeometryBagClass、最後にPolygonClass)を作成する必要があります。現在のコードは、これらのオブジェクトをWebサーバー(またはADFアプリが実行されている場所)に作成します。これには多くのマーシャリングが必要であり、多くの場合、完了しないようです。

ctx変数にサーバーコンテキストへの参照がすでにあるので、基本的にすべて設定されています。すべてのArcObjectがArcGISServerで作成されると、問題は解決する可能性があります。

于 2011-08-10T23:31:54.260 に答える