scale created by drawmapscale seems incorrect
See original GitHub issueIssue description
Drawing a scale in basemap using ‘drawmapscale’ results in a scale which is not correct. It seems the bar is about 1.6 times to short. So, a scale with the indication 10km above it is actually only about 6.25 km long.
The two attachments show:
- a basemap plot (code below) for a region around Belgium. Belgium is about 230 km width, when measured due east starting from the most southern point of the coastline. As can be seen, the ruler is to small, it does not go from coast till the eastern border.
- a screenshot from google earth showing the same area with a measurement, confirming that the country is indeed 230 km wide.
Code which shows the issue:
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
map = Basemap(projection='merc', lat_0 = 50, lon_0 = 4,resolution = 'h', area_thresh = 0.1,
llcrnrlon=1.75, llcrnrlat=49.0,urcrnrlon=7, urcrnrlat=52)
map.drawcoastlines()
map.drawcountries()
map.drawmapboundary(fill_color = 'lightblue')
map.fillcontinents(color = 'white',lake_color = 'lightblue')
map.drawmapscale(4.27,51.11,4.5,50.89,228, barstyle='fancy', units='km', labelstyle='simple',\
fillcolor1='w', fillcolor2='#555555', fontcolor='#555555')
plt.show(block=False)
I tried similar plottings in nautical mile, meters, etc, all with the same problem: the ruler shows the correct numbers, but is 1.6x to small. I also tried with much smaller scales (eg 10 km),other barstyle, etc and referenced them to known distances on a map, and the same issue occurs.
Technical info:
Python version: 2.7.6 matplotlib version: 1.3.1 Basemap 1.0.7 + dfsg-1 OS: linux Mint 17 Qiana (64-bit version) Installation method: all packages installed automatically during Mint installation or via Synaptic package manager using the official repository no customization


Issue Analytics
- State:
- Created 9 years ago
- Comments:15 (3 by maintainers)

Top Related StackOverflow Question
Another work around is to use the Transverse Mercator Projection http://matplotlib.org/basemap/users/tmerc.html
I the Belgium example that seems to return the expected result.
For people who want to use that function with a trick to fix this bug: it is possible to modify the labels of the scale. Here is my code to plot a correct scale of length 50 km over French Alps: