Exemplo n.º 1
0
        //function for adding line graphics elements
        public void addLineGraphicElements(ESRI.ArcGIS.Geometry.IPolyline inLine, int symbolColor)
        {
            IElement            pElement = new LineElementClass();// MarkerElementClass();
            ISimpleLine3DSymbol symbol3d = new SimpleLine3DSymbolClass();

            string markerStyle = "";

            if (theCamForm.symbolTypeListBox.SelectedItem != null)
            {
                markerStyle = theCamForm.symbolTypeListBox.SelectedItem.ToString();
            }

            if (markerStyle == "Strip")
            {
                symbol3d.Style = esriSimple3DLineStyle.esriS3DLSStrip;
            }
            else if (markerStyle == "Wall")
            {
                symbol3d.Style = esriSimple3DLineStyle.esriS3DLSWall;
            }
            else
            {
                symbol3d.Style = esriSimple3DLineStyle.esriS3DLSTube;
            }

            symbol3d.ResolutionQuality = 1;
            IColor pColor = new RgbColorClass();

            pColor.RGB = symbolColor;

            ILineSymbol pLineSymbol;

            pLineSymbol       = (ILineSymbol)symbol3d;
            pLineSymbol.Color = pColor;
            pLineSymbol.Width = 1;

            pElement.Geometry = inLine;
            ILineElement pLineElement;

            pLineElement        = (ILineElement)pElement;
            pLineElement.Symbol = pLineSymbol;

            graphicsLayer.AddElement(pElement, 1);
        }
Exemplo n.º 2
0
        private string serializeGeo(ESRI.ArcGIS.Geometry.IGeometry geo, Boolean ESRISerialize)
        {
            if (ESRISerialize)
            {
                System.String xmlNodeName = "NodeName";
                System.String elementURI  = "http://www.esri.com/schemas/ArcGIS/10";

                // Create xml writer
                ESRI.ArcGIS.esriSystem.IXMLWriter xmlWriter = new ESRI.ArcGIS.esriSystem.XMLWriterClass();

                // Create xml stream
                ESRI.ArcGIS.esriSystem.IXMLStream xmlStream = new ESRI.ArcGIS.esriSystem.XMLStreamClass();

                // Explicit Cast for IStream and then write to stream
                xmlWriter.WriteTo((ESRI.ArcGIS.esriSystem.IStream)xmlStream);

                // Serialize
                ESRI.ArcGIS.esriSystem.IXMLSerializer xmlSerializer = new ESRI.ArcGIS.esriSystem.XMLSerializerClass();


                xmlSerializer.WriteObject(xmlWriter, null, null, xmlNodeName, elementURI, geo);

                return(xmlStream.SaveToString());
            }
            else
            {
                switch (geo.GeometryType)
                {
                case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint:
                {
                    ESRI.ArcGIS.Geometry.IPoint pPnt = (ESRI.ArcGIS.Geometry.IPoint)geo;

                    return("<Point><X>" + pPnt.X + "</X><Y>" + pPnt.Y + "</Y></Point>");

                    //break;
                }

                case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline:
                {
                    string lineString = "<PathArray>";
                    ESRI.ArcGIS.Geometry.IPolyline           pPly = (ESRI.ArcGIS.Geometry.IPolyline)geo;
                    ESRI.ArcGIS.Geometry.IGeometryCollection pGC  = (ESRI.ArcGIS.Geometry.IGeometryCollection)pPly;
                    for (int i = 0; i < pGC.GeometryCount; i++)
                    {
                        lineString = lineString + "<Path><PointArray>";
                        //ESRI.ArcGIS.Geometry.IGeometry pGeo2 = pGC.get_Geometry(i);
                        // ESRI.ArcGIS.Geometry.IPath pPath = (ESRI.ArcGIS.Geometry.IPath)pGC.get_Geometry(i);
                        ESRI.ArcGIS.Geometry.IPointCollection pPointCol = (ESRI.ArcGIS.Geometry.IPointCollection)pGC.get_Geometry(i);
                        for (int j = 0; j < pPointCol.PointCount; j++)
                        {
                            ESRI.ArcGIS.Geometry.IPoint pPathPoint = pPointCol.get_Point(j);

                            lineString = lineString + "<Point><X>" + pPathPoint.X + "</X><Y>" + pPathPoint.Y + "</Y></Point>";
                        }
                        // string tr = pGeo2.GeometryType.ToString();
                        lineString = lineString + "</PointArray></Path>";
                    }
                    lineString = lineString + "</PathArray>";
                    return(lineString);

                    // return "<Point><X>" + pPnt.X + "</X><Y>" + pPnt.Y + "</Y></Point>";
                    //     break;
                }

                default:
                {
                    return("");
                    //   break;
                }
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 해당시설물의 지도상위치 찾아가기(업무화면에서 호출됨)
        /// </summary>
        /// <param name="FTR_CDE"></param>
        /// <param name="FTR_IDN"></param>
        /// <returns></returns>
        public async void findFtr(string FTR_CDE, string FTR_IDN)
        {
            string layerNm = "";

            try
            {
                layerNm = GisCmm.GetLayerNm(FTR_CDE);
                if ("".Equals(layerNm))
                {
                    MessageBox.Show("잘못된 레이어입니다.");
                    return;
                }
            }
            catch (Exception)
            {
                MessageBox.Show("잘못된 레이어입니다.");
                return;
            }

            //지도리셋
            string stat = await resetAction(null);

            //0.해당레이어표시 - 내부에서자동으로 로딩여부 체크함
            //FeatureLayer layer = ShowShapeLayer(GisCmm.GetLayerNm(FTR_CDE), true);

            //체크박스UI를 클릭시키는 방식으로 변경
            FeatureLayer layer = await ClickLayer(FTR_CDE);



            //1.해당레이어 가져오기
            //FeatureLayer layer = CmmObj.layers[GisCmm.GetLayerNm(FTR_CDE)];



            //1.셀렉트처리 필터링
            IQueryFilter qfltr = new QueryFilter();

            qfltr.WhereClause = " FTR_CDE = '" + FTR_CDE + "' AND FTR_IDN = " + FTR_IDN + " ";

            IFeatureSelection fsel = layer as IFeatureSelection;

            fsel.SelectFeatures(qfltr, esriSelectionResultEnum.esriSelectionResultAdd, true);
            await Task.Delay(1000);


            //2.피처객체 필터링
            IFeatureCursor cursor  = layer.Search(qfltr, true);
            IFeature       feature = cursor.NextFeature();

            if (feature is null)
            {
                MessageBox.Show("해당시설물 위치가 없습니다.");
                return;
            }

            ESRI.ArcGIS.Geometry.IPoint point = mapControl.ToMapPoint(Convert.ToInt32(GisCmm.fmsCoords.X), Convert.ToInt32(GisCmm.fmsCoords.Y));


            if (FTR_CDE == "SA001" || FTR_CDE == "SA002") //상수관로,급수관로
            {
                ESRI.ArcGIS.Geometry.IPolyline line = (ESRI.ArcGIS.Geometry.IPolyline)feature.ShapeCopy;
                point = line.FromPoint;
                //point = mapControl.ToMapPoint(Convert.ToInt32((line.ToPoint.X + line.FromPoint.X) / 2), Convert.ToInt32((line.ToPoint.Y + line.FromPoint.Y) / 2));
            }
            else if (FTR_CDE == "SA113" || FTR_CDE == "BZ001" || FTR_CDE == "BZ002" || FTR_CDE == "BZ003") //정수장, 블록
            {
                IArea area = (ESRI.ArcGIS.Geometry.IArea)feature.ShapeCopy;
                point = area.Centroid;
            }
            else //나머지 포이트 시설물
            {
                point = (ESRI.ArcGIS.Geometry.IPoint)feature.ShapeCopy;
            }


            //3. - 타겟으로 지도중심이동

            //IEnumFeature pFsel = (IEnumFeature)mapControl.Map.FeatureSelection;
            //pFsel.Reset(); // make sure it starts from the first feature
            //IFeature pFeat = pFsel.Next();
            //do
            //{
            //    ESRI.ArcGIS.Geometry.IGeometry pGeom = pFeat.ShapeCopy;
            //    if (pGeom.GeometryType == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint)
            //    {
            //        point = (ESRI.ArcGIS.Geometry.IPoint)pGeom;
            //        double x, y;
            //        point.QueryCoords(out x, out y); // use the coordinates from here
            //    }
            //    else if (pGeom.GeometryType == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline)
            //    {
            //        ESRI.ArcGIS.Geometry.IPolyline line = (ESRI.ArcGIS.Geometry.IPolyline)pGeom;
            //        point = line.FromPoint;
            //    }
            //    else if (pGeom.GeometryType == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon)
            //    {
            //        ESRI.ArcGIS.Geometry.IPolygon polygon = (ESRI.ArcGIS.Geometry.IPolygon)pGeom;
            //        point = polygon.FromPoint;
            //    }

            //    pFeat = pFsel.Next();
            //} while (pFeat != null);



            /*
             */
            IEnvelope envelope = mapControl.ActiveView.Extent;

            envelope.CenterAt(point);

            //int x = Convert.ToInt32(point.X);
            //int y = Convert.ToInt32(point.Y);
            //mapControl.ToMapPoint(x, y);
            //mapControl.ActiveView.ScreenDisplay.UpdateWindow();

            mapControl.ActiveView.Extent = envelope;
            mapControl.Refresh();
            mapControl.MapScale = 36112; // 18056; // 9028;
        }