惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
T
Threat Research - Cisco Blogs
Cloudbric
Cloudbric
Recent Commits to openclaw:main
Recent Commits to openclaw:main
I
Intezer
Attack and Defense Labs
Attack and Defense Labs
P
Privacy International News Feed
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
L
Lohrmann on Cybersecurity
C
Cybersecurity and Infrastructure Security Agency CISA
V2EX - 技术
V2EX - 技术
AWS News Blog
AWS News Blog
O
OpenAI News
L
LINUX DO - 最新话题
N
News | PayPal Newsroom
PCI Perspectives
PCI Perspectives
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Troy Hunt's Blog
Latest news
Latest news
D
Darknet – Hacking Tools, Hacker News & Cyber Security
A
Arctic Wolf
Spread Privacy
Spread Privacy
G
GRAHAM CLULEY
T
Tor Project blog
博客园_首页
Know Your Adversary
Know Your Adversary
有赞技术团队
有赞技术团队
S
Secure Thoughts
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
T
Tailwind CSS Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
V
Visual Studio Blog
J
Java Code Geeks
Cisco Talos Blog
Cisco Talos Blog
Schneier on Security
Schneier on Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Security Affairs
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
雷峰网
雷峰网
宝玉的分享
宝玉的分享
量子位
Last Week in AI
Last Week in AI
月光博客
月光博客
罗磊的独立博客
S
SegmentFault 最新的问题

博客园 - Flyingis

微博开通 ESRI UC 2010开幕视频 & Jack出场 地图缓存技术的标准 2010 新年招聘信息--学生实习版 2010 新年招聘信息--正式员工版 WGS 1984 Web Mercator 对于在线地图服务的意义 Geoprocessing scripts 利用多核进行计算 浅尝辄止 Parallel Python 将地震空间数据转变为专题地图 空间数据与内容的共享 ESRI UC 2009 见闻和感触 ArcGIS 9.3/9.3.1 客户端 API 更新信息--2009年5月 如何改善软件的用户体验 之 颜色与UI RIA+REST,琴瑟合鸣 ESRI中国(北京)招聘技术工程师 ArcGIS 9.3.1 关键更新 解决 File GDB 文件锁定的问题 ArcGIS Server 开发系列(七)--物流配送 ArcGIS Flex API 中的 Flex 技术(五)--技术列表
解析USGS网站页面中的地震空间数据
Flyingis · 2009-11-05 · via 博客园 - Flyingis

    作者:Flyingis
    本文欢迎友情转载,但请注明作者及原文链接,严禁用于商业目的

    USGS官方网站每天都会实时更新全世界的地震信息,包含地震发生的地点,坐标,震级,震中距离地表的距离等等,坐标系采用的是地心坐标系WGS84,如何将这些实时的信息采集到自己的系统之中,用于进一步的科学计算和空间分析,需要借助一些解析数据和空间计算的方法。

    GIS主流的应用策略之一,是融合共享,也是技术发展的整体需求,接下来的内容并不关心如何共享,而是从共享的最基础层面-数据层面,来解析USGS网站页面中的地震空间数据。

    地震信息源的网址:http://quake.wr.usgs.gov/recenteqs/Quakes/quakes0.htm

    抽取该网站上的地震数据,可以使用主流的.Net,Java,开发一个小程序,相对独立,但是更多的空间分析和应用是直接基于GIS桌面平台进行的,如同在 MatLab平台上实现了一套数学分析的思路,需要引入更多的外部资源充实其中的变量和数组,因此,我们可以直接在GIS桌面平台ArcMap中直接用 Python去抽取数据,不同于普通的变量和数组,空间数据的引入还需要考虑坐标转换,符号设置等相关信息,基于AO的Python都可以帮助咱们去一一实现。

    urllib模块是标准Python库的一部分,方便提取最原始的地震数据:

= 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代码

    自动提示

    右侧帮助信息

    最终结果