解析USGS网站页面中的地震空间数据
? USGS官方網站每天都會實時更新全世界的地震信息,包含地震發生的地點,坐標,震級,震中距離地表的距離等等,坐標系采用的是地心坐標系WGS84,如何將這些實時的信息采集到自己的系統之中,用于進一步的科學計算和空間分析,需要借助一些解析數據和空間計算的方法。
??? GIS主流的應用策略之一,是融合共享,也是技術發展的整體需求,接下來的內容并不關心如何共享,而是從共享的最基礎層面-數據層面,來解析USGS網站頁面中的地震空間數據。
??? 地震信息源的網址:http://quake.wr.usgs.gov/recenteqs/Quakes/quakes0.htm
??? 抽取該網站上的地震數據,可以使用主流的.Net,Java,開發一個小程序,相對獨立,但是更多的空間分析和應用是直接基于GIS桌面平臺進行的,如同在 MatLab平臺上實現了一套數學分析的思路,需要引入更多的外部資源充實其中的變量和數組,因此,我們可以直接在GIS桌面平臺ArcMap中直接用 Python去抽取數據,不同于普通的變量和數組,空間數據的引入還需要考慮坐標轉換,符號設置等相關信息,基于AO的Python都可以幫助咱們去一一實現。
??? urllib模塊是標準Python庫的一部分,方便提取最原始的地震數據:
q?=?urllib.urlopen(r'http://quake.wr.usgs.gov/recenteqs/Quakes/quakes0.htm')
for?l?in?q.readlines():
????if?l.find("<STRONG>")?==?0:
????????l?=?l[8:]
????????l?=?l.replace("FONT?COLOR",?"FC")
????if?l.find('<A?HREF="/recenteqs/Maps')?==?0:
????????quakeI?=?l.split()
????????magnitude?=?float(quakeI[2])
????????x?=?-float(quakeI[7][:-1])
????????y?=?float(quakeI[6][:-1])
????????point?=?arcpy.Point(x,y)
????????feature?=?cur.newRow()
????????feature.shape?=?point
????????feature.setValue("magnitude",?magnitude)
????????cur.insertRow(feature) 這樣所有的屬性信息,包括x/y坐標數據都已經獲取。熟悉AO的朋友肯定非常了解"cur.insertRow(feature)"的含義和開發過程了。不熟悉的請看后面解釋吧:
????#定義WGS84坐標參考系
????SR?=?arcpy.SpatialReference(r"C:\workspace\demo3\WGS?1984.prj")
????#創建一個FeatureClass
????arcpy.CreateFeatureclass_management(os.path.dirname(tmpFC),
????????????????????????????????????????os.path.basename(tmpFC),
????????????????????????????????????????"POINT",
????????????????????????????????????????spatial_reference?=?SR)
????#增加一個屬性字段,代表地震震級
????arcpy.AddField_management(tmpFC,?"Magnitude",?"DOUBLE")
????#獲取該FeatureClass的插入游標
????cur?=?arcpy.InsertCursor(tmpFC) 所以"cur.insertRow(feature)"就是將所有網站上獲取的每一個元組信息都添加到tmpFC臨時FeatureClass之中了。
??? 現在數據已經獲取了,按照傳統的解析數據方法,咱們任務也就完成了,但是對于GIS應用來說,需要將這些數據顯示到基礎地圖上,這里面就需要思考兩個問題:
??? 1.已獲取數據的坐標系和基礎地圖數據是否相同?不相同則需要坐標轉換。
??? 2.如何符號化顯示?
??? 假如我們基礎地圖的坐標是North_America_Albers_Equal_Area_Conic.prj,坐標轉換可以通過以下兩行代碼完成: ????SR?=?arcpy.SpatialReference(r"C:\workspace\demo3\North_America_Albers_Equal_Area_Conic.prj")
????arcpy.Project_management(tmpFC,?outFC,?SR,?"NAD_1983_To_WGS_1984_1")
????符號化可以自定義,也可以參考已有圖層的樣式,如: ????arcpy.ApplySymbologyFromLayer_management(os.path.splitext(os.path.basename(outFC))[0],
?????????????????????????????????????????????r"c:\workspace\demo3\earthquake.lyr") 這樣咱們就完成了解析的工作,可以在ArcMap中基于這些數據進行進一步的分析。ArcMap 9.3需要在單獨的IDLE環境中寫開發腳本,將結果手工添加到ArcMap平臺軟件中,ArcMap 9.4則直接整合了Python運行環境,開發過程中加入了動態提示,實時幫助,應用交互等等,在科學計算和空間分析中非常方便。
??? 插圖:
??? 原始軟件界面
??? 導入或直接編寫Python代碼
??? 自動提示
??? 右側幫助信息
??? 最終結果
本文轉自Flyingis博客園博客,原文鏈接:http://www.cnblogs.com/flyingis/archive/2009/11/05/1596472.html,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的解析USGS网站页面中的地震空间数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu mysql怎么备份_Ubu
- 下一篇: 射干的功效