野火最近已在美国多个州蔓延。加利福尼亚州遭受着历史上最大规模的野火之苦。俄勒冈州有20处大火,覆盖面积超过40万英亩。甚至华盛顿今年也不能幸免。
为了得到当前野火在哪里的感觉,我生成了一个调用的函数 WildfireData 其源数据来自美国宇航局的MODIS仪器登上了Terra和Aqua两颗卫星(代码包括在文章的结尾):https://modis.gsfc.nasa.gov/
这 WildfireData 函数可以通过以下全局 ResourceFunction URI进行访问:
代码语言:javascript复制WildfireData=ResourceFunction["user:arnoudb/DeployedResources/Function/WildfireData"]
现在,我们可以立即使用此函数从NASA获取当前可用的野火数据:
代码语言:javascript复制data=WildfireData[]
输出是具有几列的数据集。第一列包含野火观测的地理位置,第二列包含其亮度:
我们可以从在地图上绘制所有位置开始:
代码语言:javascript复制GeoGraphics[{Red,Point[data[All,"Location"]]}]
输出显示观察到的野火:
在此缩放级别上,南方似乎有很多野火,但是我们可以放大,例如密西西比州,以近距离观察:
代码语言:javascript复制ms=Entity["AdministrativeDivision",{"Mississippi","UnitedStates"}];
代码语言:javascript复制GeoGraphics[{Blue,Polygon[ms],Red,Point[data[All,"Location"]]},GeoRange->ms]
近距离来看,这些野火非常分散且独立:
我们可以将密西西比州和俄勒冈州进行比较,以了解两者之间的区别:
代码语言:javascript复制or=Entity["AdministrativeDivision",{"Oregon","UnitedStates"}];
代码语言:javascript复制GeoGraphics[{Blue,Polygon[or],Red,Point[data[All,"Location"]]},GeoRange->or]
俄勒冈州的野火数量更多:
我们可以放大任何区域,例如,洛杉矶市中心40英里以内的区域:
代码语言:javascript复制la=Entity["City",{"LosAngeles","California","UnitedStates"}];
代码语言:javascript复制GeoGraphics[{Red,Point[data[All,"Location"]]},GeoRange->GeoDisk[la,Quantity[40,"Miles"]]]
圣盖博山上有许多野火:
这些野火被称为山猫火(Twitter上的#bobcatfire):
在俄勒冈州塞勒姆以东还有大火:
代码语言:javascript复制area=Entity["City",{"Salem","Oregon","UnitedStates"}]
代码语言:javascript复制GeoGraphics[{Red,Point[data[All,"Location"]]},GeoRange->GeoDisk[area,Quantity[60,"Miles"]]]
这显示了一大堆野火:
不幸的是,西部的野火季节预计要到11月才能结束。到目前为止,仅在加利福尼亚州,就有超过300万英亩的土地被烧毁,估计成本为8亿美元。俄勒冈州损失了60万英亩,华盛顿损失了500,000英亩。
WildfireData 函数的代码:
代码语言:javascript复制WildfireData[] := Module[{base, csv1, csv2, csv, ds},
base = "https://firms.modaps.eosdis.nasa.gov/data/active_fire/c6/
csv/"; csv1 =
Once[Import[
URLBuild[{base, "MODIS_C6_USA_contiguous_and_Hawaii_24h.csv"}]]];
csv2 = Once[Import[URLBuild[{base, "MODIS_C6_Alaska_24h.csv"}]]];
csv = If[Length[csv2] > 1, Join[csv1, csv2], csv1];
ds = Dataset[Map[
<|
"Location" -> GeoPosition[{First[#], #[[2]]}],
"Brightness" -> #[[3]],
"Scan" -> #[[4]],
"Track" -> #[[5]],
"AcquisitionDate" ->
DateObject[{#[[6]] <> " " <>
IntegerString[#[[7]], 10, 4], {"Year", "-", "Month", "-",
"Day", " ", "Hour", "Minute"}}],
"Satellite" -> #[[8]],
"ConfidenceFraction" -> #[[9]]/100.,
"Version" -> #[[10]],
"BrightnessT31" -> #[[11]],
"FRP" -> #[[12]],
"DayNight" -> #[[13]]|> &, Rest[csv]]
]
]