【ArcGIS Pro C#】获取要素图层名称集合、字段名称集合

 

 

        /// <summary>
        /// 向Combobox加载要素图层名集合。
        /// </summary>
        public ICommand LoadFeatureLayerNamesCommand { get; set; }
        private void LoadFeatureLayerNames()
        {
            featureLayerNames.Clear();
            var layers = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>();
            foreach (var layer in layers)
            {
                var layerName = layer.Name;
                featureLayerNames.Add(layerName);
            }
            OnPropertyChanged(nameof(FeatureLayerNames));
        }

 

        /// <summary>
        /// 向Combobox加载选中图层的文本型字段名集合。
        /// </summary>
        public ICommand LoadFieldNamesCommand { get; set; }
        private async void LoadFieldNames()
        {
            fieldNames.Clear();
            //IReadOnlyList<ArcGIS.Core.Data.Field> fields = null;
            IReadOnlyList<FieldDescription> fields = 
            await QueuedTask.Run(() =>
            {
                var layers = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>();
                if (selectedFeatureLayerIndex != -1)
                {
                    FeatureLayer featureLayer = layers.ToList()[selectedFeatureLayerIndex];
                    return featureLayer.GetFieldDescriptions().Where(f => f.Type == FieldType.String).ToList();
                    //var table = featureLayer.GetTable();
                    //fields = table.GetDefinition().GetFields().Where(f=>f.FieldType==FieldType.String).ToList();
                }
                else
                    return null;
            });
            if (fields != null)
            {
                foreach (var field in fields)
                {
                    var fieldName = field.Name;
                    fieldNames.Add(fieldName);
                }
                OnPropertyChanged(nameof(FieldNames));
            }
        }

 

posted @ 2025-08-02 16:53  yzhyingcool  阅读(18)  评论(0)    收藏  举报