Implementation Population Distribution Filter
One of the difficulties encountered in the implementation of a simple viewer for INSPIRE Population Distribution Data was handling the amount of data returned for some requests. This has to do with the structure of the PD data specification, where the data is stratified across multiple dimensions, with a value being provided for all combinations of dimensions. Basic demography data is a good example for this problems, population counts are available both by age (1 year segments) and gender (male, female, total); thus, 300 values are provided for each spatial object, while only 1 can be displayed. This leads to massiv features (many MB, NOT stemming from the geometry), that are difficult to handle on the client side.
In order to reduce the complexity of the client, we opted to implement a simple middleware server that filters the features down to the data actually required; the PD_Filter middleware service was implemented in PHP. As a further simplification, the data returned by this filter middleware is JSON encoded.
In the base configuration the PD_Filter middleware accesses the paired WFS. Alternatively a different base URI can be provided, but this functionality is currently not enabled due to proxying concerns. The two parameters to be passed to the PD_Filter middleware are:
- featureId: gml id of the feature to be filtered. Example: AT_lfst_r_lfu3rt_age_sex_2015
- classItem: CSV list of the individual classification items. Example: http://code.datacove.eu/codeList/age/Y_GE25,http://code.datacove.eu/code...
The following request provides the data for males older than 25 from the feature AT_lfst_r_lfu3rt_age_sex_2015: