Exemplo n.º 1
0
        /// <summary>
        /// 数据源图层名
        /// </summary>
        public void OnExecute()
        {
            switch (ActionArgument)
            {
            case ActionTypes.Adjust:
            {
                new ArcEngineLicense();
                SpatialAdjust.Adjust();
                break;
            }

            case ActionTypes.ImportData:
            {
                if (new string[] { Datasource, LayerName, OutDatasource, OutLayerName, ControlPoints }.Any(s => s == null))
                {
                    Console.WriteLine("参数没有写全");
                    break;
                    //throw new Exception("参数没有写全");
                }
                new ArcEngineLicense();
                SpatialAdjust sa = null;
                try
                {
                    sa = new SpatialAdjust(controlPointsFile: ControlPoints, controlPointsInputType: ControlPointsInputType, spatialAdjustMethodType: SpatialAdjustMethodType);
                }
                catch (Exception ex)
                {
                    sa = null;
                }
                var inFc = DataActions.GetFeatureClass(Datasource, DataSourceType, LayerName);
                ESRI.ArcGIS.Geodatabase.IFeatureClass outFc;
                try
                {
                    outFc = DataActions.GetFeatureClass(OutDatasource, OutDatasourceType, OutLayerName);
                }
                catch (Exception)
                {
                    outFc = DataActions.CreateFeatureClass(DataActions.GetWorkspace(OutDatasource, OutDatasourceType), "", OutLayerName, inFc);
                }
                //Console.WriteLine($"将使用{ SpatialAdjust.transformMethodMap[sa.SpatialAdjustMethodType].Name} 偏移");
                DataActions.CoverFeatureClassWithFeatureClass(inFc, outFc, sa);
                break;
            }

            case ActionTypes.LogLayer:
            {
                new ArcEngineLicense();
                LogActions.LogFeatureClass(Datasource, DataSourceType, LayerName);
            }
            break;

            case ActionTypes.BatchImport:
            {
                new ArcEngineLicense();
                var           layerNames          = LayerName.Split(',');
                List <string> finalNameStringList = new List <string>();
                var           workspace           = DataActions.GetWorkspace(Datasource, DataSourceType);
                var           featureWorkspace    = (IFeatureWorkspace)workspace;
                layerNames.ToList().ForEach((name) =>
                    {
                        try
                        {
                            featureWorkspace.OpenFeatureClass(name);
                            finalNameStringList.Add(name);
                        }
                        catch (Exception)
                        {
                            try
                            {
                                var dataset = featureWorkspace.OpenFeatureDataset(name);
                                var subs    = dataset.FeatureDatasetsInFeatureDataset();
                                subs.ToList().ForEach(sub => finalNameStringList.Add(sub.Name));
                            }
                            catch (Exception)
                            {
                            }
                        }
                    });
                finalNameStringList.ForEach((finalName) =>
                    {
                        new CommandLineController()
                        {
                            ActionArgument          = ActionTypes.ImportData,
                            Datasource              = Datasource,
                            DataSourceType          = DataSourceType,
                            LayerName               = finalName,
                            OutDatasource           = OutDatasource,
                            OutDatasourceType       = OutDatasourceType,
                            OutLayerName            = $"{finalName.Split('.').Last()}_adjusted",
                            ControlPoints           = ControlPoints,
                            ControlPointsInputType  = ControlPointsInputType,
                            SpatialAdjustMethodType = SpatialAdjustMethodType
                        }.OnExecute();
                    });
            }
            break;

            case ActionTypes.GenerateBatch:
            {
                new ArcEngineLicense();
                var batchFileName = String.Empty;
                //var dtn = DateTime.Now.ToFullTimeSecondString();
                if (String.IsNullOrEmpty(BatchFileName))
                {
                    var dtn = DateTime.Now;
                    var s   = dtn.ToBinary();
                    batchFileName = $"bat{s}.bat";
                }
                else
                {
                    batchFileName = BatchFileName;
                }
                var           layerNames          = LayerName.Split(',');
                List <string> finalNameStringList = new List <string>();
                var           workspace           = DataActions.GetWorkspace(Datasource, DataSourceType);
                var           featureWorkspace    = (IFeatureWorkspace)workspace;
                layerNames.ToList().ForEach((name) =>
                    {
                        try
                        {
                            featureWorkspace.OpenFeatureClass(name);
                            finalNameStringList.Add(name);
                        }
                        catch (Exception)
                        {
                            try
                            {
                                var dataset = featureWorkspace.OpenFeatureDataset(name);
                                var subs    = dataset.FeatureDatasetsInFeatureDataset();
                                subs.ToList().ForEach(sub => finalNameStringList.Add(sub.Name));
                            }
                            catch (Exception)
                            {
                            }
                        }
                    });


                using (StreamWriter sw = new StreamWriter(batchFileName, true, Encoding.Default))
                //using (StreamWriter sw = File.AppendText(batchFileName))
                {
                    var text = String.Empty;

                    finalNameStringList.ToList().ForEach((layerName) =>
                        {
                            //System.Reflection.Assembly.GetExecutingAssembly().FullName;
                            //sw.WriteLine( $"AoCli.exe "  )
                            sw.WriteLine($@"AoCli.exe BatchImport -ln {layerName} -ds {Datasource} -dst {DataSourceType} -ods {OutDatasource} -odst {OutDatasourceType} -oln {OutLayerName} -cp {ControlPoints} -samt {SpatialAdjustMethodType}" + " \n");
                            //text += $@"AoCli.exe BatchImport -ln {layerName} -ds {Datasource} -dst {DataSourceType} -ods {OutDatasource} -oln {OutLayerName} -cp {ControlPoints} -samt {SpatialAdjustMethodType}";
                            //text += "\n";
                        });
                    sw.Write(text);


                    Console.WriteLine("Batch file generated");
                }
            }
            break;

            case ActionTypes.GPTest:
            {
                new Test.MyTestClass().ShapeInWhereTest3();
            }
            break;

            default:
                break;
            }
        }
Exemplo n.º 2
0
        private void ForSmID()
        {
            string SmID, LayerName;

            //检查 and 数据赋值
            CheckRequery.checkNotNull("LayerName", "设施不能为空!", out LayerName);
            CheckRequery.checkNotNull("SmID", "SmID不能为空!", out SmID);

            LayerName = LayerName.Split('@')[0];
            string SQL = "";

            switch (LayerName)
            {
            case "普通给水管线":

                SQL = @"Select  SmID,
                                    管线编号,
                                    道路名称,
                                    管径,
                                    管长,
                                    管道材质,
                                    接口方式,
                                    起点点号,
                                    终止点号,
                                    敷设年代,
                                    竣工日期,
                                    施工单位,
                                    施工单位,
                                    起点埋深,
                                    终点埋深,
                                    平均埋深,
                                    起点高程,
                                    终点高程 From " + LayerName + " where  SmID=" + SmID;
                break;

            case "阀门":
                SQL = @"Select  SmID
                                    物探点号
                                    阀门编号
                                    口径,
                                    井盖形状,
                                    井盖尺寸,
                                    井盖材质,
                                    井壁结构,
                                    施工单位联系方式,
                                    施工单位,
                                    埋深,
                                    高程,
                                    开关状态,
                                    开关类型,
                                    材质,
                                    埋设方式,
                                    所在道路,
                                    道路名称,
                                    安装日期,
                                    竣工日期 From " + LayerName + " where  SmID=" + SmID;
                break;

            case "消防栓":
                SQL = @"Select  SmID,
                                    管径,
                                    管件口径,
                                    井盖形状,
                                    井盖尺寸,
                                    井盖材质,
                                    井壁结构,
                                    施工单位联系方式,
                                    施工单位,
                                    安装日期,
                                    竣工日期 From " + LayerName + " where  SmID=" + SmID;
                break;

            case "阀门井":
                SQL = @"Select  SmID,
                                    编号,
                                    井盖形状,
                                    井盖尺寸,
                                    井盖材质,
                                    井壁结构,
                                    施工单位,
                                    施工单位联系方式 From " + LayerName + " where  SmID=" + SmID;
                break;

            case "排气阀":
                SQL = @"Select  SmID,
                            编号,
                            施工单位,
                            道路名称 From " + LayerName + " where  SmID=" + SmID;
                break;

            case "直通井":
                SQL = @"Select  SmID,
                                    编号,
                                    井盖形状,
                                    井盖尺寸,
                                    井盖材质,
                                    井壁结构,
                                    施工单位,
                                    施工单位联系方式 From " + LayerName + " where  SmID=" + SmID;
                break;

            case "四通井":
                SQL = @"Select  SmID,
                                    编号,
                                    井盖形状,
                                    井盖尺寸,
                                    井盖材质,
                                    井壁结构,
                                    施工单位,
                                    施工单位联系方式 From " + LayerName + " where  SmID=" + SmID;
                break;

            default:
                SQL = @"Select  SmID,
                                    编号,
                                    井盖形状,
                                    井盖尺寸,
                                    井盖材质,
                                    井壁结构,
                                    施工单位,
                                    施工单位联系方式 From " + LayerName + " where  SmID=" + SmID;
                break;
            }

            DataTable DT;
            string    ErrInfo = "";
            bool      IsOk    = APP.SQLServer_BaseGisDB_Helper.GetDataTable(SQL, out DT, out ErrInfo);

            //执行完成返回
            if (IsOk)
            {
                Context.Response.Write(WebExport.ExportSuccess("查询成功!"));
                return;
            }
            else
            {
                Context.Response.Write(WebExport.ExportSuccess("查询失败!"));
                return;
            }
        }