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循环下的空格,我发布了整个代码,但没有图像取出或保留投影。