matplotlib / matplotlib/basemap
lat_0, lon_0 ignored
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 817
- Forks
- 395
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
I am trying to set up Basemap to use a Cylindrical Equal Area projection and to place the origin at a specific lat/lon (this is to match some input x/y data that uses a false easting/northing), but it seems that setting the `lat_0` and `lon_0` parameters does nothing.
``` python
from mpl_toolkits.basemap import Basemap
# Oklahoma bounds
# ('o' = origin at corner of Kingfisher/Logan/Canadian/Oklahoma counties)
lats = {'n': 37.1, 's': 33.6, 'c': 35.5, 'o': 35.726}
lons = {'e': -94.4, 'w': -103.0, 'c': -97.5, 'o': -97.674}
buf = 0.05 # plot buffer size (in degrees)
res = 'c' # map shapes resolution
# projection parameters
proj = 'cea' # cylindrical equal area
lat_ts = lats['c'] # true scale at geographic center
lon_0 = lons['o'] # x=0 at counties corner
lat_0 = lats['o'] # y=0 at counties corner
m = Basemap(projection = proj, lat_ts = lat_ts, resolution = res,
lon_0 = lon_0, lat_0 = lat_0,
urcrnrlon = lons['e'] + buf, urcrnrlat = lats['n'] + buf,
llcrnrlon = lons['w'] - buf, llcrnrlat = lats['s'] - buf*4)
```
Then checking the origin gives:
```
In [15]: m(0, 0, inverse=True)
Out[15]: (-103.05000000000305, 33.399999999963455)
```
...which is the lower-left corner of the map bounds, not the coordinates I gave for `lat_0` and `lon_0`. I get the same output if I leave out `lat_0` and `lon_0` entirely.
At first, I thought maybe the CEA projection doesn't support these parameters and that I should just shift my data manually, but the docs claim that `lat_0` and `lon_0` are used by all projections to set the origin.
As a workaround, I can set an offset to get the intended results:
``` python
offset = m(lon_0, lat_0)
df['x'], df['y'] = (df.x + offset[0], df.y + offset[1]) # where df is a Pandas dataframe with my data
```
Note: Originally posted to StackOverflow, where I was encouraged to move the issue here. http://stackoverflow.com/questions/31302427/lat-0-lon-0-ignored-by-basemap
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par la configuration de la projection Basemap et les points d’entrée de conversion des coordonnées, puis exécutez l’exemple fourni de Cylindrical Equal Area avec et sans lat_0 et lon_0. Vérifiez si m(0, 0, inverse=True) respecte l’origine fournie au lieu de renvoyer les limites inférieures gauches de la carte ; le travail est terminé lorsque le comportement correspond aux paramètres documentés ou que la limitation est clairement établie.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- data-visualization
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100