We're trying to run a one time query using GeoNames' data to get TimeZones by PostalCode and I'm running into a lot of problems. First it was the performance but we've put some things together to speed it up, but now I'm getting results that appear to be inconsistent with what GeoNames' webservice returns. For Example, using my calculations:
postal code place name admin code1 latitude longitude timezone latdist longdist dist PRIORITY
44017 Berea OH 41.3676 -81.8618 America/Detroit 0.00033 0.00167 0.00228 1
44017 Berea OH 41.3676 -81.8618 America/New_York 0.00049 0.00449 0.00498 2
Using purely distance Berea would be in the "America/Detroit" timezone reference point, however GeoNames' webservice returns it in the America/New_York timezone reference, and it's not the only one, there are dozens or more of others. How does GeoNames map and use this data? What am I doing wrong?
The webservice is not using the timezone data in the downloadable files, at the other way round the timezone info in the files is computed with the same functions that are behind the webservice. You will certainly not the exactly the same result. In most cases it will be ok, where the boundary is between two points there you will have differences.