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
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions