Description
We currently support some simple "object" features, which generally look for some tag or feature of the object (such as levels
or the polygon area):
- units
- levels
- area
- floor area
and more complex features, which require some calculation between objects (ie distance):
- transit_distance
In all cases these are currently configures by the features_config
:
"features_config": ["units", "levels", "area", "floor_area", "transit_distance"]
We would like to generalise the transit_distance feature to (for example) calculate:
- nearest shop
- nearest hospital
- etc
In which case we would need to give it it's own config group, eg:
"nearest_config": ["transit_stop", "leisure", "health", "education"]
This pattern would then be used for more complex features, such as:
- nearest_3_config
- nearest_neighbour_config
- 1km_count
- etc
Calculating more complex features is likely to benefit a lot from a good spatial library.
Also note that the assumption is that all objects used for complex features will be included in the activity_config
, eg:
"railway": {
"station": ["transit_stop"],
"stop": ["transit_stop"],
"tram_stop": ["transit_stop"]
},
"highway": {
"bus_stop": ["transit_stop"]
},
"public_transport": {
"station": ["transit_stop"]
}
Transit stops are currently held in memory by a list: build.ObjectHandler.transit_stops
and also in memory in a spatial index using build.ObjectHandler.points
becasue they are included in the activity_config
.
- this duplication should be removed
- ideally the complex features will get a more generalised config gtroup pattern and feature extraction pattern