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);
知道为什么吗?
如本网站的GIS版本所述,这是解决方案
您需要创建ArcObject实例(在开始和PolygonClass在你的代码片段的末尾)使用IServerContext.CreateObject实现ArcGIS Server SOC。你目前的代码在web服务器(或ADF应用程序的任何地方)上创建这些对象是running),它需要大量的编组,在很多情况下似乎永远都不会结束。
在ctx中已经有了对服务器上下文的引用变量,所以基本上都设置好了。一旦所有的ArcObjects,你的问题很可能就解决了。