Python 3.x Basemap映射EPSG的语法无效

Python 3.x Basemap映射EPSG的语法无效,python-3.x,matplotlib-basemap,Python 3.x,Matplotlib Basemap,我对底图背景图有疑问,因为我的代码在某些情况下有效,而在其他情况下无效。 我有一个要绘制的区域,所以我应用以下代码 import os import csv import numpy as np from obspy import read from mpl_toolkits.basemap import Basemap from matplotlib import pyplot as plt m = Basemap(projection='mill', llcrnrlon=-66.68, l

我对底图背景图有疑问,因为我的代码在某些情况下有效,而在其他情况下无效。 我有一个要绘制的区域,所以我应用以下代码

import os
import csv
import numpy as np
from obspy import read
from mpl_toolkits.basemap import Basemap
from matplotlib import pyplot as plt

m = Basemap(projection='mill', llcrnrlon=-66.68, llcrnrlat=-29.13, urcrnrlon=-62.69, urcrnrlat=-20.97, resolution='l',epsg= 4326)
m.arcgisimage(service="ESRI_Imagery_World_2D", xpixels = 6000, verbose= False) 
m.drawcoastlines()
m.drawcountries(color='yellow',linewidth=2.7)
m.drawmeridians(np.arange(0, 360, 2.5), labels=[True,False,False,True])
m.drawparallels(np.arange(-90, 90, 2.5),labels=[False,True,True,False])
plt.show()
代码“epsg”与基于WGS84的cordinate系统有关,用于绘制地图(GIS环境)。在我的例子中,我应用了代码epsg 4326,这意味着所有WSG84 world data()。据我所知,我能画出世界上几乎所有的地区

llcrnrlon=-66.68, llcrnrlat=-29.13, urcrnrlon=-62.69, urcrnrlat=-20.97
最后一个变量是该地区的坐标系(在本例中为北阿根廷)

当我运行代码时,它不工作,我得到了错误:

    m = Basemap(projection='mill', llcrnrlon=-66.68, llcrnrlat=-29.13, urcrnrlon=-62.69, urcrnrlat=-20.97, resolution='l',epsg= 4326)
    ^
SyntaxError: invalid syntax
但是如果我把变量坐标改为

llcrnrlon=-70.21840 ,llcrnrlat=-17.74899, urcrnrlon=-66.90053, urcrnrlat=-12.5548773
我有我附上的精彩图片。


我没有看到代码上的错误(当我试图绘制阿根廷北部地区时)。

@Jason为了解决这个问题,我重新编写了代码,并使用了空闲的(Ubuntu下)代码。出于某种奇怪的原因,简单的文本编辑器(Ubuntu下)遗漏了空格,然后我报告了错误

SyntaxError:无效语法

我将向您展示我正在使用的所有代码(传播信息的快速公告)、地图(带有背景图像)和地震台站的一些波形

import os
import csv
import numpy as np
from obspy import read
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt


# ---- Title Box-----
def add_titlebox(ax, text):
    ax.text(.77,.82,text,
        horizontalalignment='center',
        transform=ax.transAxes,
        bbox=dict(facecolor='white', alpha=0.6),
        fontsize=6.8)
    return ax
#-----------------------------------


arge='/home/tonino/Documents/Inv/ShE/191224_Arg/2019-12-24-1644-12S*'
#os.chdir(r'F:\Grant_Nu\191224_Arg')

# -- Image set up --
gridsize=(3, 2)
fig=plt.figure(figsize=(12,10))
ax1 = plt.subplot2grid(gridsize, (0, 0), colspan=2, rowspan=2)
ax2 = plt.subplot2grid(gridsize, (2, 0))
ax3 = plt.subplot2grid(gridsize, (2, 1))

# -- data to plot --
data=read(arge)
LPAZ_Z=data.select(station='LPAZ')[0]
AOES_Z=data.select(station='AOES')[0]

t_lpaz_z= np.arange(0, LPAZ_Z.stats.npts / LPAZ_Z.stats.sampling_rate, LPAZ_Z.stats.delta)
t_aoes_z= np.arange(0, AOES_Z.stats.npts / AOES_Z.stats.sampling_rate, AOES_Z.stats.delta)


ax1.set_title('Deep Argentina Seismic Event 24-12-2019 recorded at RS-OSC')

#lpaz.times("matplotlib")

ax2.plot(t_lpaz_z,LPAZ_Z,'b')
ax2.set_ylabel('[C]')
add_titlebox(ax2, 'Broadband LPAZ [Z]')
ax3.plot(t_aoes_z,AOES_Z,'r')
ax3.set_ylabel('[C]')
add_titlebox(ax3, 'StrongMotion AOES [Z]')

# -- CSV files with information --

epi='/home/tonino/Documents/Inv/ShE/191224_Arg/epicentro.dat'
lat, lon, mag, depth= [], [], [], []

# -70.2,-30.0,-56.9,-9.1  All Bol y Some Arg

m = Basemap(projection='mill', llcrnrlon=-70.20, llcrnrlat=-30.00, urcrnrlon=-56.90, urcrnrlat=-9.10,
            resolution='c',epsg= 4326, ax=ax1)
m.arcgisimage(service='World_Topo_Map', xpixels = 2000, verbose= True)
m.drawcoastlines()
m.drawcountries(color='yellow',linewidth=2.7)
m.drawmeridians(np.arange(0, 360, 2.5), labels=[True,False,False,True])
m.drawparallels(np.arange(-90, 90, 2.5),labels=[False,True,True,False])

with open(epi) as f:
    reader=csv.reader(f, delimiter=';')
    next(reader)
    for uhu in reader:
        lat.append(float(uhu[0]))
        lon.append(float(uhu[1]))
        mag.append(float(uhu[2]))
        depth.append(float(uhu[3]))

min_marker_size = 1.7
for lons, lats, mags in zip(lon, lat, mag):
    x,y = m(lons, lats)
    msize = mags * min_marker_size
    m.plot(x, y, 'ro', markersize=msize)

plt.show()
然而,现在我无法得到背景图像(在Ubuntu下),但在微软Windows下我得到了它。有什么建议吗?有没有人经历过这种行为?

使用espg使用数字代码设置投影,因此不需要使用projection='mill'。删除它,看看它是否修复了错误。@Jason,我删除了它,但没有肯定的答案,我将在Python3X中重新安装“basemap”。我刚刚测试了代码,它似乎对我很好。这是我得到的情节:@Jason,出于某种奇怪的原因,我的文本编辑器遗漏了for循环下的空格,我发布了整个代码,但没有图像取出或保留投影。