Bug #520

Mixed geo/Cartesian annotations placed on wrong side of axis

Added by Paul about 3 years ago. Updated over 2 years ago.

Status:ClosedStart date:2014-02-18
Priority:NormalDue date:
Assignee:Paul% Done:

100%

Category:-
Target version:Candidate for next bugfix release
Affected version:all Platform:

Description

A basemap in which x is longitude and y is something non-geographic, say depth positive down, can be made with a purely Cartesian call:

psbasemap -R128/152/0/700 -JX5.5i/-5.5i -Ba2/a100 > good.ps

However, if we tell psbasemap that x is actually longitudes (to get proper degree symbols in the annotations), e.g.,
psbasemap -R128E/152E/0/700 -JX5.5i/-5.5i -Ba2/a100 > bad.ps

or
psbasemap -R128/152/0/700 -JX5.5id/-5.5i -Ba2/a100 > bad.ps

then the longitude annotations indeed have degree symbols but appear inside instead of outside the frame. Somehow the negative y-scale interferes with their vertical placement. This problem affects both GMT 4 and 5.

Associated revisions

Revision 13918
Added by Paul over 2 years ago

Fix issue #520 and add new test for this in test/psxy/mixed_axes.sh

History

#1 Updated by Paul over 2 years ago

  • Status changed from New to In Progress
A few more notes on this issue:
  • The reason one might want this to work is so that longitudes would be handled correctly, i.e., being treated as a periodic coordinate
  • The problem only affects the frame annotations so one could use the desired projection to plot data and then use the first Cartesian version to overlay a suitable baseman. This is a good work-around.
  • The reason the labels are on the wrong side is that somewhere it uses the fact that y-max is on the "upper" frame while y-min is on the lower, but of course this is reversed with the negative scale.

I will try to hunt for where this decision takes place...

#2 Updated by Paul over 2 years ago

  • Status changed from In Progress to Resolved
  • % Done changed from 0 to 100

Found a way to handle this: The crossing line machinery flags which side of the boundary we cross, with 0 and 2 meaning lower and upper. However, when y-scale is negative we must flip those two numbers in this mixed-type annotation case. Fixed in r10302 (GMT4) and r13918 (GMT 5). I added new test script test/psxy/mixed_axes.sh to check that all four cases work (lon with y in either direction and lat with x in either direction).

#3 Updated by Remko over 2 years ago

  • Status changed from Resolved to Closed

Closed as fixed and verified.

Also available in: Atom PDF