Python 基线映射忽略了纬度0和经度0

Python 基线映射忽略了纬度0和经度0,python,matplotlib,matplotlib-basemap,Python,Matplotlib,Matplotlib Basemap,我试图设置Basemap以使用圆柱形等面积投影,并将原点放置在特定的纬度/经度(这是为了匹配一些输入的x/y数据),但设置lat\u 0和lon\u 0参数似乎没有任何作用 from mpl_toolkits.basemap import Basemap # Oklahoma bounds # ('o' = origin at corner of Kingfisher/Logan/Canadian/Oklahoma counties) lats = {'n': 37.1, 's': 33

我试图设置Basemap以使用圆柱形等面积投影,并将原点放置在特定的纬度/经度(这是为了匹配一些输入的x/y数据),但设置
lat\u 0
lon\u 0
参数似乎没有任何作用

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)
然后,检查原点可得出:

In [15]: m(0, 0, inverse=True)
Out[15]: (-103.05000000000305, 33.399999999963455)
…这是地图边界的左下角,不是我为
lat_0
lon_0
给出的坐标。如果完全忽略lat_0和lon_0,则得到相同的输出

起初,我认为CEA投影可能不支持这些参数,我应该手动移动数据,但是

作为一种解决方法,我可以设置偏移以获得预期结果:

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
我现在已经在BasemapGithub存储库中提交了这个问题。

我也注意到了这一点。特别要注意的是,文档中说的是
lat\u 0:中心纬度(y轴原点)
和类似的
lon\u 0
。在我看来,这是一个真正的错误。你可能想考虑把这个移到。我想确保我在忽略一个bug之前不会忽略某些东西。如果没有人要补充什么,我就开罚单。我也注意到了这一点。特别要注意的是,文档中说的是
lat\u 0:中心纬度(y轴原点)
和类似的
lon\u 0
。在我看来,这是一个真正的错误。你可能想考虑把这个移到。我想确保我在忽略一个bug之前不会忽略某些东西。如果没有人要补充什么,我就开罚单。