Example #1
0
        public LWLCTool(DataTable dataTable, ToolParameterContainer toolParameterContainer, IFeatureClass featureClass)
        {
            _dataTable = dataTable;
            _toolParameterContainer = toolParameterContainer;
            _featureClass           = featureClass;

            _resultDataTable = new DataTable();
        }
Example #2
0
        public WLCTool(DataTable dataTable, ToolParameterContainer toolParameterContainer)
        {
            _backupDataTable = dataTable.Copy();

            _workingDataTable = _backupDataTable;

            this._toolParameterContainer = toolParameterContainer;

            _transformationStrategy = Model.NormalizationStrategy.MaximumScoreNormalizationStrategy;
        }
Example #3
0
        public Cluster(int featureId, IList <int> clusterIDs, DataTable dt, ToolParameterContainer toolParameterContainer, NormalizationStrategy transformationStrategy)
        {
            _featureId  = featureId;
            _clusterIDs = clusterIDs;
            _dataTable  = dt;
            _enumerableRowCollection = _dataTable.AsEnumerable();
            _toolParameterContainer  = toolParameterContainer;
            _transformationStrategy  = transformationStrategy;

            //the feature id is also part of the cluster!
            _clusterIDs.Add(featureId);
        }
Example #4
0
        private IList <Tuple <IToolParameter, double> > GlobalRange(ToolParameterContainer toolParameterContainer)
        {
            IList <Tuple <IToolParameter, double> > listOfRangeTuple = new List <Tuple <IToolParameter, double> >();

            foreach (var currentToolParameter in toolParameterContainer.ToolParameter)
            {
                IList <double> data = _enumerableRowCollection.Select(x => x.Field <double>(currentToolParameter.ColumnName)).ToList();

                listOfRangeTuple.Add(Tuple.Create(currentToolParameter, data.Max() - data.Min()));
            }

            return(listOfRangeTuple);
        }
Example #5
0
        private static IList <Tuple <IToolParameter, double?> > LocalWeights(ToolParameterContainer toolParameterContainer, IList <Tuple <IToolParameter, double> > localRangeList, IList <Tuple <IToolParameter, double> > globalRangeList)
        {
            IList <Tuple <IToolParameter, double?> > listOfLocalWeightTupel = new List <Tuple <IToolParameter, double?> >();

            double?divisor = 0;

            foreach (var currentToolParameter2 in toolParameterContainer.ToolParameter)
            {
                var localRange2  = localRangeList.First(x => x.Item1 == currentToolParameter2).Item2;
                var globalRange2 = globalRangeList.First(x => x.Item1 == currentToolParameter2).Item2;

                if (globalRange2 == 0)
                {
                    divisor = null;
                    break;
                }

                divisor = divisor + ((currentToolParameter2.ScaledWeight * localRange2) / globalRange2);
            }

            if (divisor == 0)
            {
                divisor = null;
            }

            foreach (var currentToolParameter in toolParameterContainer.ToolParameter)
            {
                var localRange  = localRangeList.FirstOrDefault(x => x.Item1 == currentToolParameter).Item2;
                var globalRange = globalRangeList.FirstOrDefault(x => x.Item1 == currentToolParameter).Item2;

                double?dividend;
                if (globalRange == 0)
                {
                    dividend = null;
                }
                else
                {
                    dividend = (currentToolParameter.ScaledWeight * localRange) / globalRange;
                }

                if (dividend.HasValue && divisor.HasValue)
                {
                    listOfLocalWeightTupel.Add(new Tuple <IToolParameter, double?>(currentToolParameter, dividend / divisor));
                }
                else
                {
                    listOfLocalWeightTupel.Add(new Tuple <IToolParameter, double?>(currentToolParameter, null));
                }
            }
            return(listOfLocalWeightTupel);
        }
Example #6
0
        private IList <Tuple <IToolParameter, double> > LocalRange(ToolParameterContainer toolParameterContainer)
        {
            int oidColumnIndex = GetOIDColumnIndex();

            IList <Tuple <IToolParameter, double> > listOfRangeTuple = new List <Tuple <IToolParameter, double> >();

            var rows = _enumerableRowCollection.Where(x => _clusterIDs.Contains(x.Field <FieldTypeOID>(oidColumnIndex).OID));

            foreach (var currentToolParameter in toolParameterContainer.ToolParameter)
            {
                IList <double> data = rows.Select(x => x.Field <double>(currentToolParameter.ColumnName)).ToList();

                listOfRangeTuple.Add(Tuple.Create(currentToolParameter, data.Max() - data.Min()));
            }

            return(listOfRangeTuple);
        }
Example #7
0
        private IList <Tuple <IToolParameter, double?> > Scale(ToolParameterContainer toolParameterContainer, IList <Tuple <IToolParameter, double> > localRangeList)
        {
            IList <Tuple <IToolParameter, double?> > listOfScaledTuple = new List <Tuple <IToolParameter, double?> >();

            var oidColumnIndex = GetOIDColumnIndex();
            var clusterIDsRows = _enumerableRowCollection.Where(x => _clusterIDs.Contains(x.Field <FieldTypeOID>(oidColumnIndex).OID));
            var featureIDRow   = _enumerableRowCollection.Where(x => x.Field <FieldTypeOID>(oidColumnIndex).OID == _featureId);

            foreach (var currentToolParameter in toolParameterContainer.ToolParameter)
            {
                var currentLocalRange = localRangeList.FirstOrDefault(x => x.Item1 == currentToolParameter);

                IList <double> data = clusterIDsRows.Select(x => x.Field <double>(currentToolParameter.ColumnName)).Distinct().ToList();

                var actualValue = featureIDRow.Select(x => x.Field <double>(currentToolParameter.ColumnName)).FirstOrDefault();

                var result = NormalizationStrategyFactory.GetStrategy(_transformationStrategy).Transform(data, actualValue, currentToolParameter.IsBenefitCriterion);

                listOfScaledTuple.Add(Tuple.Create(currentToolParameter, result));
            }

            return(listOfScaledTuple);
        }