不久前,我发表了一篇关于使用Python和NASA MODIS公开的数据处理MODIS近实时卫星图像的文章,如果你对这些图像感兴趣,可以看看这里的帖子。
现在我已经创建了一个名为pyearthquake自动检索任何MODIS子集图像从美国宇航局快速反应系统在一个简单的方法,只需使用子集,卫星和分辨率参数。这个包有一个模块可以从美国地质调查局获取实时地震数据美国地质勘探局网站并自动解析它,以及从USGS检索shakemaps和其他产品的功能。
检索、处理和绘制USGS数据
让我们开始讨论公共可用的目录与实时地震数据从USGS网站(他们是CSV格式,还有其他XML和KMZ格式,如果你感兴趣,但我重点在CSV格式文件创建Python模块:
USGS站点注意:文件不包括在内(例如,过去一天的文件不包括过去一小时的事件)。
M1 +地震(过去时)M1 + PAST_HOUR
这是过去一小时地震数据的全球目录;
M1 +地震(过去的)M1 + PAST_DAY
这是包含过去一天地震数据的全球目录;
M1 +地震(过去7天)-M1 + PAST_7DAY
这是世界范围内的地震目录,包括过去7天的地震数据;
要从这些目录中获取和处理数据,你可以使用我创建的pyearthquake包,让我们先安装它:
easy_install pyearthquake
这个命令将使用easy_install从PyPI衍生库自动安装包,它也将自动解决需求,但如果您遇到一些问题,以下是显式需求:matplotlib> = 0.99.0,numpy1.3.0 > =版本,公益诉讼> = 1.1.6和基础图> = 0.99.4。basemap包是matplotlib的map工具包。
让我们现在,例如,获取过去一小时地震数据的目录,我们可以使用Python解释器提示符,如下所示:
>>> catalog = usgs.retrieve_catalog("M1+PAST_HOUR")在0x00BD0FD0>处的USGSCatalog实例
所有可用的目录是:M1+PAST_HOUR, M1+PAST_DAY和M1+PAST_7DAY。但如果您键入了错误的目录名称,它将显示所有可用的名称。
您现在可以使用“catalog”对象来查看从USGS站点检索的数据:
> > >列表(目录)[{“Src”:“词”、“地区”:“加州中部”,“朗”:“-118.2063”,“Datetime”:“2010年1月16日星期六,17:12:20 UTC”、“深度”:“6.00”,“版本”:“1”,“纬度”:“36.2061”,“Eqid”:“10530221”,“大小”:“1.9”,“望远镜”:“27”},{“Src”:“正义与发展”,“地区”:“南阿拉斯加”、“朗”:“-150.0829”,“Datetime”:“2010年1月16日星期六,16:47:05 UTC”、“深度”:“34.90”,“版本”:“1”,“纬度”:“61年。4521”、“Eqid:“10029267”、“大小”:“2.3”、“望远镜”:“27”}]行目录> > >:…打印行“级”,行“深度”,行“Datetime”,行“深度”,行(“区域”)……2010年1月16日星期六16:47:05协调世界时34.90阿拉斯加南部
如您所见,“catalog”是一个可交互的对象,您可以在其中获取地震的所有数据,如震级、纬度、经度、深度、日期、地区名称等……
让我们看看过去7天的地震数据:
>>> catalog = usgs.retrieve_catalog("M1+PAST_7DAY"
在过去的7天里,地球上发生了1.142次1级以上的地震,如果我们想要找出上次海地悲剧发生的事件,我们可以将震级按6.0进行筛选:
[size = 6] [event for event in catalog if float(event[" size "]
对于大小为6的行:…打印行“Eqid”,行“级”,行“深度”,行“Datetime”,行“深度”,行(“区域”)……2010年1月14日星期四14:03:40 UTC 32.40马里亚纳群岛以南2010年1月12日星期二21:53:10国际标准时间13:00海地地区2010年1月10日星期日00:27:39 UTC 29.30加利福尼亚北部近海
如我们所见,编号为“2010rja6”的地震,是美国地质勘测局用来确定1月12日发生在海地的7.0级地震,这场地震摧毁了该地区及不幸的海地人民。
美国地质勘探局还提供了Shakemaps,这是一种计算机自动生成的地图,显示了地震地区的潜在破坏情况。
美国地质调查局6级、4级、5级。retrieve_shakemap (haiti_eq“INSTUMENTAL_INTENSITY”)
函数的第二个参数是shakemap类型,你也可以从USGS获得其他产品,比如媒体地图,峰值地面加速度。这些地图在包中有:仪器强度,裸露,装饰,不确定度和PEAK_GROUND_ACC。
packas具有绘制地震地图的功能(使用Matplotlib),参见如何绘制过去7天的地震地图:
> > > usgs.plot_events(目录)
< mpl_toolkits.basemap。Basemap对象0x01E6BDB0>
现在在海地地区,
这些点的颜色与震级有关,我这里使用的是Matplotlib的JET(黄色/红色的点是震级更高的地震)彩色地图,见此链接使用更多的彩色地图。
从MODIS卫星获取最后的图像和绘制地震图
现在我们来谈谈modis"的模块pyearthquake模块。该模块可用于获取MODIS Aqua/Terra卫星上最新的或存档的图像(高达250m分辨率)。亚洲金博宝首先,你必须知道你想从MODIS网站检索的子集,子集是可用的这里是NASA的基地。为了绘制海地区域,我将使用名为“GreaterAntilles”的子集,它覆盖了海地区域。要获得今天的卫星图像,我们可以这样做:
>>> from pyearthquake import modis >>> import datetime >>> now = date .date .now() > >0 >1 bmap = modis。get_modis_subset(现在,…“GreaterAntilles”……satellite_name =亚洲金博宝“terra”……分辨率= " 250 ")
这个命令将获得今天从“terra”卫星上拍摄的“GreaterAntilles”子集的合成图像,分辨率为250米(事实上,这将需要一段时间,因为我使用的是更高的分辨率,最大值为250米)。亚洲金博宝结果如下:

下面是太子港附近的海地地区:

这是MODIS有趣的部分,这张照片是今天拍摄的。
现在,让我们把美国地质勘探局的地震信息和海地最近的图像结合起来:
导入modis catalog = usgs.retrieve_catalog("M1+PAST_7DAY") now = date .date . time.now() bmap = modis。get_modis_子集(现在,“GreaterAntilles”,satellite_name=“terra”,亚洲金博宝分辨率=“250m”,show=False)bmap plot_events(目录)
这是来自Terra卫星的今日MODIS图像中过去7天地震图的结果:亚洲金博宝

你也可以使用这个软件包来绘制世界上其他地区的地震,只要从MODIS快速反应系统站点中选择另一个子集就可以了。
- Christian S. Perone
这里显示的所有图像和数据都来自MODIS响应系统或美国地质调查局。