는 ArcGIS 엔진 연결 WMS, WMTS 서비스 및주의 사항

연결 GIS 서비스로는 ArcGIS 엔진 차 개발의 필요성이는 ArcGIS 엔진은 유사한 인터페이스를 제공합니다.

는 ArcGIS 엔진은 WMS 서비스에 연결 :

try
            {
                IPropertySet pPropertyset = new PropertySetClass();
                pPropertyset.SetProperty("url", pURL);//
                IWMSConnectionFactory pWmsFac = new WMSConnectionFactory();
                IWMSConnection pWmsC = pWmsFac.Open(pPropertyset, 0, null);
                IWMSConnectionName pWmsConnectionName = pWmsC.FullName as IWMSConnectionName;

                ILayerFactory pLayerFactory = new EngineWMSMapLayerFactoryClass();
                IGroupLayer pGroupLayer = new GroupLayerClass();
                if (pLayerFactory.get_CanCreate(pWmsConnectionName))
                {
                    IEnumLayer pEnumLayer = pLayerFactory.Create(pWmsConnectionName);
                    pEnumLayer.Reset();
                    ILayer pLayer = pEnumLayer.Next();
                    while (pLayer != null)
                    {
                        if (pLayer is IWMSMapLayer)
                        {
                            pGroupLayer.Name = "服务库";
                            pGroupLayer.Add(pLayer);
                        }
                        pLayer = pEnumLayer.Next();
                    }
                }
                return pGroupLayer as ILayer;
            }
            catch (Exception ex)
            {
                MessageBox.Show("添加失败! " + ex.Message);
                return null;
            }

는 ArcGIS 엔진은 WMTS 서비스를 연결 :

IPropertySet pPropertyset = new PropertySetClass();
pPropertyset.SetProperty(url, http://t0.tianditu.com/vec_c/wmts);    
IWMTSConnectionFactory pWMTSConnectionfactory = new WMTSConnectionFactory();
IWMTSConnection pWMTSConnection = pWMTSConnectionfactory.Open(pPropertyset, 0, null);
IWMTSLayer pWMTSLayer = new WMTSLayer();
IName pName = pWMTSConnection.FullName;
pWMTSLayer.Connect(pName);
            
axMapControl1.AddLayer(pWMTSLayer as ILayer);
axMapControl1.Refresh();

우리는 당신에게 작은 선물은 실제 개발은 같은 층에 부하 WMS 서비스와 유사한 요구를 가지고 있어야하지만, WMS 서비스는 모든 계층에 대한 모든 추가, 다음 코드는 당신이에 대한 자신의 목표 레이어를 추가하는 것입니다 여과.

 try { 
            IPropertySet pPropertyset = new PropertySetClass();
            pPropertyset.SetProperty("url", pURL);

            IWMSConnectionName pWmsConnectionName = new WMSConnectionNameClass();

            pWmsConnectionName.ConnectionProperties = pPropertyset;

            ILayerFactory pLayerFactory = new EngineWMSMapLayerFactoryClass();

            IWMSGroupLayer pWmsMapLayer = new WMSMapLayerClass();

            IDataLayer pDataLayer = pWmsMapLayer as IDataLayer;

            pDataLayer.Connect(pWmsConnectionName as IName);

            IWMSServiceDescription pWmsServiceDesc = pWmsMapLayer.WMSServiceDescription;


            for (int i = 0; i < pWmsServiceDesc.LayerDescriptionCount; i++)
            {
                IWMSLayerDescription pWmsLayerDesc = pWmsServiceDesc.get_LayerDescription(i);

                ILayer pNewLayer = null;

                if (pWmsLayerDesc.LayerDescriptionCount == 0)
                {
                    IWMSLayer pWmsLayer = pWmsMapLayer.CreateWMSLayer(pWmsLayerDesc);

                    pNewLayer = pWmsLayer as ILayer;

                }
                else
                {
                    IWMSGroupLayer pWmsGroupLayer = pWmsMapLayer.CreateWMSGroupLayers(pWmsLayerDesc);

                    for (int j = 0; j < pWmsGroupLayer.Count; j++)
                    {
                        ILayer layer = pWmsGroupLayer.get_Layer(j);

                        if (layer.Name == layerName)
                        {
                            pWmsMapLayer.Clear();
                            pWmsMapLayer.InsertLayer(layer, 0);
                            layer.Visible = true;
                            break;
                        }

                    }

                }

            }
            ILayer pLayer = pWmsMapLayer as ILayer;
            pLayer.Name = "UninphoServer Web Map Service";
            pLayer.Visible = true;
            return pLayer;
            }
            catch (Exception ex)
            {
                MessageBox.Show("wms服务链接错误! "+ex.Message);
                return null;
            }

당신은 위의 코드에 따라 프로그램을 예약하는 경우, 문제가되지 않습니다, 여기에 초점을 맞 춥니 다. 하지만 가끔은 당신은 COM 구성 요소 문제를보고됩니다 매우 불쾌한 문제가 발생하는 것입니다. COM 구성 요소 문제로, 나는 우선 문제는, 바이두 경우, 다음, 경험 스티커의 대부분은 당신을 말할 것이다, 엔진이 가장 역겨운 문제는 ArcGIS 때문에 문제의 매개 변수를 설정합니다. 사실, 진실, 그러나 매개 변수의 오차 범위는 실제로 매우 넓은, 매우 어려운 그 특정을 찾을 것입니다.
이 하나의 GIS 서버 연결은 일반적으로 pDataLayer.Connect(pWmsConnectionName as IName);겉으로는 쓸모 정말 유용한 방법으로 잠금, 측면에 대한 이유는 매우 어려운 사실, 주어진. 는 ArcGIS 맵 테스트의 경우와 연결되는, 코드 프롬프트 첫째, URL에는 ArcGIS지도 오류를합니다 전달하고, 문제의 매개 변수를 전달하는 경우에 확인할 수 있습니다.
음, 오늘, 나는 나의 기사 효과적으로 모든 사람에게 도움을 수 있기를 바랍니다. 나는 깊이,이 도로가 프로그래밍 할 수 없음을 이해하고 우리가 더 많은, 아무것도 희미한 빛을 가져올 수없는 경우 그냥 내 노력을 약속 바랍니다. 어서! 아 나 지원을 많이 봐, 찬양 음을 가리 킵니다.

게시 14 개 원래 기사 · 원의 찬양 (15) · 전망 (333)

추천

출처blog.csdn.net/weixin_42970847/article/details/103092631