// Called after returning from the update parameters routine.
        // You can examine the messages created from internal validation and change them if desired.
        public void UpdateMessages(IArray paramvalues, IGPEnvironmentManager pEnvMgr, IGPMessages Messages)
        {
            // Check for error messages
            IGPMessage msg = (IGPMessage)Messages;

            if (msg.IsError())
            {
                return;
            }

            // Get the first Input Parameter
            IGPParameter parameter = (IGPParameter)paramvalues.get_Element(0);

            // UnPackGPValue. This ensures you get the value either form the dataelement or GpVariable (ModelBuilder)
            IGPValue parameterValue = m_GPUtilities.UnpackGPValue(parameter);

            // Open the Input Dataset - Use DecodeFeatureLayer as the input might be a layer file or a feature layer from ArcMap.
            IFeatureClass inputFeatureClass;
            IQueryFilter  qf;

            m_GPUtilities.DecodeFeatureLayer(parameterValue, out inputFeatureClass, out qf);

            IGPParameter3 fieldParameter = (IGPParameter3)paramvalues.get_Element(1);
            string        fieldName      = fieldParameter.Value.GetAsText();

            // Check if the field already exists and provide a warning.
            int indexA = inputFeatureClass.FindField(fieldName);

            if (indexA > 0)
            {
                Messages.ReplaceWarning(1, "Field already exists. It will be overwritten.");
            }

            return;
        }
コード例 #2
0
        public void UpdateMessages(ESRI.ArcGIS.esriSystem.IArray paramvalues, ESRI.ArcGIS.Geoprocessing.IGPEnvironmentManager pEnvMgr, ESRI.ArcGIS.Geodatabase.IGPMessages Messages)
        {
            IGPUtilities3 gpUtilities3 = new GPUtilitiesClass();

            for (int i = 0; i < Messages.Count; i++)
            {
                IGPMessage blah = Messages.GetMessage(i);
                if (blah.IsError())
                {
                    IGPMessage something = new GPMessageClass();
                    something.Description = String.Empty;
                    something.Type        = esriGPMessageType.esriGPMessageTypeInformative;
                    something.ErrorCode   = 0;
                    Messages.Replace(i, something);
                }
            }

            IGPParameter inputOSMParameter = paramvalues.get_Element(in_osmFeatureClassNumber) as IGPParameter;
            IGPValue     inputOSMGPValue   = gpUtilities3.UnpackGPValue(inputOSMParameter);

            if (inputOSMGPValue.IsEmpty() == false)
            {
                IFeatureClass osmFeatureClass = null;
                ITable        osmInputTable   = null;
                IQueryFilter  osmQueryFilter  = null;

                try
                {
                    gpUtilities3.DecodeFeatureLayer(inputOSMGPValue, out osmFeatureClass, out osmQueryFilter);
                    osmInputTable = osmFeatureClass as ITable;
                }
                catch { }

                try
                {
                    if (osmInputTable == null)
                    {
                        gpUtilities3.DecodeTableView(inputOSMGPValue, out osmInputTable, out osmQueryFilter);
                    }
                }
                catch { }

                if (osmInputTable == null)
                {
                    return;
                }

                // find the field that holds tag binary/xml field
                int osmTagCollectionFieldIndex = osmInputTable.FindField("osmTags");

                if (osmTagCollectionFieldIndex == -1)
                {
                    Messages.ReplaceAbort(in_osmFeatureClassNumber, resourceManager.GetString("GPTools_OSMGPCombineAttributes_inputlayer_missingtagfield"));
                    return;
                }
            }
        }
コード例 #3
0
        public IGPMessages Validate(IArray paramValues,
                                    bool updateValues,
                                    IGPEnvironmentManager envMgr)
        {
            if (m_util == null)               // delay constructor activities.... they segfault arcmap
            {
                m_util        = new GPUtilitiesClass();
                m_outp_schema = new AoTable(
                    AoField.Integer("left_fid"),
                    AoField.Integer("right_fid")
                    );
            }
            IGPMessages ms = m_util.InternalValidate(ParameterInfo,
                                                     paramValues,
                                                     updateValues,
                                                     true,
                                                     envMgr);
            bool passed = AoGPParameter.ValidateAll(m_parms, paramValues, ms);

            IGPMessage m = (IGPMessage)ms;

            if (!passed || m.IsError())
            {
                ms.AddError(2, "An error here.");
                return(ms);
            }

            // TODO: Set up the output schema.
            IGPParameter    outparam = paramValues.get_Element(3) as IGPParameter;
            IGPFeatureLayer fl       = outparam.Value as IGPFeatureLayer;

            if (fl == null)
            {
                fl = new GPFeatureLayerClass();
            }

            fl.DEFeatureClass = new DEFeatureClassClass();
            (fl.DEFeatureClass as IDETable).Fields = m_outp_schema.Fields;

            // Set up its catalog path / name..
            //			IDataElement de = (fc as IDataElement;
            //			if ( (old_val == null || old_val.DEFeatureClass == null) && src_path != null && src_path.DEFeatureClass != null) {
            //				//src_path = m_util.UnpackGPValue(src_path) as IGPFeatureLayer;
            //				IDataElement srcde = src_path.DEFeatureClass as IDataElement; // lazy cut-n-paste shortcut
            //				de.CatalogPath = srcde.GetPath() + "\\" + srcde.GetBaseName() + "_bndgen." + srcde.GetExtension();// old_val.CatalogPath;
            //				de.Children = srcde.Children;
            //				de.ChildrenExpanded = srcde.ChildrenExpanded;
            //				de.MetadataRetrieved = srcde.MetadataRetrieved;
            //				//de.Name = old_val.Name + "bndgen";
            //				de.Type = srcde.Type;
            //			}
            m_util.PackGPValue(fl as IGPValue,
                               outparam);
            return(ms);
        }