zoukankan      html  css  js  c++  java
  • ArcGIS Server 中栅格数据的查询。

     本例是想获取dem数据中的某点的高程值。有两种方法可以实现,一种是用ADF 来实现,另外一种就是通过AO来实现了。

    其中对象pt就是要查询的点)

    《1》ADF方法

    //获取栅格地图资源  

    ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality func = map.GetFunctionality("DEM");
              

     ESRI.ArcGIS.ADF.Web.DataSources.IGISResource gisRes = func.Resource;
               bool supp = gisRes.SupportsFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality));
               DataTable[] dt = new DataTable[1];
               int m_IdentifyTolerance = 2;
               IdentifyOption m_idOption = IdentifyOption.VisibleLayers;
               if (supp)
               {
                   ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality qfunc = (ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality)gisRes.CreateFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality), null);
                   if (qfunc != null && qfunc.Supports("identify"))
                   {
                       try
                       {
                           dt = qfunc.Identify(func.Name, pt, m_IdentifyTolerance, m_idOption, null);//dt即为查询结果
                       }
                       catch
                       {

                       }

                   }

               }

                string h=dt.tables[0][1].toString();  //h即为所要查询的高程值

    《2》AO方法

              //因地图资源与开发不在同一机器上,因而首先连接远程地图服务。

                      ESRI.ArcGIS.ADF.Identity id = new ESRI.ArcGIS.ADF.Identity();
                        id.UserName =  "Administrator" ;           

                          id.Password = "123456";
                        id.Domain = "gis2_trq";
                        string domainstr = "10.150.38.34";

                        ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection agsconn = new ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection(domainstr, id);
                        agsconn.Connect();
                        if (!agsconn.IsConnected)
                        {
                            agsconn.Dispose();
                            return "";
                        }
                        ESRI.ArcGIS.Server.IServerObjectManager som = agsconn.ServerObjectManager;
                        string servertype = "MapServer";

                         //获取dem地图资源
                        string serverobjectname1 = "DEM_12503";
                        ESRI.ArcGIS.Server.IServerContext sc1 = som.CreateServerContext(serverobjectname1, servertype);
                        IMapServer pMapServer1 = sc1.ServerObject as IMapServer;
                        IMapServerObjects pMapServerObjs1 = pMapServer1 as IMapServerObjects;
                        IMap pMap1 = pMapServerObjs1.get_Map(pMapServer1.DefaultMapName);

                        IRasterLayer pRLayer = pMap1.get_Layer(0) as IRasterLayer;
                        //IRaster pRaster = pRLayer.Raster as IRaster;
                        ESRI.ArcGIS.Geometry.IPoint pt1 = sc1.CreateObject("esriGeometry.Point") as ESRI.ArcGIS.Geometry.IPoint;
                        pt1.X = pt.X;
                        pt1.Y = pt.Y;
                        IIdentify identify = (IIdentify)pRLayer;
                        IArray pIDArray = identify.Identify(pt1);
                        string HVal = String.Empty;
                        if (pIDArray != null)
                        {
                            IRasterIdentifyObj pRasObj = (IRasterIdentifyObj)pIDArray.get_Element(0);
                            HVal = pRasObj.Name;
                        }

                HVal 就是所要的特定点的高程值(转换成double类型就好了)。

    一起学习GIS及其二次开发,一起进步!
  • 相关阅读:
    信息的封装和隐藏
    力扣 20. 有效的括号
    servlet执行原理
    当请求一个Servlet时,后台如何运作?
    req.getAttribute 和 req.getParameter
    Servlet 实现登录页面,并在条件下跳转
    request.getRequestDispatcher(a.jsp).forward(request,response)和response.sendRedirect的差别
    通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。请验证连接属性,并检查 SQL Server 的实例正在
    Cocos2d-x 3.0 精灵帧缓存(SpriteFrameCache)
    lua 中处理cocos2dx 的button 事件
  • 原文地址:https://www.cnblogs.com/tuncaysanli/p/1405639.html
Copyright © 2011-2022 走看看