Exemplo n.º 1
0
        private static string GetFeatureIdColumn(FeatureLayer featureLayer)
        {
            string      featureIdColumn = string.Empty;
            LayerPlugin layerPlugin     = GisEditor.LayerManager.GetLayerPlugins(featureLayer.GetType()).FirstOrDefault();

            if (layerPlugin != null)
            {
                Uri uri = layerPlugin.GetUri(featureLayer);
                if (uri != null && GisEditor.LayerManager.FeatureIdColumnNames.ContainsKey(uri.ToString()))
                {
                    featureIdColumn = GisEditor.LayerManager.FeatureIdColumnNames[uri.ToString()];
                    GisEditor.LayerManager.FeatureIdColumnNames.Remove(uri.ToString());
                    GisEditor.LayerManager.FeatureIdColumnNames[featureLayer.FeatureSource.Id] = featureIdColumn;
                }
                else if (GisEditor.LayerManager.FeatureIdColumnNames.ContainsKey(featureLayer.FeatureSource.Id))
                {
                    featureIdColumn = GisEditor.LayerManager.FeatureIdColumnNames[featureLayer.FeatureSource.Id];
                }
                else if (GisEditor.LayerManager.FeatureIdColumnNames.Count == 0)
                {
                    if (string.IsNullOrEmpty(featureIdColumn) &&
                        featureLayer.FeatureSource.IsOpen)
                    {
                        var apnColumn = featureLayer.FeatureSource.GetColumns().FirstOrDefault(c => { return(c.ColumnName == "APN"); });
                        if (apnColumn != null)
                        {
                            featureIdColumn = "APN";
                        }
                    }
                }
            }

            return(featureIdColumn);
        }