Skip to content

extendable land unit area concept.Β #56

@leitchy

Description

@leitchy

Is your feature request related to a problem? Please describe.
Currently the system calculates the Land UNit area using a method on the provider (area)

inline double ProviderSpatialRasterTiled::area(const CellIdx& cell) const {
   auto lat = _indexer->getLatFromIndex(cell);
   auto x = _indexer->cellDesc.latSize * DiameterOfEarthInMetersPerDeg;
   return x * x * cos(lat * DegToRadMultiplier) * 0.0001;
}

This can be overridden by having a variable called landUnitArea.

_landUnitController.initialiseData(true);
_spatiallocationinfo->_landUnitArea = _provider->area(cell);
_landUnitController.getVariable("landUnitArea")->set_value(_spatiallocationinfo->_landUnitArea);

This is clumsy and obscure.

Describe the solution you'd like

This should be definable in the system settings, in a similar fashion to Localdomain - simulateLandUnit. But perhaps in the Landscape object. Allowing the user to dwefine a variable that is the Area to use.

This way the variable can be used as a transform for eaxample. Either doing a SQL query or spatial layer lookup. Or just a differnt method to calculate the area.

Perhaps like: landUnitAreaVariable below:

{
	"LocalDomain": {
		"type": "spatial_tiled",
		"start_date": "2000/01/01",
		"end_date": "2020/12/31",
		"sequencer_library": "internal.flint",
		"sequencer": "CalendarAndEventFlintDataSequencer",
		"simulateLandUnit": "simulateLandUnit",
		"landUnitBuildSuccess": "landUnitBuildSuccess",
		"landUnitAreaVariable": "spatial_layer_area",
               ...

Metadata

Metadata

Labels

BugSomething isn't working.DocAdding or updating documentation.EnhancementNew feature request or improvement or optimization.P1Needs immediate attention.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions