private void CreateNetworkTurnFeatureClass()
        {
            IVariantArray paramArray = new VarArrayClass();
            paramArray.Add(_dsPath);
            paramArray.Add(_turnClassName);
            paramArray.Add(2);

            TaskManager.ExecuteTool("CreateTurnFeatureClass_na", paramArray);

            paramArray.RemoveAll();
            paramArray.Add(_dsPath + "\\" + _turnClassName);
            paramArray.Add("RestrictionType");
            paramArray.Add("TEXT");
            paramArray.Add("");
            paramArray.Add("");
            paramArray.Add(30);
            paramArray.Add("");
            paramArray.Add("NULLABLE");

            TaskManager.ExecuteTool("AddField_management", paramArray);
        }
        private void CreateNetworkTurnFeatureClass()
        {
            IVariantArray paramArray = new VarArrayClass();

            paramArray.Add(_dsPath);
            paramArray.Add(_turnClassName);
            paramArray.Add(2);

            TaskManager.ExecuteTool("CreateTurnFeatureClass_na", paramArray);

            paramArray.RemoveAll();
            paramArray.Add(_dsPath + "\\" + _turnClassName);
            paramArray.Add("RestrictionType");
            paramArray.Add("TEXT");
            paramArray.Add("");
            paramArray.Add("");
            paramArray.Add(50);
            paramArray.Add("");
            paramArray.Add("NULLABLE");

            TaskManager.ExecuteTool("AddField_management", paramArray);
        }
        // 执行可见范围分析模型
        private void VisbilityModel(IFeatureLayer viewer, IFeatureLayer action, IFeatureLayer building)
        {
            Geoprocessor gp = new Geoprocessor()
            {
                OverwriteOutput = true
            };

            gp.AddToolbox(DEBUG_DIR + "toolbox.tbx");

            IVariantArray parameters = new VarArrayClass();

            parameters.RemoveAll();
            //parameters.Add(DEBUG_DIR + "Action.shp");
            //parameters.Add(DEBUG_DIR + "Building.shp");
            //parameters.Add(DEBUG_DIR + "Viewer.shp");
            parameters.Add(action);
            parameters.Add(building);
            parameters.Add(viewer);
            parameters.Add(DEBUG_DIR + "VisitArea_FID_%值%.shp");

            gp.Execute("myModel", parameters, null);
        }
        private static void ArcPad_CheckOut(string[] features, string axf, string schemaOnly = "#", string password = "******", string encrypt = "#")
        {
            if (_useArcObjects)
            {
                if (_useManaged)
                {
                    const String  tool       = "ArcPadCheckout_ArcPad";
                    IVariantArray parameters = new VarArrayClass();

                    parameters.Add(string.Join(";", features));
                    parameters.Add(schemaOnly);
                    parameters.Add(password);
                    parameters.Add(encrypt);
                    parameters.Add(axf);

                    if (File.Exists(axf))
                    {
                        File.Delete(axf);
                    }

                    try
                    {
                        _msg.Items.Add("Executing GP using Geoprocessor (Managed) class in ArcObjects");
                        //_gpManaged.AddToolbox(MiscClass.ArcPadTbxPath);
                        //_msg.Items.Add("Adding Toolbox ..\\" + MiscClass.SimplifyPath(MiscClass.ArcPadTbxPath, 4));
                        _msg.Refresh();

                        var pResult = (IGeoProcessorResult2)_gpManaged.Execute(tool, parameters, null);
                        Messages(pResult);
                    }
                    catch (Exception ex) { Messages(ex, ref _gpManaged); }
                    finally
                    {
                        _gpManaged.ClearMessages();
                        //_gpManaged.RemoveToolbox(MiscClass.ArcPadTbxPath);
                    }

                    parameters.RemoveAll();
                }
                else
                {
                    const String  tool       = "ArcPadCheckout_ArcPad";
                    IVariantArray parameters = new VarArrayClass();

                    parameters.Add(string.Join(";", features));
                    parameters.Add(schemaOnly);
                    parameters.Add(password);
                    parameters.Add(encrypt);
                    parameters.Add(axf);

                    if (File.Exists(axf))
                    {
                        File.Delete(axf);
                    }

                    try
                    {
                        _msg.Items.Add("Executing GP using IGeoProcessor (Un-Managed) class in ArcObjects");
                        //_gpUnManaged.AddToolbox(MiscClass.ArcPadTbxPath);
                        //_msg.Items.Add("Adding Toolbox ..\\" + MiscClass.SimplifyPath(MiscClass.ArcPadTbxPath, 4));
                        _msg.Refresh();

                        var pResult = (IGeoProcessorResult2)_gpUnManaged.Execute(tool, parameters, null);
                        Messages(pResult);
                    }
                    catch (Exception ex) { Messages(ex, ref _gpUnManaged); }
                    finally
                    {
                        _gpUnManaged.ClearMessages();
                        //_gpUnManaged.RemoveToolbox(MiscClass.ArcPadTbxPath);
                    }

                    parameters.RemoveAll();
                }
            }
            else
            {
                string pyPath = MiscClass.CreateCheckoutScript(features, axf, schemaOnly, password, encrypt, _useArcpy);

                if (File.Exists(axf))
                {
                    File.Delete(axf);
                }

                _msg.Items.Add("Executing GP using " + ((_useArcpy) ? "arcpy" : "arcgisscripting") + " class in Python");
                _msg.Refresh();

                string command = string.Format("\"{0}\"", pyPath);
                string message = MiscClass.ExecuteCommand(command);

                if (message == string.Empty)
                {
                    _msg.Items.Add("Unhandled exception during execution. Most likely python exe crashed.");
                }
                Messages(message, new[] { '\r', '\n' });
            }
        }
Beispiel #5
0
        private void btn_visit_Click(object sender, EventArgs e)
        {
            //FormProgressBar bar = new FormProgressBar(13);
            //bar.Show();

            //IFeatureLayer pFeatureLayer_Building = GetFeatureLayerByName("Building");
            //IFeatureLayer pFeatureLayer_Action = GetFeatureLayerByName("Action");
            //IFeatureLayer pFeatureLayer_Viewer = GetFeatureLayerByName("Viewer");
            //bar.GO();

            //Geoprocessor gp = new Geoprocessor() {
            //    OverwriteOutput = true,
            //    AddOutputsToMap = true
            //};
            //bar.GO();

            //// 联合
            //ESRI.ArcGIS.AnalysisTools.Union pUnion = new ESRI.ArcGIS.AnalysisTools.Union() {
            //    in_features = DEBUG_DIR + "Action.shp" + ";" + DEBUG_DIR + "Building.shp",
            //    out_feature_class = DEBUG_DIR + "BuildingAndAction.shp"
            //};
            //gp.Execute(pUnion, null);
            //bar.GO();

            //// 面转栅格
            //ESRI.ArcGIS.ConversionTools.PolygonToRaster pPolygonToRaster = new ESRI.ArcGIS.ConversionTools.PolygonToRaster() {
            //    in_features = DEBUG_DIR + "BuildingAndAction.shp",
            //    out_rasterdataset = DEBUG_DIR + "RsBuildingAndAction.tif",
            //    value_field = "height",
            //    cellsize = 0.000001
            //};
            //gp.Execute(pPolygonToRaster, null);
            //bar.GO();

            //// 观测点要素迭代
            //IFeatureCursor pFeatureCursor = pFeatureLayer_Viewer.FeatureClass.Search(null, false);
            //IFeature pFeature = pFeatureCursor.NextFeature();
            //int i = 0;
            //while (pFeature != null)
            //{
            //    m_pMapC2.Map.ClearSelection();
            //    m_pMapC2.Refresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
            //    m_pMapC2.Map.SelectFeature(pFeatureLayer_Viewer, pFeature);
            //    m_pMapC2.Refresh(esriViewDrawPhase.esriViewGeoSelection, null, null);

            //    // 视域分析
            //    ESRI.ArcGIS.SpatialAnalystTools.Viewshed pViewshed = new ESRI.ArcGIS.SpatialAnalystTools.Viewshed() {
            //        in_observer_features = pFeatureLayer_Viewer,
            //        in_raster = DEBUG_DIR + "RsBuildingAndAction.tif",
            //        out_raster = DEBUG_DIR + "RsVisibility_" + (i).ToString() + ".tif"
            //    };
            //    gp.Execute(pViewshed, null);
            //    bar.GO();

            //    // 掩模
            //    ESRI.ArcGIS.SpatialAnalystTools.ExtractByMask pExtractByMask = new ESRI.ArcGIS.SpatialAnalystTools.ExtractByMask() {
            //        in_raster = DEBUG_DIR + "RsVisibility_" + (i).ToString() + ".tif",
            //        in_mask_data = pFeatureLayer_Action,
            //        out_raster = DEBUG_DIR + "RsVisAction_" + (i).ToString() + ".tif"
            //    };
            //    gp.Execute(pExtractByMask, null);
            //    bar.GO();

            //    // 栅格转面
            //    ESRI.ArcGIS.ConversionTools.RasterToPolygon pRasterToPolygon = new ESRI.ArcGIS.ConversionTools.RasterToPolygon() {
            //        in_raster = DEBUG_DIR + "RsVisAction_" + (i).ToString() + ".tif",
            //        raster_field = "Value",
            //        out_polygon_features = DEBUG_DIR + "VisAction_" + (i).ToString() + ".shp"
            //    };
            //    gp.Execute(pRasterToPolygon, null);
            //    m_pMapC2.AddShapeFile(DEBUG_DIR, "VisAction_" + (i).ToString() + ".shp");
            //    IFeatureLayer pFeatureLayer_vis = GetFeatureLayerByName("visaction_" + (i).ToString());
            //    IFeatureCursor pFeatureCursor_vis = pFeatureLayer_vis.FeatureClass.Search(null, false);
            //    IFeature pFeat = pFeatureCursor_vis.NextFeature();
            //    while (pFeat != null)
            //    {
            //        if (pFeat.get_Value(3).ToString() == "1")
            //        {
            //            IArea pArea = pFeat.Shape as IArea;
            //            MessageBox.Show(pArea.Area.ToString());
            //        }
            //        pFeat = pFeatureCursor_vis.NextFeature();
            //    }
            //    bar.GO();

            //    pFeature = pFeatureCursor.NextFeature();
            //    i += 1;
            //}


            //bar.OK();

            //m_pMapC2.Map.DeleteLayer(GetFeatureLayerByName("Viewer"));
            //m_pMapC2.Refresh();

            Geoprocessor gp = new Geoprocessor()
            {
                OverwriteOutput = true,
                //TemporaryMapLayers = false

                //AddOutputsToMap = true
            };

            gp.AddToolbox(DEBUG_DIR + "toolbox.tbx");

            IVariantArray parameters = new VarArrayClass();

            parameters.RemoveAll();
            parameters.Add(DEBUG_DIR + "Action.shp");
            parameters.Add(DEBUG_DIR + "Building.shp");
            parameters.Add(GetFeatureLayerByName("Viewer"));
            //parameters.Add(DEBUG_DIR + "Viewer.shp");
            parameters.Add(DEBUG_DIR + "VisitArea_%Value%.shp");

            gp.Execute("myMod", parameters, null);
            //axTOCControl_main.EnableLayerDragDrop = true;
            //m_pMapC2.AddShapeFile(DEBUG_DIR, "VisitArea_0.shp");
            //m_pMapC2.AddShapeFile(DEBUG_DIR, "VisitArea_1.shp");
            //m_pMapC2.AddShapeFile(DEBUG_DIR, "VisitArea_2.shp");

            ////IArea pArea = GetFeatureLayerByName("Building").FeatureClass.Search(null, false).NextFeature().Shape as IArea;
            //////IArea pArea = GetFeatureLayerByName("VisitArea_0") as IArea;
            ////MessageBox.Show(pArea.Area.ToString());
        }