public LWLCTool(DataTable dataTable, ToolParameterContainer toolParameterContainer, IFeatureClass featureClass) { _dataTable = dataTable; _toolParameterContainer = toolParameterContainer; _featureClass = featureClass; _resultDataTable = new DataTable(); }
public WLCTool(DataTable dataTable, ToolParameterContainer toolParameterContainer) { _backupDataTable = dataTable.Copy(); _workingDataTable = _backupDataTable; this._toolParameterContainer = toolParameterContainer; _transformationStrategy = Model.NormalizationStrategy.MaximumScoreNormalizationStrategy; }
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); }
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); }
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); }
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); }
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); }