コード例 #1
0
        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' });
            }
        }