logo-header

 
 

Introduction

The discrete allocation is used to allocate land use types to grid cells. Click here for more information on discrete land use allocation.

Example

container allocation
{
unit<fpoint> TestCoords: Range = "[{300000, 0}, {625000, 280000})";

unit<spoint> DomainGrid :=
range(
gridset(
TestCoords
,point(  -500f, 500f, TestCoords)
,point(625000f, 10000f, TestCoords)
  , SPoint
)
, point(0s, 0s)
, point(6s, 6s)
)
, DialogType = "Map";

container source
{
unit<int32> EurM2: Range = "[0, 20)";

unit <uint8> lu_type: nrofrows = 3
{
attribute<string>  Name:           ['Living', 'Working', 'Nature'];
attribute<string>  PartioningName: ['Living', 'Working', 'Nature'];
attribute<lu_type> partioning := id(lu_type);
}
attribute<lu_type> landuse (DomainGrid):
[
2, 2, 2, 1, null, null,
2, 2, 0, 0, null, 1,
2, 0, 0, 1,    1, 1,
2, 0, 0, 0,    1, 1,
2, 0, 0, 1, null, 1,
2, 2, 2, 2,    2, 2
];
container Suitability
{
attribute<EurM2> Living (DomainGrid):
[
1,  2,  5, 4,  3, -1,
2,  5,  8, 9,  7, 3,
4, 10, 12,13, 12, 6,
5, 11, 13,14, 12, 6,
4,  9,  9, 5,  3, 2,
2,  2,  4, 3,  1, 1
];
attribute<EurM2> Working (DomainGrid):
[
1, 1, 2, 3,  4, -6,
2, 3, 4, 6,  8, 9,
2, 4, 9,11, 12, 10,
1, 3, 5, 9, 10, 6,
2, 4, 5, 5,  3, 2,
1, 1, 2, 1,  1, 1
];
attribute<EurM2> Nature (DomainGrid):
[
3, 3, 3, 2, 2, -2,
3, 3, 2, 2, 2, 2,
3, 2, 1, 1, 1, 1,
3, 2, 1, 1 ,1, 2,
3, 3, 2, 1, 2, 2,
3, 3, 3, 3, 3, 3
];
}
container regMaps
{
unit<uint8> p1: nrofrows = 1;
unit<uint8> p2: nrofrows = 2;

attribute<p1> p1Map (DomainGrid) := const(0, DomainGrid, p1);
attribute<p2> p2Map (DomainGrid) := pointRow(id(DomainGrid)) < 4s
? 0[p2]
: 1[p2];
}
container claim_sources
{
unit<float32> Meter := BaseUnit('m', float32);
unit<float32> Ha := 10000.0 * Meter * Meter;

container p1
{
attribute<Ha> Nature_min (regMaps/p1): [12];
attribute<Ha> Nature_max (regMaps/p1): [20];
attribute<Ha> Living_min (regMaps/p1): [5];
attribute<Ha> Living_max (regMaps/p1): [9];
}
container p2
{
attribute<Ha> Working_min (regMaps/p2): [6,2];
attribute<Ha> Working_max (regMaps/p2): [10,4];
}
}
parameter<float32> nrHaPerCel := 1[claim_sources/Ha];
container claims_min
{
attribute<uint32> Living (regMaps/p1) :=
uint32(claim_sources/p1/Living_min  / nrHaPerCel);
attribute<uint32> Working(regMaps/p2) :=
uint32(claim_sources/p2/Working_min / nrHaPerCel);
attribute<uint32> Nature (regMaps/p1) :=
uint32(claim_sources/p1/Nature_min  / nrHaPerCel);
}
container claims_max
{
attribute<uint32> Living (regMaps/p1) :=
uint32(claim_sources/p1/Living_max  / nrHaPerCel);
attribute<uint32> Working(regMaps/p2) :=
uint32(claim_sources/p2/Working_max / nrHaPerCel);
attribute<uint32> Nature (regMaps/p1) :=
uint32(claim_sources/p1/Nature_max  / nrHaPerCel);
}
container regionSets
{
attribute<regMaps/p1> Nature (DomainGrid) := regMaps/p1Map;
attribute<regMaps/p1> Living (DomainGrid) := regMaps/p1Map;
attribute<regMaps/p2> Working(DomainGrid) := regMaps/p2Map;
}
unit<uint16> AtomicRegions :=
overlay(lu_type/PartioningName, DomainGrid, regionSets);

attribute<Bool> InRegio (DomainGrid):
[
True, True, True, True, False, True,
True, True, True, True, False, True,
True, True, True, True, True, True,
True, True, True, True, True, True,
True, True, True, True, False, True,
True, True, True, True, True, True
];
attribute<Bool> FreeLand (DomainGrid): expr = "InRegio";

container Compacted
{
unit <uint32> ADomain := Subset(FreeLand = True),
label = "allocation domain";
 
attribute<ADomain> BaseGrid (DomainGrid):=
invert(ADomain/nr_OrgEntity);

container SuitabilityMaps
{
attribute<EurM2> Living  (ADomain) :=
source/Suitability/Living[ADomain/nr_orgEntity];
attribute<EurM2> Working (ADomain) :=
source/Suitability/Working[ADomain/nr_orgEntity];
attribute<EurM2> Nature  (ADomain) :=
source/Suitability/Nature[ADomain/nr_orgEntity];
}
attribute<AtomicRegions> AtomicRegionMap (ADomain) :=
AtomicRegions/UnionData[ADomain/nr_orgEntity];
}
parameter<EurM2> treshold := 0[EurM2];
container FeasibleSolution;
}
container allocate_discrete :=
discrete_alloc(
source/lu_type/name
,source/Compacted/ADomain
,source/Compacted/SuitabilityMaps
,source/lu_type/partioning
,source/lu_type/PartioningName
,source/AtomicRegions
,source/Compacted/AtomicRegionMap
,source/claims_min
,source/claims_max
,source/treshold
,source/FeasibleSolution
)
{
attribute<Source/lu_type> alloc (DomainGrid):
:= landuse[Source/Compacted/BaseGrid];
}
}
 
alloc
   2 2 2 1 null null
2 2 0 0 null 1
2 0 0 1 1 1
2 0 0 0 1 1
2 0 0 1 null 1
2 2 2 2 2 2
DomainGrid, nr of rows = 6, nr of cols = 6

OBJECT VISION BV
Vrije Universiteit
De Boelelaan 1085
1081 HV Amsterdam
The Netherlands

tel: +31 (0)20 598 9083
fax:+31 (0)20 598 9904