Exemplo n.º 1
0
        /// <summary>
        /// 三维场景中绘制面要素 20110609
        /// </summary>
        /// <param name="pGeometry">面要素</param>
        /// <param name="r"></param>
        /// <param name="g"></param>
        /// <param name="b"></param>
        /// <param name="Z"></param>
        /// <param name="Width"></param>
        /// <returns></returns>
        public static IElement DrawPolygonZ(IGeometry pGeometry, int r, int g, int b, int Z, double Width)
        {
            IPolygon pEnvPolygon = (IPolygon)pGeometry;
            IZAware  pZAware     = (IZAware)pEnvPolygon;

            ((IZAware)pZAware).ZAware = true;
            IZ pZ = (IZ)pEnvPolygon;

            pZ.SetConstantZ(Z);
            IElement        pElement;
            IPolygonElement pPolygonElement = new PolygonElementClass();

            pElement = pPolygonElement as IElement;
            IFillShapeElement pFillShapeElement = pPolygonElement as IFillShapeElement;

            ISimpleFillSymbol pSimpleFillSymbol = new SimpleFillSymbolClass();

            pSimpleFillSymbol.Style = esriSimpleFillStyle.esriSFSCross;
            pSimpleFillSymbol.Color = getRGB(r, g, b);
            ISimpleLineSymbol pSimpleLineSymbol = new SimpleLineSymbolClass();

            pSimpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot;
            pSimpleLineSymbol.Color = getRGB(r, g, b);
            pSimpleLineSymbol.Color.Transparency = 10;
            pSimpleLineSymbol.Width = Width;
            ISymbol pSymbol = pSimpleLineSymbol as ISymbol;

            pSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;
            pSimpleFillSymbol.Outline = pSimpleLineSymbol;
            pElement.Geometry         = pZ as IGeometry;
            pFillShapeElement.Symbol  = pSimpleFillSymbol;

            return(pElement);
        }
Exemplo n.º 2
0
        public static void SetGeometry(IGeometry pGeometry, IFeature pFeature)
        {
            double        num;
            double        num1;
            IFeatureClass @class = pFeature.Class as IFeatureClass;

            try
            {
                int          num2        = @class.FindField(@class.ShapeFieldName);
                IGeometryDef geometryDef = @class.Fields.Field[num2].GeometryDef;
                if (!geometryDef.HasZ)
                {
                    ((IZAware)pGeometry).ZAware = false;
                }
                else
                {
                    ((IZAware)pGeometry).ZAware = true;
                    if (pGeometry is IZ)
                    {
                        IZ igeometry0 = (IZ)pGeometry;
                        geometryDef.SpatialReference.GetZDomain(out num, out num1);
                        igeometry0.SetConstantZ(num);
                    }
                    else if (pGeometry is IPoint)
                    {
                        geometryDef.SpatialReference.GetZDomain(out num, out num1);
                        (pGeometry as IPoint).Z = num;
                    }
                }
                if (!geometryDef.HasM)
                {
                    ((IMAware)pGeometry).MAware = false;
                }
                else
                {
                    ((IMAware)pGeometry).MAware = true;
                }
                IFeature feature = @class.CreateFeature();
                (pGeometry as ITopologicalOperator6).SimplifyAsFeature();
                feature.Shape = pGeometry;
                try
                {
                    ((IRowSubtypes)feature).InitDefaultValues();
                }
                catch (Exception exception)
                {
                    Logger.Current.Error("", exception, null);
                }
                EditorEvent.NewRow(feature);
                feature.Store();
            }
            catch (COMException cOMException)
            {
                Logger.Current.Error("", cOMException, null);
            }
            catch (Exception exception1)
            {
                Logger.Current.Error("", exception1, null);
            }
        }
Exemplo n.º 3
0
        public void AddShapeToTin()
        {
            object           Missing = Type.Missing;
            IPointCollection ptc     = pGeometry as IPointCollection;

            if (ptc == null)
            {
                return;
            }
            //for (int i = 0; i < ptc.PointCount; i++)
            //{
            //    IPoint pt = ptc.get_Point(i);
            //    IZAware pza = pt as IZAware;
            //    pza.ZAware = true;
            //    pt.Z = dHeight;
            //}
            IZAware pza = pGeometry as IZAware;

            pza.ZAware = true;
            IZ pz = pGeometry as IZ;

            pz.SetConstantZ(dHeight);
            try
            {
                pTinEdit.AddShapeZ(pGeometry, esriTinSurfaceType.esriTinHardReplace, 0, ref Missing);
            }
            catch (SystemException e)
            {
            }
            if (pMapCtr != null)
            {
                pMapCtr.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
            }
        }
Exemplo n.º 4
0
 private void CreateFeature(IGeometry geo, IMap pMap, IFeatureClass fc)
 {
     try
     {
         if (geo == null || fc == null || pMap == null)
         {
             return;
         }
         IDataset       pDataset       = fc as IDataset;
         IWorkspaceEdit pWorkspaceEdit = pDataset.Workspace as IWorkspaceEdit;
         int            index          = fc.FindField(fc.ShapeFieldName);
         IGeometryDef   pGD            = fc.Fields.get_Field(index).GeometryDef;
         if (pGD.HasZ)
         {
             IZAware pZA = geo as IZAware;
             pZA.ZAware = true;
             IZ     pZ = geo as IZ;
             double zmin = -1000, zmax = 1000;
             if (pGD.SpatialReference.HasZPrecision())
             {
                 pGD.SpatialReference.GetZDomain(out zmin, out zmax);
             }
             if (pZ != null)
             {
                 pZ.SetConstantZ(0);
             }
             else
             {
                 IPoint p = geo as IPoint;
                 if (p.Z.ToString() == "非数字")
                 {
                     p.Z = 0;
                 }
             }
         }
         if (pGD.HasM)
         {
             IMAware pMA = geo as IMAware;
             pMA.MAware = true;
         }
         if (!pWorkspaceEdit.IsBeingEdited())
         {
             pWorkspaceEdit.StartEditing(true);
             pWorkspaceEdit.StartEditOperation();
         }
         IFeature pFeature = fc.CreateFeature();
         pFeature.Shape = geo;
         pFeature.Store();
         if (pWorkspaceEdit.IsBeingEdited())
         {
             pWorkspaceEdit.StartEditOperation();
             pWorkspaceEdit.StopEditing(true);
         }
         pMap.ClearSelection();
     }
     catch (System.Exception ex)
     {
         return;
     }
 }
Exemplo n.º 5
0
 public static void MakeOffsetZ(IGeometry igeometry_0, double double_0)
 {
     if (igeometry_0 is IZ)
     {
         GeometryOperator.MakeZMAware(igeometry_0, true);
         IZ igeometry0 = igeometry_0 as IZ;
         igeometry0.CalculateNonSimpleZs();
         igeometry0.OffsetZs(double_0);
     }
 }
Exemplo n.º 6
0
 public static void MakeConstantZ(IGeometry igeometry_0, double double_0)
 {
     if (igeometry_0 is IZ)
     {
         Utils3D.MakeZMAware(igeometry_0, true);
         IZ iZ = igeometry_0 as IZ;
         iZ.CalculateNonSimpleZs();
         iZ.SetConstantZ(double_0);
     }
 }
Exemplo n.º 7
0
        public static int CreateFeature(IGeometry pGeometry, IFeatureClass pFeatureClass)
        {
            double num;
            double num1;
            int    oID;

            try
            {
                if ((pGeometry == null ? false : pFeatureClass != null))
                {
                    int          num2        = pFeatureClass.FindField(pFeatureClass.ShapeFieldName);
                    IGeometryDef geometryDef = pFeatureClass.Fields.Field[num2].GeometryDef;
                    if (geometryDef.HasZ)
                    {
                        ((IZAware)pGeometry).ZAware = true;
                        if (pGeometry is IZ)
                        {
                            IZ igeometry0 = (IZ)pGeometry;
                            geometryDef.SpatialReference.GetZDomain(out num, out num1);
                            igeometry0.SetConstantZ(num);
                        }
                        else if (pGeometry is IPoint)
                        {
                            geometryDef.SpatialReference.GetZDomain(out num, out num1);
                            (pGeometry as IPoint).Z = num;
                        }
                    }
                    if (geometryDef.HasM)
                    {
                        ((IMAware)pGeometry).MAware = true;
                    }
                    IFeature feature = pFeatureClass.CreateFeature();
                    feature.Shape = pGeometry;
                    try
                    {
                        ((IRowSubtypes)feature).InitDefaultValues();
                    }
                    catch (Exception exception)
                    {
                        Logger.Current.Error("", exception, null);
                    }
                    EditorEvent.NewRow(feature);
                    feature.Store();
                    EditorEvent.AfterNewRow(feature);
                    oID = feature.OID;
                    return(oID);
                }
            }
            catch (Exception exception1)
            {
                Logger.Current.Error("", exception1, null);
            }
            oID = -1;
            return(oID);
        }
Exemplo n.º 8
0
        public static void CreateFeature2(IGeometry pGeometry, IFeatureClass pFeatureClass)
        {
            double num;
            double num1;

            if (pGeometry != null && !pGeometry.IsEmpty)
            {
                pGeometry.Envelope.Expand(10, 10, false);
                try
                {
                    int          num2        = pFeatureClass.FindField(pFeatureClass.ShapeFieldName);
                    IGeometryDef geometryDef = pFeatureClass.Fields.Field[num2].GeometryDef;
                    if (geometryDef.HasZ)
                    {
                        ((IZAware)pGeometry).ZAware = true;
                        if (pGeometry is IZ)
                        {
                            IZ igeometry0 = (IZ)pGeometry;
                            geometryDef.SpatialReference.GetZDomain(out num, out num1);
                            igeometry0.SetConstantZ(num);
                        }
                        else if (pGeometry is IPoint)
                        {
                            geometryDef.SpatialReference.GetZDomain(out num, out num1);
                            (pGeometry as IPoint).Z = num;
                        }
                    }
                    if (geometryDef.HasM)
                    {
                        ((IMAware)pGeometry).MAware = true;
                    }
                    IFeature feature = pFeatureClass.CreateFeature();
                    feature.Shape = pGeometry;
                    try
                    {
                        ((IRowSubtypes)feature).InitDefaultValues();
                    }
                    catch (Exception exception)
                    {
                        Logger.Current.Error("", exception, null);
                    }
                    EditorEvent.NewRow(feature);
                    feature.Store();
                }
                catch (COMException cOMException)
                {
                    Logger.Current.Error("", cOMException, null);
                }
                catch (Exception exception1)
                {
                    Logger.Current.Error("", exception1, null);
                }
            }
        }
Exemplo n.º 9
0
 public static void MakeConstantZAsMaxZ(IPolyline ipolyline_0)
 {
     if (ipolyline_0 is IZ)
     {
         IZAware iZAware = ipolyline_0 as IZAware;
         iZAware.ZAware = true;
         IZ iZ = ipolyline_0 as IZ;
         iZ.SetConstantZ(iZ.ZMax);
     }
     else
     {
         System.Windows.Forms.MessageBox.Show("Geometry is not IZ.", "MakeConstantZAsMaxZ");
     }
 }
Exemplo n.º 10
0
        private void CreateParallel(IGeometry pGeometry, IFeatureClass pFeatureClass)
        {
            double num;
            double num1;

            try
            {
                if ((pGeometry == null ? false : pFeatureClass != null))
                {
                    int          num2        = pFeatureClass.FindField(pFeatureClass.ShapeFieldName);
                    IGeometryDef geometryDef = pFeatureClass.Fields.Field[num2].GeometryDef;
                    if (geometryDef.HasZ)
                    {
                        ((IZAware)pGeometry).ZAware = true;
                        if (pGeometry is IZ)
                        {
                            IZ igeometry0 = (IZ)pGeometry;
                            geometryDef.SpatialReference.GetZDomain(out num, out num1);
                            igeometry0.SetConstantZ(num);
                        }
                        else if (pGeometry is IPoint)
                        {
                            geometryDef.SpatialReference.GetZDomain(out num, out num1);
                            (pGeometry as IPoint).Z = num;
                        }
                    }
                    if (geometryDef.HasM)
                    {
                        ((IMAware)pGeometry).MAware = true;
                    }
                    IFeature feature = pFeatureClass.CreateFeature();
                    feature.Shape = pGeometry;
                    try
                    {
                        ((IRowSubtypes)feature).InitDefaultValues();
                    }
                    catch (Exception exception)
                    {
                        // CErrorLog.writeErrorLog(this, exception, "");
                    }
                    feature.Store();
                }
            }
            catch (Exception exception1)
            {
                //CErrorLog.writeErrorLog(null, exception1, "");
            }
        }
Exemplo n.º 11
0
        public static RealMatrix GetIdentityMatrix(int n)
        {
            var identityMatrix = new RealMatrix(n, n);

            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    if (i == j)
                    {
                        identityMatrix.M[i][j] = IR.New(IZ.New(1));
                    }
                }
            }

            return(identityMatrix);
        }
        public void EraseOper()
        {
            //空间查询
            ISpatialFilter tSF = new SpatialFilterClass();

            tSF.Geometry   = pEnvelope;
            tSF.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
            IFeatureCursor tFeatureCursor = pFeatureClass.Search(tSF, false);
            IFeature       tFeature       = tFeatureCursor.NextFeature();

            while (tFeature != null)
            {
                if (tFeature.Shape.SpatialReference != pEnvelope.SpatialReference)  //sourceGeometry为被裁剪的图形
                {
                    pEnvelope.Project(tFeature.Shape.SpatialReference);
                }
                //此处应保持裁剪与被裁剪图层的空间参考一致,否则容易发生异常
                switch (tFeature.Shape.GeometryType)
                {
                case esriGeometryType.esriGeometryPolygon:
                    ITopologicalOperator tTope1 = pEnvelope as ITopologicalOperator;
                    tTope1.Simplify();
                    ITopologicalOperator tTope2 = tFeature.ShapeCopy as ITopologicalOperator;
                    tTope2.Simplify();
                    IGeometry tGeoDe = tTope2.Difference((IGeometry)tTope1);

                    if (tFeature.Fields.get_Field(tFeature.Fields.FindField("Shape")).GeometryDef.HasZ)
                    {
                        IZAware zAware = (IZAware)tGeoDe;
                        zAware.ZAware = true;
                        IZ iz = (IZ)tGeoDe;
                        iz.SetConstantZ(0);
                    }

                    tFeature.Shape = tGeoDe;
                    tFeature.Store();
                    tFeature = tFeatureCursor.NextFeature();
                    break;

                default:
                    break;
                }
                tFeature = tFeatureCursor.NextFeature();
            }
            ReleaseCom(tFeatureCursor);
        }
Exemplo n.º 13
0
        /// <summary>
        /// Geometry中Z值和M值处理
        /// </summary>
        /// <params name="feature"></params>
        /// <params name="geometry"></params>
        /// <params name="zValue"></params>
        public static void HandleZMValue(IFeature feature, IGeometry geometry, double zValue)
        {
            //先判断图层要素是否有Z值
            int index;

            index = feature.Fields.FindField(GIS_Const.FIELD_SHAPE);
            IGeometryDef pGeometryDef;

            pGeometryDef = feature.Fields.get_Field(index).GeometryDef as IGeometryDef;

            IPointCollection pPointCollection = geometry as IPointCollection;

            if (pGeometryDef.HasZ)
            {
                IZAware pZAware = (IZAware)geometry;
                pZAware.ZAware = true;

                if (geometry.GeometryType == esriGeometryType.esriGeometryPoint)
                {
                    IPoint point = (IPoint)geometry;
                    point.Z = zValue;
                }
                else
                {
                    IZ iz1 = (IZ)geometry;
                    iz1.SetConstantZ(zValue);  //将Z值设置为zValue
                }
            }
            else
            {
                IZAware pZAware = (IZAware)geometry;
                pZAware.ZAware = false;
            }

            if (pGeometryDef.HasM)
            {
                IMAware pMAware = (IMAware)geometry;
                pMAware.MAware = true;
            }
            else
            {
                IMAware pMAware = (IMAware)geometry;
                pMAware.MAware = false;
            }
        }
Exemplo n.º 14
0
 private void Operacje()
 {
     foreach (var wskaznik in KO)
     {
         if (wskaznik < 10)
         {
             IZ.Add(1);
         }
         else if (wskaznik >= 10 && wskaznik <= 50)
         {
             IZ.Add(2);
         }
         else
         {
             IZ.Add(3);
         }
     }
 }
Exemplo n.º 15
0
        public static IGeometry ModifyGeometryZMValue(IObjectClass featureClass, IGeometry modifiedGeometry)
        {
            IFeatureClass targetFeatureClass = featureClass as IFeatureClass;

            if (targetFeatureClass == null)
            {
                return(null);
            }
            string           shapeFieldName  = targetFeatureClass.ShapeFieldName;
            IFields          fields          = targetFeatureClass.Fields;
            int              geometryIndex   = fields.FindField(shapeFieldName);
            IField           field           = fields.get_Field(geometryIndex);
            IGeometryDef     geometryDef     = field.GeometryDef;
            IPointCollection pointCollection = modifiedGeometry as IPointCollection;

            if (geometryDef.HasZ)
            {
                IZAware zAware = modifiedGeometry as IZAware;
                zAware.ZAware = true;
                IZ iz = modifiedGeometry as IZ;
                //将Z值设置为0
                iz.SetConstantZ(0);
            }
            else
            {
                IZAware zAware = modifiedGeometry as IZAware;
                zAware.ZAware = false;
            }
            if (geometryDef.HasM)
            {
                IMAware mAware = modifiedGeometry as IMAware;
                mAware.MAware = true;
            }
            else
            {
                IMAware mAware = modifiedGeometry as IMAware;
                mAware.MAware = false;
            }

            return(modifiedGeometry);
        }
Exemplo n.º 16
0
        /// <summary>
        /// Geometry中Z值和M值处理
        /// </summary>
        /// <params name="feature"></params>
        /// <params name="geometry"></params>
        /// <params name="zValue"></params>
        public static void HandleZMValue(IFeature feature, IGeometry geometry)
        {
            //先判断图层要素是否有Z值
            int index;

            index = feature.Fields.FindField(GIS_Const.FIELD_SHAPE);
            IGeometryDef pGeometryDef;

            pGeometryDef = feature.Fields.get_Field(index).GeometryDef as IGeometryDef;

            IPointCollection pPointCollection = geometry as IPointCollection;

            if (pGeometryDef.HasZ)
            {
                IZAware pZAware = (IZAware)geometry;
                pZAware.ZAware = true;
                if (geometry.Envelope.ZMax.ToString() == "非数字" || geometry.Envelope.ZMax.ToString() == "NaN")
                {
                    IZ iz1 = (IZ)geometry;
                    iz1.SetConstantZ(0);  //将Z值设置为0
                }
                //IPoint point = (IPoint)geometry;
                //point.Z = 0;
            }
            else
            {
                IZAware pZAware = (IZAware)geometry;
                pZAware.ZAware = false;
            }

            if (pGeometryDef.HasM)
            {
                IMAware pMAware = (IMAware)geometry;
                pMAware.MAware = true;
            }
            else
            {
                IMAware pMAware = (IMAware)geometry;
                pMAware.MAware = false;
            }
        }
Exemplo n.º 17
0
        public static IGeometry ModifyGeomtryZMValue(IObjectClass featureClass, IGeometry modifiedGeo)
        {
            IFeatureClass trgFtCls = featureClass as IFeatureClass;

            if (trgFtCls == null)
            {
                return(null);
            }
            string           shapeFieldName   = trgFtCls.ShapeFieldName;
            IFields          fields           = trgFtCls.Fields;
            int              geometryIndex    = fields.FindField(shapeFieldName);
            IField           field            = fields.get_Field(geometryIndex);
            IGeometryDef     pGeometryDef     = field.GeometryDef;
            IPointCollection pPointCollection = modifiedGeo as IPointCollection;

            if (pGeometryDef.HasZ)
            {
                IZAware pZAware = modifiedGeo as IZAware;
                pZAware.ZAware = true;
                IZ iz1 = modifiedGeo as IZ;
                //将z值设置为0
                iz1.SetConstantZ(0);
            }
            else
            {
                IZAware pZAware = modifiedGeo as IZAware;
                pZAware.ZAware = false;
            }
            if (pGeometryDef.HasM)
            {
                IMAware pMAware = modifiedGeo as IMAware;
                pMAware.MAware = true;
            }
            else
            {
                IMAware pMAware = modifiedGeo as IMAware;
                pMAware.MAware = false;
            }
            return(modifiedGeo);
        }
Exemplo n.º 18
0
        /// <summary>
        /// 存储范围线
        /// </summary>
        /// <param name="geo"></param>
        /// <param name="strRegionName"></param>
        /// <param name="fc"></param>
        private void SaveFanWei(IGeometry geo, string strRegionName, IFeatureClass fc)
        {
            try
            {
                int      index1, index2, index3, index4;
                IFeature pFea;

                index1 = fc.FindField("REGIONNAME");
                index2 = fc.FindField("SMSCODE");
                index3 = fc.FindField("GEOOBJNUM");
                index4 = fc.FindField("Mark");

                //存储范围线
                pFea = fc.CreateFeature();
                pFea.set_Value(index1, strRegionName);
                pFea.set_Value(index2, "更新范围");
                pFea.set_Value(index3, "194013");
                pFea.set_Value(index4, "已导出,未导入更新");

                int          index = fc.FindField(fc.ShapeFieldName);
                IGeometryDef pGD   = fc.Fields.get_Field(index).GeometryDef;
                if (pGD.HasZ)
                {
                    IZAware pZA = geo as IZAware;
                    pZA.ZAware = true;
                    IZ     pZ = geo as IZ;
                    double zmin = -1000, zmax = 1000;
                    if (pGD.SpatialReference.HasZPrecision())
                    {
                        pGD.SpatialReference.GetZDomain(out zmin, out zmax);
                    }
                    if (pZ != null)
                    {
                        pZ.SetConstantZ(0);
                    }
                    else
                    {
                        IPoint p = geo as IPoint;
                        if (p != null)
                        {
                            if (p.Z.ToString() == "非数字")
                            {
                                p.Z = 0;
                            }
                        }
                    }
                }

                if (pGD.HasM)
                {
                    IMAware pMA = geo as IMAware;
                    pMA.MAware = true;
                }
                (geo as ITopologicalOperator).Simplify();
                pFea.Shape = geo as IGeometry;
                pFea.Store();
            }
            catch (System.Exception ex)
            {
            }
        }
Exemplo n.º 19
0
 public void CreateFeature(IGeometry igeometry_0)
 {
     try
     {
         if (igeometry_0 != null)
         {
             IFeatureLayer  featureLayer  = Yutai.ArcGIS.Common.Editor.Editor.CurrentEditTemplate.FeatureLayer;
             IDataset       dataset       = (IDataset)featureLayer.FeatureClass;
             IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)dataset.Workspace;
             int            index         = featureLayer.FeatureClass.FindField(featureLayer.FeatureClass.ShapeFieldName);
             IGeometryDef   geometryDef   = featureLayer.FeatureClass.Fields.get_Field(index).GeometryDef;
             if (geometryDef.HasZ)
             {
                 IZAware iZAware = (IZAware)igeometry_0;
                 iZAware.ZAware = true;
                 IZ     iZ = (IZ)igeometry_0;
                 double constantZ;
                 double num;
                 geometryDef.SpatialReference.GetZDomain(out constantZ, out num);
                 iZ.SetConstantZ(constantZ);
             }
             if (geometryDef.HasM)
             {
                 IMAware iMAware = (IMAware)igeometry_0;
                 iMAware.MAware = true;
             }
             workspaceEdit.StartEditOperation();
             IFeature feature = featureLayer.FeatureClass.CreateFeature();
             if (igeometry_0 is ITopologicalOperator)
             {
                 (igeometry_0 as ITopologicalOperator).Simplify();
             }
             feature.Shape = igeometry_0;
             try
             {
                 IRowSubtypes rowSubtypes = (IRowSubtypes)feature;
                 rowSubtypes.InitDefaultValues();
             }
             catch (Exception exception_)
             {
                 CErrorLog.writeErrorLog(this, exception_, "");
             }
             feature.Store();
             workspaceEdit.StopEditOperation();
             EditorEvent.AddFeature(featureLayer, feature);
             IActiveView activeView = (IActiveView)_context.FocusMap;
             _context.FocusMap.ClearSelection();
             _context.FocusMap.SelectFeature(featureLayer, feature);
             if (igeometry_0.GeometryType == esriGeometryType.esriGeometryPoint)
             {
                 double distance = Common.ConvertPixelsToMapUnits((IActiveView)_context.FocusMap, 30.0);
                 ITopologicalOperator topologicalOperator = (ITopologicalOperator)igeometry_0;
                 topologicalOperator.Buffer(distance);
                 activeView.Refresh();
             }
             else
             {
                 activeView.Refresh();
             }
         }
     }
     catch (COMException ex)
     {
         if (ex.ErrorCode == -2147220936)
         {
             System.Windows.Forms.MessageBox.Show("坐标值或量测值超出范围!", "创建要素",
                                                  System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Hand);
         }
     }
 }
Exemplo n.º 20
0
        /// <summary>
        /// 裁切一个几何对象,不需要传出
        /// </summary>
        /// <param name="shape"></param>
        /// <param name="geometryType"></param>
        /// <param name="ply"></param>
        /// <param name="geoObjNum"></param>
        /// <returns></returns>
        private bool ClipGeometry(ref IGeometry inGeometry, esriGeometryType geometryType, IPolygon clipPolygon, string GeoObjNum)
        {
            IPolycurve pPolyCurve;

            bool                 returnValue   = false;
            IGeometry            tempGeometry  = null;
            IGeometry            tempGeometry1 = null;
            ITopologicalOperator topologyOper  = clipPolygon as ITopologicalOperator;

            topologyOper.Simplify();
            IRelationalOperator relationOper = clipPolygon as IRelationalOperator;

            IZAware             zIn = inGeometry as IZAware;
            IMAware             mAware;
            IPoint              pPoint, pPoint1;
            IPointCollection    pPtC;
            ICurve              pCurve;
            IGeometryCollection pGeoC;
            bool HasM = true;

            IHitTest         pHitTest;
            double           dblHitDist   = 0;
            int              partIndex    = 0;
            int              segmentIndex = 0;
            bool             bRightSide   = true;
            IPoint           hitPoint     = new PointClass(); //返回击中位置
            IPath            pPath;
            IPointCollection pPointC;
            IPoint           P1, P2;

            switch (geometryType)
            {
            case esriGeometryType.esriGeometryPoint:
                //如果点包含在多边形中
                if (relationOper.Contains(inGeometry))
                {
                    //tempGeometry = inGeometry;
                    returnValue = true;
                }
                break;

            case esriGeometryType.esriGeometryPolyline:
                //'如果多义线穿越多边形或包含在多边形中
                if (relationOper.Contains(inGeometry))
                {
                    returnValue = true;
                    //tempGeometry = inGeometry;
                }
                else     //if(relationOper.Crosses(inGeometry))    2008.1.29 TianK 注释掉  解决了裁切丢数据的问题
                {
                    pPolyCurve = inGeometry as IPolycurve;
                    pPolyCurve.Generalize(0.03);

                    if (DIRECTIONLINE.IndexOf(GeoObjNum) != -1)         //如果是有方向的线性地物
                    {
                        pHitTest = (IHitTest)inGeometry;

                        mAware = inGeometry as IMAware;                       ////2008.1.27TianK 修改 确保裁切后的线不反向
                        if (mAware.MAware == true)
                        {
                            HasM = true;
                            pPtC = inGeometry as IPointCollection;
                            for (int i = 0; i < pPtC.PointCount; i++)
                            {
                                pPoint   = pPtC.get_Point(i);
                                pPoint.M = i;
                                pPtC.UpdatePoint(i, pPoint);
                            }
                        }
                        else
                        {
                            HasM          = false;
                            mAware.MAware = true;
                            pPtC          = inGeometry as IPointCollection;
                            for (int i = 0; i < pPtC.PointCount; i++)
                            {
                                pPoint   = pPtC.get_Point(i);
                                pPoint.M = i;
                                pPtC.UpdatePoint(i, pPoint);
                            }
                        }
                        tempGeometry1 = topologyOper.Intersect(inGeometry, esriGeometryDimension.esriGeometry1Dimension);
                        tempGeometry  = (inGeometry as ITopologicalOperator).Difference(tempGeometry1);
                        ////2008.1.27TianK 修改 确保裁切后的线不反向
                        mAware        = tempGeometry as IMAware;
                        mAware.MAware = true;
                        pGeoC         = tempGeometry as IGeometryCollection;
                        for (int j = 0; j < pGeoC.GeometryCount; j++)
                        {
                            pPtC    = pGeoC.get_Geometry(j) as IPointCollection;
                            pPoint  = pPtC.get_Point(0);
                            pPoint1 = pPtC.get_Point(pPtC.PointCount - 1);
                            if (double.IsNaN(pPoint.M))
                            {
                                if (pHitTest.HitTest(pPoint, 0.01, esriGeometryHitPartType.esriGeometryPartBoundary,
                                                     hitPoint, ref dblHitDist, ref partIndex, ref segmentIndex, ref bRightSide)) //如果击中该要素
                                {
                                    pPath   = (IPath)(inGeometry as IGeometryCollection).get_Geometry(partIndex);
                                    pPointC = (IPointCollection)pPath;    //接口跳转

                                    P1 = pPointC.get_Point(segmentIndex);
                                    P2 = pPointC.get_Point(segmentIndex + 1);
                                    AddM_P1_P2(P1, P2, ref pPoint);
                                    pPtC.UpdatePoint(0, pPoint);
                                }
                            }
                            if (double.IsNaN(pPoint1.M))
                            {
                                if (pHitTest.HitTest(pPoint1, 0.01, esriGeometryHitPartType.esriGeometryPartBoundary,
                                                     hitPoint, ref dblHitDist, ref partIndex, ref segmentIndex, ref bRightSide)) //如果击中该要素
                                {
                                    pPath   = (IPath)(inGeometry as IGeometryCollection).get_Geometry(partIndex);
                                    pPointC = (IPointCollection)pPath;    //接口跳转

                                    P1 = pPointC.get_Point(segmentIndex);
                                    P2 = pPointC.get_Point(segmentIndex + 1);
                                    AddM_P1_P2(P1, P2, ref pPoint1);
                                    pPtC.UpdatePoint(pPtC.PointCount - 1, pPoint1);
                                }
                            }
                            pPoint  = pPtC.get_Point(0);
                            pPoint1 = pPtC.get_Point(pPtC.PointCount - 1);
                            if (pPoint.M >= pPoint1.M)
                            {
                                pCurve = pGeoC.get_Geometry(j) as ICurve;
                                pCurve.ReverseOrientation();
                            }
                            if (HasM)
                            {
                                for (int i = 0; i < pPtC.PointCount; i++)
                                {
                                    pPoint   = pPtC.get_Point(i);
                                    pPoint.M = 0;
                                    pPtC.UpdatePoint(i, pPoint);
                                }
                            }
                            else
                            {
                                mAware.MAware = false;
                            }
                        }
                    }
                    else
                    {
                        int    i;
                        IPoint p;
                        tempGeometry1 = topologyOper.Intersect(inGeometry, esriGeometryDimension.esriGeometry1Dimension);
                        tempGeometry  = (inGeometry as ITopologicalOperator).Difference(tempGeometry1);
                    }

                    if (zIn.ZAware)
                    {
                        IZAware zOut = tempGeometry as IZAware;
                        zOut.ZAware = zIn.ZAware;

                        IZ iz = tempGeometry as IZ;
                        try
                        {
                            iz.CalculateNonSimpleZs();
                        }
                        catch
                        {
                            //该值应该传入,表示如果栽得的线如果不能插值出Z值赋一个默认值,或再次计算
                            //可以根据inGeometry计算
                            iz.SetConstantZ(0);
                        }
                    }
                }
                break;

            case esriGeometryType.esriGeometryMultipoint:
            case esriGeometryType.esriGeometryPolygon:
                //如果多边形与裁剪多边形相交或在裁剪多边形中
                if (relationOper.Contains(inGeometry))
                {
                    //tempGeometry = inGeometry;
                    returnValue = true;
                }
                else     //if( relationOper.Overlaps(inGeometry))     2008.1.29 TianK 注释掉
                {
                    pPolyCurve = inGeometry as IPolycurve;
                    pPolyCurve.Generalize(0.03);
                    tempGeometry1 = topologyOper.Intersect(inGeometry, esriGeometryDimension.esriGeometry2Dimension);
                    tempGeometry  = (inGeometry as ITopologicalOperator).Difference(tempGeometry1);

                    if (zIn.ZAware)
                    {
                        IZAware zOut = tempGeometry as IZAware;
                        zOut.ZAware = zIn.ZAware;
                        IZ iz = tempGeometry as IZ;
                        try
                        {
                            iz.CalculateNonSimpleZs();
                        }
                        catch
                        {
                            //该值应该传入,表示如果栽得的线如果不能插值出Z值赋一个默认值,或再次计算
                            //可以根据inGeometry计算
                            iz.SetConstantZ(0);
                        }
                    }
                }
                break;
            }
            if (tempGeometry != null && !tempGeometry.IsEmpty)
            {
                inGeometry = tempGeometry;
            }
            return(returnValue);
        }
        protected void wcFileManager_SelectedItemsAction(object sender, IZ.WebFileManager.SelectedItemsActionCancelEventArgs e)
        {
            //string relativePath = e.DestinationDirectory.FileManagerPath.Replace('/', '\\').TrimStart(new char[] { '\\' });
            string destinationRelativePath = TrimPackageNameFromVirtualPathAndMakeRelative(this.Target, e.DestinationDirectory.FileManagerPath);

            switch (e.Action)
            {
                case IZ.WebFileManager.SelectedItemsAction.Copy:
                    foreach (var selectedItem in e.SelectedItems)
                    {
                        string sourceFile = TrimPackageNameFromVirtualPathAndMakeRelative(this.Target, selectedItem.FileManagerPath);
                        AutoUpdateManager.CopyFileInPackage(this.Target, Path.GetDirectoryName(sourceFile), Path.GetFileName(sourceFile), destinationRelativePath);
                    }
                    break;

                case IZ.WebFileManager.SelectedItemsAction.Delete:
                    foreach (var selectedItem in e.SelectedItems)
                    {
                        if ((File.GetAttributes(selectedItem.PhysicalPath) & FileAttributes.Directory) == FileAttributes.Directory)
                            AutoUpdateManager.DeleteFolderFromPackage(this.Target, destinationRelativePath);
                        else
                            AutoUpdateManager.DeleteFileFromPackage(this.Target, destinationRelativePath, Path.GetFileName(selectedItem.PhysicalPath));
                    }
                    break;

                case IZ.WebFileManager.SelectedItemsAction.Move:
                    foreach (var selectedItem in e.SelectedItems)
                    {
                        if ((File.GetAttributes(selectedItem.PhysicalPath) & FileAttributes.Directory) == FileAttributes.Directory)
                            AutoUpdateManager.MoveFolderInPackage(this.Target, TrimPackageNameFromVirtualPathAndMakeRelative(this.Target, selectedItem.FileManagerPath), destinationRelativePath);
                        else
                            AutoUpdateManager.MoveFileInPackage(this.Target, TrimPackageNameFromVirtualPathAndMakeRelative(this.Target, selectedItem.FileManagerPath), Path.GetFileName(selectedItem.PhysicalPath), destinationRelativePath, Path.GetFileName(selectedItem.PhysicalPath));
                    }
                    break;
            }
        }
 protected void wcFileManager_FileUploading(object sender, IZ.WebFileManager.UploadFileCancelEventArgs e)
 {
 }
 protected void wcFileManager_SelectedItemsActionComplete(object sender, IZ.WebFileManager.SelectedItemsActionEventArgs e)
 {
 }
 protected void wcFileManager_ItemRenamed(object sender, IZ.WebFileManager.RenameEventArgs e)
 {
 }
Exemplo n.º 25
0
        public static void CreateFeature(IGeometry pGeometry, IActiveView pActiveView, IFeatureLayer pFeatureLayer,
                                         bool IsClearSelection)
        {
            double    num;
            double    num1;
            Exception exception;

            if (pGeometry != null && !pGeometry.IsEmpty)
            {
                IEnvelope envelope = pGeometry.Envelope;
                envelope.Expand(10, 10, false);
                try
                {
                    pGeometry.SpatialReference = pActiveView.FocusMap.SpatialReference;
                    int          num2        = pFeatureLayer.FeatureClass.FindField(pFeatureLayer.FeatureClass.ShapeFieldName);
                    IGeometryDef geometryDef = pFeatureLayer.FeatureClass.Fields.Field[num2].GeometryDef;
                    if (geometryDef.HasZ)
                    {
                        ((IZAware)pGeometry).ZAware = true;
                        if (pGeometry is IZ)
                        {
                            IZ igeometry0 = (IZ)pGeometry;
                            geometryDef.SpatialReference.GetZDomain(out num, out num1);
                            igeometry0.SetConstantZ(num);
                        }
                        else if (pGeometry is IPoint)
                        {
                            geometryDef.SpatialReference.GetZDomain(out num, out num1);
                            (pGeometry as IPoint).Z = num;
                        }
                    }
                    if (geometryDef.HasM)
                    {
                        ((IMAware)pGeometry).MAware = true;
                    }
                    IWorkspaceEdit workspace = (IWorkspaceEdit)((IDataset)pFeatureLayer.FeatureClass).Workspace;
                    workspace.StartEditOperation();
                    IFeature feature = pFeatureLayer.FeatureClass.CreateFeature();
                    feature.Shape = pGeometry;
                    try
                    {
                        ((IRowSubtypes)feature).InitDefaultValues();
                    }
                    catch (Exception exception1)
                    {
                        exception = exception1;
                        Logger.Current.Error(exception.Message);
                    }
                    if (Editor.CurrentEditTemplate != null)
                    {
                        Editor.CurrentEditTemplate.SetFeatureValue(feature);
                    }
                    EditorEvent.NewRow(feature);
                    feature.Store();
                    workspace.StopEditOperation();
                    EditorEvent.AfterNewRow(feature);
                    if (IsClearSelection)
                    {
                        if (pActiveView.FocusMap.SelectionCount > 0)
                        {
                            pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
                            pActiveView.FocusMap.ClearSelection();
                            pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
                        }
                    }
                    pActiveView.FocusMap.SelectFeature(pFeatureLayer, feature);
                    if (pGeometry.GeometryType != esriGeometryType.esriGeometryPoint)
                    {
                        pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, pFeatureLayer, envelope);
                    }
                    else
                    {
                        pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, pFeatureLayer, envelope);
                    }
                    if (pFeatureLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPoint)
                    {
                        pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, pFeatureLayer, envelope);
                    }
                }
                catch (COMException cOMException1)
                {
                    COMException cOMException = cOMException1;
                    if (cOMException.ErrorCode != -2147220936)
                    {
                        MessageBox.Show(cOMException.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    }
                    else
                    {
                        MessageBox.Show("几何坐标超出边界!", "", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    }
                    if (pGeometry.GeometryType != esriGeometryType.esriGeometryPoint)
                    {
                        pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, pFeatureLayer, envelope);
                    }
                    else
                    {
                        pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, pFeatureLayer, null);
                    }
                    Logger.Current.Error("", cOMException, null);
                }
                catch (Exception exception2)
                {
                    exception = exception2;
                    Logger.Current.Error("", exception, null);
                    if (pGeometry.GeometryType != esriGeometryType.esriGeometryPoint)
                    {
                        pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, pFeatureLayer, envelope);
                    }
                    else
                    {
                        pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, pFeatureLayer, null);
                    }
                    MessageBox.Show(exception.Message);
                }
            }
        }
 protected void wcFileManager_ItemRenaming(object sender, IZ.WebFileManager.RenameCancelEventArgs e)
 {
     string relativeDirectory = Path.GetDirectoryName(TrimPackageNameFromVirtualPathAndMakeRelative(this.Target, e.FileManagerItem.FileManagerPath));
     AutoUpdateManager.RenameFileInPackage(this.Target, relativeDirectory, Path.GetFileName(e.FileManagerItem.PhysicalPath), e.NewName);
 }
Exemplo n.º 27
0
        ///<summary>在地图上绘制指定颜色的图形</summary>
        ///<param name="scene">地图</param>
        ///<param name="geometry">feature 的shape</param>
        ///<param name="rgbColor">颜色</param>
        ///<param name="outlineRgbColor">边框颜色</param>
        ///<param name="OffsetZs">Z偏值</param>
        ///
        ///<remarks>Calling this function will not automatically make the graphics appear in the map area. Refresh the map area after after calling this function with Methods like IActiveView.Refresh or IActiveView.PartialRefresh.</remarks>
        internal static IElement AddGraphicToScene(IScene scene, ESRI.ArcGIS.Geometry.IGeometry geometry, ESRI.ArcGIS.Display.IRgbColor rgbColor, ESRI.ArcGIS.Display.IRgbColor outlineRgbColor, double OffsetZs)
        {
            //ESRI.ArcGIS.Carto.IGraphicsContainer graphicsContainer = (ESRI.ArcGIS.Carto.IGraphicsContainer)map; //IGraphicsContainer接口能删除
            IGraphicsContainer3D graphicsContainer3D = (IGraphicsContainer3D)scene.BasicGraphicsLayer;

            ESRI.ArcGIS.Carto.IElement element = null;
            if ((geometry.GeometryType) == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint)
            {
                IPoint point = (Point)geometry;

                try
                {
                    double X = point.X;
                    double Y = point.Y;
                }
                catch
                {
                    return(null);
                }
                point = GeometryUtilities.ConstructPoint3D(point, OffsetZs);
                // Marker symbols
                ESRI.ArcGIS.Display.ISimpleMarkerSymbol simpleMarkerSymbol = new ESRI.ArcGIS.Display.SimpleMarkerSymbolClass();
                simpleMarkerSymbol.Color        = rgbColor;
                simpleMarkerSymbol.Outline      = true;
                simpleMarkerSymbol.OutlineColor = rgbColor;
                simpleMarkerSymbol.Size         = 12;
                simpleMarkerSymbol.Style        = ESRI.ArcGIS.Display.esriSimpleMarkerStyle.esriSMSCircle;

                ESRI.ArcGIS.Carto.IMarkerElement markerElement = new ESRI.ArcGIS.Carto.MarkerElementClass();
                markerElement.Symbol = simpleMarkerSymbol;
                element = (ESRI.ArcGIS.Carto.IElement)markerElement; // Explicit Cast

                if (!(element == null))
                {
                    element.Geometry = point;

                    graphicsContainer3D.AddElement(element);
                }
            }
            else if ((geometry.GeometryType) == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline)
            {
                // Marker symbols
                ESRI.ArcGIS.Display.ISimpleLineSymbol simpleLineSymbol = new ESRI.ArcGIS.Display.SimpleLineSymbolClass();
                simpleLineSymbol.Color = rgbColor;
                simpleLineSymbol.Style = ESRI.ArcGIS.Display.esriSimpleLineStyle.esriSLSSolid;
                simpleLineSymbol.Width = 1;

                ESRI.ArcGIS.Carto.ILineElement lineElement = new ESRI.ArcGIS.Carto.LineElementClass();
                lineElement.Symbol = simpleLineSymbol;
                element            = (ESRI.ArcGIS.Carto.IElement)lineElement; // Explicit Cast

                if (!(element == null))
                {
                    element.Geometry = geometry;
                    graphicsContainer3D.AddElement(element);
                }
            }
            else if ((geometry.GeometryType) == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon)
            {
                IZ iz = (IZ)geometry;
                iz.OffsetZs(OffsetZs);//z值向上偏移

                // Polygon elements
                ESRI.ArcGIS.Display.ISimpleFillSymbol simpleFillSymbol = new ESRI.ArcGIS.Display.SimpleFillSymbolClass();
                simpleFillSymbol.Color = rgbColor;
                simpleFillSymbol.Style = ESRI.ArcGIS.Display.esriSimpleFillStyle.esriSFSForwardDiagonal;
                ESRI.ArcGIS.Carto.IFillShapeElement fillShapeElement = new ESRI.ArcGIS.Carto.PolygonElementClass();
                fillShapeElement.Symbol = simpleFillSymbol;
                element = (ESRI.ArcGIS.Carto.IElement)fillShapeElement; // Explicit Cast

                if (!(element == null))
                {
                    element.Geometry = geometry;
                    graphicsContainer3D.AddElement(element);
                }
            }



            return(element);
        }
Exemplo n.º 28
0
        //合并要素
        private void UnionFeatures(IEnumFeature selectedFeatures, IFeature pMergeFeature)
        {
            try
            {
                IFeature feature = null;
                object   missing = Type.Missing;
                selectedFeatures.Reset();
                feature = selectedFeatures.Next();
                if (feature == null)
                {
                    return;
                }
                IFeatureClass featureClass = feature.Class as IFeatureClass;
                switch (featureClass.ShapeType)
                {
                case esriGeometryType.esriGeometryPolyline:
                case esriGeometryType.esriGeometryPolygon:
                    break;

                default:
                    MessageBox.Show("请选择线或者面要素", "提示");
                    return;
                }
                IGeometryCollection geometries    = new GeometryBagClass();
                IDataset            dataset       = featureClass as IDataset;
                IWorkspaceEdit      workspaceEdit = dataset.Workspace as IWorkspaceEdit;
                while (feature != null)
                {
                    if (!feature.ShapeCopy.IsEmpty)
                    {
                        IGeometry           pGeometry           = feature.ShapeCopy;
                        IGeometryCollection pGeometryCollection = pGeometry as IGeometryCollection;
                        int geomCount = pGeometryCollection.GeometryCount;
                        if (geomCount > 1)
                        {
                            for (int k = 0; k < geomCount; k++)
                            {
                                IFeature     newFeature  = (feature.Class as IFeatureClass).CreateFeature();
                                IFeatureEdit featureEdit = feature as IFeatureEdit;
                                featureEdit.SplitAttributes(newFeature);
                                IGeometry newGeom = pGeometryCollection.Geometry[k];
                                if (feature.ShapeCopy.GeometryType == esriGeometryType.esriGeometryPolygon)
                                {
                                    IGeometryCollection polyGonC = new PolygonClass();
                                    polyGonC.AddGeometry(newGeom as IGeometry);
                                    IGeometry pGeoNew2 = polyGonC as IGeometry;
                                    pGeoNew2.SpatialReference = feature.ShapeCopy.SpatialReference;
                                    int          index        = feature.Fields.FindField("Shape");
                                    IGeometryDef pGeometryDef = pGeometryDef = feature.Fields.get_Field(index).GeometryDef as IGeometryDef;
                                    if (pGeometryDef.HasZ)
                                    {
                                        IZAware pZAware = (IZAware)pGeoNew2;
                                        pZAware.ZAware = true;
                                        IZ iz1 = (IZ)pGeoNew2;
                                        iz1.SetConstantZ(0);   //将Z值设置为0
                                    }
                                    else
                                    {
                                        IZAware pZAware = (IZAware)pGeoNew2;
                                        pZAware.ZAware = false;
                                    }
                                    if (pGeometryDef.HasM)
                                    {
                                        IMAware pMAware = (IMAware)pGeoNew2;
                                        pMAware.MAware = true;
                                    }
                                    else
                                    {
                                        IMAware pMAware = (IMAware)pGeoNew2;
                                        pMAware.MAware = false;
                                    }
                                    newFeature.Shape = pGeoNew2;
                                }
                                if (feature.ShapeCopy.GeometryType == esriGeometryType.esriGeometryPolyline)
                                {
                                    IGeometryCollection polyGonC = new PolylineClass();
                                    polyGonC.AddGeometry(newGeom as IGeometry);
                                    IGeometry pGeoNew2 = polyGonC as IGeometry;
                                    pGeoNew2.SpatialReference = feature.ShapeCopy.SpatialReference;
                                    int          index        = feature.Fields.FindField("Shape");
                                    IGeometryDef pGeometryDef = pGeometryDef = feature.Fields.get_Field(index).GeometryDef as IGeometryDef;
                                    if (pGeometryDef.HasZ)
                                    {
                                        IZAware pZAware = (IZAware)pGeoNew2;
                                        pZAware.ZAware = true;
                                        IZ iz1 = (IZ)pGeoNew2;
                                        iz1.SetConstantZ(0);   //将Z值设置为0
                                    }
                                    else
                                    {
                                        IZAware pZAware = (IZAware)pGeoNew2;
                                        pZAware.ZAware = false;
                                    }
                                    if (pGeometryDef.HasM)
                                    {
                                        IMAware pMAware = (IMAware)pGeoNew2;
                                        pMAware.MAware = true;
                                    }
                                    else
                                    {
                                        IMAware pMAware = (IMAware)pGeoNew2;
                                        pMAware.MAware = false;
                                    }
                                    newFeature.Shape = pGeoNew2;
                                }
                                newFeature.Store();
                            }
                            feature.Delete();
                        }
                    }
                    feature = selectedFeatures.Next();
                }
                workspaceEdit.StopEditOperation();
                selectedFeatures.Reset();
                //如果没有IWorkspaceEdit则无法进行撤销重做操作
            }
            catch (Exception ex)
            {
                //SysLogHelper.WriteOperationLog("要素合并错误", ex.Source, "数据编辑");
                MessageBox.Show(ex.Message);
            }
        }
 protected void wcFileManager_NewFolderCreating(object sender, IZ.WebFileManager.NewFolderCancelEventArgs e)
 {
 }
Exemplo n.º 30
0
        public DaneWalkaDoTabel GetDataToTable()
        {
            var list = new List <object>
            {
                Srednica,
                SRC,
                Dlugosc,
                DLC,
                MaterialPn,
                GestoscMaterialu,
                Stopnie,
                S,
                O,
                MPO,
                MPF,
                MW,
                TPF,
                DSR,
                SRPF,
                DLPF,
                QRG,
                QMT,
                QFN,
                QLRG,
                QLMT
            };

            var atname = new List <string>
            {
                "Średnica [mm]",
                "Średnica PF [mm]",
                "Długość [mm]",
                "Długość PF [mm]",
                "Materiał",
                "Gęstość materiału [kg/m3]",
                nameof(Stopnie),
                "S ",
                "O [%]",
                "mPO [kg]",
                "mPF [kg]",
                "mW [kg]",
                "TPF [μm]",
                "dśr [mm]",
                "SRPF [mm]",
                "DLPF [mm]",
                "Qzgr [mm]",
                "Qkszt [mm]",
                "Qwyk [mm]",
                "QPLzgr [mm]",
                "QPKksz [mm]"
            };

            var stopienWalu = new List <int>();

            for (int i = 0; i < Stopnie; i++)
            {
                stopienWalu.Add(i + 1);
            }
            var listList = new List <object[]>
            {
                stopienWalu.Cast <object>().ToArray(),
                DlugoscStopnia.Cast <object>().ToArray(),
                SrednicaStopnia.Cast <object>().ToArray(),
                KlasaTolerancji.Cast <object>().ToArray(),
                TPO.Cast <object>().ToArray(),
                KO.Cast <object>().ToArray(),
                IZ.Cast <object>().ToArray(),
                DFN.Cast <object>().ToArray(),
                DMT.Cast <object>().ToArray(),
                DRG.Cast <object>().ToArray(),
                APMAX.Cast <object>().ToArray()
            };

            var listname = new List <string>
            {
                "Stopień wału",
                "Długość stopnia [mm]",
                "Średnica stopnia [mm]",
                "Klasa Tolerancji",
                "TPO [μm]",
                "Ko",
                nameof(IZ),
                "Di Wyk [mm]",
                "Di Kszt [mm]",
                "Di Zgr [mm]",
                "apmax [mm]"
            };

            var naddatki = new List <List <object> >
            {
                new List <object>
                {
                    "Wykańczający",
                    "Kształtujący",
                    "Zgrubny"
                },
                new List <object>
                {
                    QFND,
                    QMTD,
                    QRGD
                },
                new List <object>
                {
                    QFN,
                    QMT,
                    QRG
                }
            };

            var naddatkiNames = new List <string>
            {
                "Rodzaj naddatku",
                "Naddatki dobrane [mm]",
                "Naddatki do obliczeń [mm]"
            };

            return(new DaneWalkaDoTabel
            {
                AtributeValue = list,
                ListValue = listList,
                AtributeName = atname,
                ListName = listname,
                NaddatkiValues = naddatki,
                NaddatkiNames = naddatkiNames,
                ImageWalek = Image
            });
        }
Exemplo n.º 31
0
 public A0(
     IZ z
     )
 {
     Z = z;
 }
Exemplo n.º 32
0
        /// <summary>
        /// 创建地理要素
        /// </summary>
        /// <param name="pGeom"></param>
        /// <param name="pMap"></param>
        /// <param name="pCurrentLayer"></param>
        public static void CreateFeature(IGeometry pGeom, IMap pMap, IFeatureClass pFeatureClass)
        {
            if (pGeom != null)
            {
                IDataset       pDataset;
                IWorkspaceEdit pWorkspaceEdit;

                if (pFeatureClass == null)
                {
                    return;
                }

                pDataset = (IDataset)pFeatureClass;

                pWorkspaceEdit = (IWorkspaceEdit)pDataset.Workspace;
                int          index = pFeatureClass.FindField(pFeatureClass.ShapeFieldName);
                IGeometryDef pGD   = pFeatureClass.Fields.get_Field(index).GeometryDef;
                if (pGD.HasZ)
                {
                    IZAware pZA = (IZAware)pGeom;
                    pZA.ZAware = true;
                    IZ     pZ = pGeom as IZ;
                    double zmin = -1000, zmax = 1000;
                    if (pGD.SpatialReference.HasZPrecision())
                    {
                        pGD.SpatialReference.GetZDomain(out zmin, out zmax);
                    }
                    if (pZ != null)
                    {
                        //pZ.SetConstantZ(zmin);
                        pZ.SetConstantZ(0);
                    }
                    else
                    {
                        IPoint p = (pGeom as IPoint);
                        if (p != null)
                        {
                            if (p.Z.ToString() == "非数字")
                            {
                                //p.Z = zmin;
                                p.Z = 0;
                            }
                        }
                    }
                }

                if (pGD.HasM)
                {
                    IMAware pMA = (IMAware)pGeom;
                    pMA.MAware = true;
                }

                if (!pWorkspaceEdit.IsBeingEdited())
                {
                    pWorkspaceEdit.StartEditing(true);
                    pWorkspaceEdit.StartEditOperation();
                }

                IFeature pFeature;
                pFeature = pFeatureClass.CreateFeature();

                try
                {
                    pFeature.Shape = pGeom;
                    pFeature.Store();
                }
                catch (System.Exception ex)
                {
                    System.Windows.Forms.MessageBox.Show(ex.Message);
                }

                if (pWorkspaceEdit.IsBeingEdited())
                {
                    pWorkspaceEdit.StopEditOperation();
                    pWorkspaceEdit.StopEditing(true);
                }

                pMap.ClearSelection();  //清除所有选择
            }
        }