arcServer的运作模式和概念都知道,也都了解,但还没有时间深入进去。最近一直在弄图形开发,目前只是发现Server的图形跟AO之间的差别。
里面存在好几种图形,AO的图形、Dotnet的图形、ADF的图形,他们之间的关系很简单,但ESRI没有提供完全的方法用来转换,我不清楚ESRI为何不做,而这部分的代码需要我们自己去编写,有点失望。今天继续编写空间查询。下面贴一个获取Polygon的Extent的代码。
Code
ESRI.ArcGIS.ADF.Web.Geometry.Envelope getExtent(ESRI.ArcGIS.ADF.Web.Geometry.Polygon pPolygon)
{
ESRI.ArcGIS.ADF.Web.Geometry.Envelope pEnv = new ESRI.ArcGIS.ADF.Web.Geometry.Envelope();
double minx = Double.MaxValue, miny = Double.MaxValue, maxx = Double.MinValue, maxy = Double.MinValue;
ESRI.ArcGIS.ADF.Web.Geometry.RingCollection pRingCtl = pPolygon.Rings;
for (int i = 0; i < pRingCtl.Count; i++)
{
ESRI.ArcGIS.ADF.Web.Geometry.Ring pRing = pRingCtl[i];
ESRI.ArcGIS.ADF.Web.Geometry.PointCollection pPntCtl = pRing.Points;
for (int k = 0; k < pPntCtl.Count; k++)
{
ESRI.ArcGIS.ADF.Web.Geometry.Point pPnt = pPntCtl[k];
if (pPnt.X <= minx) minx = pPnt.X;
if (pPnt.Y <= miny) miny = pPnt.Y;
if (pPnt.X >= maxx) maxx = pPnt.X;
if (pPnt.Y >= maxy) maxy = pPnt.Y;
}
}
pEnv.XMin = minx;
pEnv.YMin = miny;
pEnv.XMax = maxx;
pEnv.YMax = maxy;
return pEnv;
}
Over,有情况随时回报。