ITopologicalOperator.机密数据库,这是怎么运作的

本文关键字:机密 数据库 ITopologicalOperator | 更新日期: 2023-09-27 18:04:37

我试图将一个图层的所有特征与另一个图层相交,但在执行"ConstructUnion"函数时,我得到了web ADF应用程序卡住

这是我到目前为止写的代码

// 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);

知道为什么吗?

ITopologicalOperator.机密数据库,这是怎么运作的

如本网站的GIS版本所述,这是解决方案

您需要创建ArcObject实例(在开始和PolygonClass在你的代码片段的末尾)使用IServerContext.CreateObject实现ArcGIS Server SOC。你目前的代码在web服务器(或ADF应用程序的任何地方)上创建这些对象是running),它需要大量的编组,在很多情况下似乎永远都不会结束。

在ctx中已经有了对服务器上下文的引用变量,所以基本上都设置好了。一旦所有的ArcObjects,你的问题很可能就解决了。