New community module: PNG-WIND output format

Hi GeoServer community.

I would like to propose a new community module to introduce a new PNG-WIND output format:slight_smile:

The module will provide a compact PNG encoding of wind vector fields for use in web visualization clients to produce browser-based wind particle animations and other vector field visualizations.

It supports WIND raster layers containing either U/V components or speed and direction, converting them internally to an RGB byte-scaled representation (R=U, G=V, B=mask) suitable for transport and client-side reconstruction.

Moreover PNG tEXt metadata chunks (currently already supported by the GeoServer’s PNG writers) are included containing context details and parameters needed to re-compute the wind values.

The format it’s only supported for GetMaps against a single raster layer (no multi-layer, no layergroups, no vector layers) with exactly 2 bands (either u,v or speed/direction) with some configurable heuristics to recognize other cases where the nomenclature is not the above.

i.e. eastward_wind, u_wind_above_surface,hourly_wind_u_component and the like. (supporting a mix of exact matches and key-words containment checks).

Cheers,

Daniele

+1

What an amusing approach! Is it a standard or convention, or something you came up with?

1 Like

Hi Jody,

It’s not an existing standard, but the general approach is already used in other visualization libraries.

For example:
https://blog.mapbox.com/how-i-built-a-wind-map-with-webgl-b63022b5537f

In that case, wind vector components are encoded into image channels and used as textures for client-side rendering.

The idea for PNG-WIND emerged from internal discussions on how to transmit wind vector fields in a compact, web-friendly way. PNG was chosen because it is a widely supported binary container in web environments, and the necessary scaling information can be stored in PNG text chunks.

Future versions could potentially support additional binary formats as well

Sound great, and yes I have seen those before but had not looked into how it was accomplished.

Still you have your +1 response, thanks for setting up commuity module.