Hello everyone, I recently opened a new pull request which adds the functionality to convert between degrees and degrees, minutes and seconds (https://github.com/numpy/numpy/pull/2869). The discussion is about whether such conversion functionality should be integrated into numpy at all or whether this belongs to scipy. I suggest to move the most common conversion functions (deg2rad, rad2deg, deg2dms, dms2deg and some more could be added) to a separate file `conversion.py` file in `numpy/lib`. I could implement this in a new pull request, if the general consensus is in favor of it? What are your thoughts? Regards, Johannes
On Tue, Jan 1, 2013 at 3:50 PM, Schönberger Johannes < hannesschoenberger@gmail.com> wrote:
Hello everyone,
I recently opened a new pull request which adds the functionality to convert between degrees and degrees, minutes and seconds (https://github.com/numpy/numpy/pull/2869).
The discussion is about whether such conversion functionality should be integrated into numpy at all or whether this belongs to scipy. I suggest to move the most common conversion functions (deg2rad, rad2deg, deg2dms, dms2deg and some more could be added) to a separate file `conversion.py` file in `numpy/lib`.
I could implement this in a new pull request, if the general consensus is in favor of it? What are your thoughts?
After checking what's in scipy.constants now (degree/arcminute/arcsecond and for example temperature and frequency conversion function), I think that that's where it belongs. A separate new numpy submodule with a bunch of these type of conversion utilities would be my second choice. I'm -1 on adding such small and fairly domain-specific functions to the main numpy namespace. Ralf
On Tue, Jan 1, 2013 at 6:50 AM, Schönberger Johannes
I recently opened a new pull request which adds the functionality to convert between degrees and degrees, minutes and seconds (https://github.com/numpy/numpy/pull/2869).
The discussion is about whether such conversion functionality should be integrated into numpy at all or whether this belongs to scipy.
handy functions, yes, but certainly not something to put in numpy -- maybe scipy, not sure the best place. I see someone (chuck? )on github suggested a "conversion.py" module -- that should be in scipy, not numpy, but I"m wary -- where would it stop? RAther, perhaps the quantaties package should be adopted. But another note: conversion to deg.min.sec with floating point is a bit less trivial than you'd think, you can end up with results like: xdegrees, 60 minutes.... if you're not careful -- it looks from a first glance that the pull request does not address this. Note: I suppose we could consider it technically OK, but it's certainly not aesthetically pleasing. Example: import numpy as np def deg2dms(x): out = [0,0,0] out[0] = np.floor(x) out[1] = np.floor((x - out[0]) * 60) out[2] = ((x - out[0]) * 60 - out[1]) * 60 return out print deg2dms(1.0) print deg2dms(1.1) print deg2dms(45.05) In [60]: run deg2dms.py [1.0, 0.0, 0.0] [1.0, 6.0, 3.1974423109204508e-13] [45.0, 2.0, 59.999999999989768] you'd really want that to be: 1degree 6 minutes, 0 seconds and 45 degrees 3 minutes, zero seconds Here's the code I used: @classmethod def ToDegMin(self, DecDegrees, ustring = False): """ Converts from decimal (binary float) degrees to: Degrees, Minutes If the optional parameter: "ustring" is True, a Unicode string is returned """ if signbit(DecDegrees): Sign = -1 DecDegrees = abs(DecDegrees) else: Sign = 1 Degrees = int(DecDegrees) DecMinutes = round((DecDegrees - Degrees + 1e-14) * 60, 10)# add a tiny bit then round to avoid binary rounding issues if ustring: if Sign == 1: return u"%i\xb0 %.3f'"%(Degrees, DecMinutes) else: return u"-%i\xb0 %.3f'"%(Degrees, DecMinutes) else: return (Sign*float(Degrees), DecMinutes) # float to preserve -0.0 perhaps ugly but it results in pretty output -- someone smart here could probably offer a cleaner solution. -Chris -- Christopher Barker, Ph.D. Oceanographer Emergency Response Division NOAA/NOS/OR&R (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception Chris.Barker@noaa.gov
participants (3)
-
Chris Barker - NOAA Federal
-
Ralf Gommers
-
Schönberger Johannes