Jeff,

I sent that last message a little too quickly. Now I see that pyproj 
really is trying to ensure a copy--that is what the comments and 
docstring say--so I will simply try to find and fix the bug, the 
particular case in which a copy is not being made.

Eric

Eric Firing wrote:
> Jeff,
> 
> I ran into a major bug that I think results from a fairly deep-seated 
> gotcha in basemap.  The problem lies with the in-place transformation of 
> lon,lat in the proj library.  This is not an inherent problem in itself; 
> the trouble comes because sometimes the data get copied along the way 
> from the basemap interface into proj, and sometimes they don't.  When 
> they don't get copied, rotate_vector breaks, because the input lon,lat 
> variables are transformed in place, and then they are no longer lon and 
> lat when they need to be reused as such.
> 
> This could be fixed with a copy in rotate_vector, but I recommend that 
> instead it be fixed by guaranteeing that there is a copy at a much lower 
> level, probably in the pyproj Proj.__call__ method, and if not there, 
> then in the basemap.__call__ method.  I am not sure what all the effects 
> might be, though--is anything relying on in-place calculation at that level?
> 
> The reason for recommending the low-level copy is that if 
> basemap.__call__ continues to behave as it does, sometimes obliterating 
> its input arguments via the in-place operation and sometimes not, it 
> will continue to cause horrible surprises.  I think that the overhead of 
> a single copy would be a small price to pay to eliminate such surprises.
> 
> If there is a need to preserve the in-place option, then perhaps it 
> could be accessed through a different interface.  Let __call__ guarantee 
> that its input arguments are preserved, and have a "transform" method 
> that minimizes copying.
> 
> Eric
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
> Don't miss this year's exciting event. There's still time to save $100. 
> Use priority code J8TL2D2. 
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
> _______________________________________________
> Matplotlib-devel mailing list
> Matplotlib-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to