extendable land unit area concept.
leitchy opened this issue ยท 7 comments
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",
...
Can i work on this issue ?
Of course. That would be great.
You can join our Slack to connect with other developers.
I am an Outreachy applicant .I found this issue interesting and I discussed with @kartikeysaran who is working on it. Can You assign this issue I would like to contribute to it
@leitchy @gmajan