matplotlib / matplotlib/basemap

llcrnrlon vs llcrnrx [-180, 180 vs 0, 360]

Abierto
#155 8 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Python
Estrellas
817
Forks
395
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

I was playing with the projections and it took me a while to understand what's going on... I need the `'rotpole'` projection to convert some locations and plot some graphs. I have all the information: `lon_0 = 10, o_lon_p = 10, o_lat_p = 10`, but I don't have the real lat/lon, I have the rotated one so I'm forced to use `llcrnrx, llcrnry...`.

I have a climate model that gives me the output in this rotated pole projection with rotated left lon = -19.5, rotated right lon = 21, rotated bottom lat = -25, rotated top lat = 20.5.

First take:

``` python
import mpl_toolkits.basemap as mb
kwargs = {
'projection': 'rotpole',
'llcrnrx': -19.5,
'llcrnry': -25,
'urcrnrx': 21,
'urcrnry': 20.5,
'o_lon_p': 10,
'o_lat_p': 32.5,
'lat_0': 10
}
m = mb.Basemap(**kwargs)
```

Now `m.drawcoastlines()` will give me a huge map that goes backwards on X axis... After a full day of investigation... I saw that `m.llcrnrx' takes the value of`360-19.5 = 340.5`and`m.urcrnrx = 21` so this clearly dosn't work...

![rotpole](https://cloud.githubusercontent.com/assets/1177508/3072050/deb6ba2c-e2c0-11e3-9bcf-221ed20debaf.png)

Is this behaviour wanted? I mean, when building `m = mb.Basemap(...)` using `llcrnrlon, llcrnrlat...` you can safely pass negative values to `llcrnrlon` but when using `llcrnrx` you're forced to use `(0, 360)`...

Working version is:

``` python
import mpl_toolkits.basemap as mb
kwargs = {
'projection': 'rotpole',
'llcrnrx': 0,
'llcrnry': -25,
'urcrnrx': 21,
'urcrnry': 40.5,
'o_lon_p': 10,
'o_lat_p': 32.5,
'lat_0': -9.5
}
m = mb.Basemap(**kwargs)
```

So now I'm forced to do:

``` python
# x, y taken from climate model
xoffset = 19.5
lon, lat = m([x + xoffset], [y], inverse=True)
```

Even more confusing is the fact that you can use negative values in convert as in `m(-1, 0, inverse=True)` and you get the correct negative real longitude value...

_Edit_: using version 1.0.7; fixed `'urcrnry'` misspell

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza reproduciendo los ejemplos proporcionados del constructor de Basemap y de conversión inversa con las coordenadas del polo rotado indicadas. Inspecciona cómo el punto de entrada de Basemap gestiona los rangos llcrnrx y urcrnrx, determina después el comportamiento esperado de las coordenadas y añade cobertura para el caso de longitud rotada negativa. La tarea estará terminada cuando el rango de coordenadas documentado y la orientación resultante del mapa sean coherentes.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
data-visualization
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.