From practical plants, we have plants associated with Hardiness Zone .
Now we need a function/module that gets from
(lat, lon) -> Hardiness Zone
A Quick research only brought me maps about US and not much more, but it should be quite easy to calculate that with historical weather data.
First Idea: Easiest way, but maybe not the nicest solution would be to grid the world into A x A (e.g. A could be 50km) ask an open API for weather data of the specific coordinates from the last 50 years (ethically, by not asking to often) and then calculate the average minimum temperature of this point.
We found ftp://ftp.ncdc.noaa.gov/pub/data/noaa/ for historical weather data. We can use this data for non-commercial use. First we need a script for going over the data (per file should be 365/364) entries - which is per weather station. The fields are explained here: ftp://ftp.ncdc.noaa.gov/pub/data/gsod/readme.txt
1. Get the files of the last 50 years. Go over the files find the minimum temperature for each station, per year. Calculate the average minimum temperature. Keep the file general enough to change the time span, and maybe easily change it to for example average maximum temperature or average strongest winds etc.
2. Next step would be to calculate the station identifier to Geo Coordinates - we found something previously, not sure where documented: ftp://ftp.ncdc.noaa.gov/pub/data/noaa/isd-history.txt
3. Function for finding nearest weather stations for Geo coordinates.
4. take altitude into (get altitude of geocoordinates) account (my weather knowledge -1° degree per +100m)
5. write api which takes geolocation and replies minimum average temperature of that location (keep general for)
6. a plus would be a nice layered map preferably on OSM for hardiness zones (this service would be public and used to make pr for pp)