爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: MeteoInfo

绘制闪电密度图-2

  [复制链接]
发表于 2014-7-28 20:08:32 | 显示全部楼层
辟如(72.1,10.1)、(72.3,10.1)这两个数据都该在第一个网格内的,按您的算法后面数据就不在第一网格了
密码修改失败请联系微信:mofangbao
发表于 2014-7-31 16:14:45 | 显示全部楼层
支持楼主。
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

发表于 2014-10-22 21:56:58 | 显示全部楼层
楼主考虑的很严谨,把闪电密度定义成单位面积的闪电频次更加合理,用经纬网格统计得到的闪电频次除以球面多边形的面积,这样计算也很容易实现。我之前的思路是:先选择一个中心经纬度,建立2km x 2km 的水平网格坐标,再将闪电记录的经纬度坐标转换成该水平网格坐标,最后统计网格中的闪电数。这样涉及坐标的转换,实现起来也更复杂。好贴顶起~
密码修改失败请联系微信:mofangbao
发表于 2014-10-28 18:33:51 | 显示全部楼层
学习了,谢谢楼主。
密码修改失败请联系微信:mofangbao
发表于 2016-3-9 10:41:50 | 显示全部楼层
感谢樓主分享!没用过MeteoInfo,需要画闪电密度图,要慢慢研究啦!非常感謝!
密码修改失败请联系微信:mofangbao
发表于 2016-3-9 11:56:59 | 显示全部楼层
前面下载脚本,扣了三次金币都没下载下来,金币不够了
密码修改失败请联系微信:mofangbao
发表于 2017-5-15 16:55:06 | 显示全部楼层
王老师,我用的数据格式稍微有些不同,我把脚本里的格式修改运行后,提示错误如下:

提示错误

提示错误
0514-ic.txt (9.5 MB, 下载次数: 0)
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2017-5-15 17:07:02 | 显示全部楼层
呼小喵喵 发表于 2017-5-15 16:55
王老师,我用的数据格式稍微有些不同,我把脚本里的格式修改运行后,提示错误如下:
希望老师能提示指导一 ...

参考这里:http://bbs.06climate.com/forum.p ... &extra=page%3D1
密码修改失败请联系微信:mofangbao
发表于 2017-5-19 16:28:18 | 显示全部楼层
王老师,我用1楼的程序来画闪电密度分布,程序在计算格点面积那提示错误,麻烦您有空帮我看看是什么问题,谢谢。
#--------------------------------------------------------        
# Author: Yaqiang Wang                                          
# Date: 2013-5-5                                                
# Purpose: Read and plot lighting frequency data  
# Note: Sample                                                   
#-----------------------------------------------------------  
#---- Import clr and classes
import clr
clr.AddReferenceByPartialName("System")
clr.AddReferenceByPartialName("System.Drawing")
from System import *
from System.Collections.Generic import *
clr.AddReference("MeteoInfoC.dll")
from MeteoInfoC import *
from MeteoInfoC.Data import *
from MeteoInfoC.Data.MeteoData import *
from MeteoInfoC.Legend import *
from MeteoInfoC.Shape import *
from MeteoInfoC.Geoprocess import *
import os.path

#---- Set directory
dataDir = "F:\\Meteinfo\\MeteoInfo\\"

#---- Define grid data
print 'Define grid data...'
x0 = 108
y0 = 29
xdelt = 0.2
ydelt = 0.2
xnum = 88
ynum = 71
gData = GridData(x0,xdelt,xnum,y0,ydelt,ynum)

#---- Get area of each grid
print 'Get area of each grid...'
areaData = GridData(x0,xdelt,xnum,y0,ydelt,ynum)
for i in range(0,ynum):
        for j in range(0,xnum):
                pList = List[PointD]()
                x = x0 - xdelt / 2 + j * xdelt
                y = y0 - ydelt / 2 + i * ydelt
                pList.Add(PointD(x, y))
                y = y + ydelt
                pList.Add(PointD(x, y))
                x = x + xdelt
                pList.Add(PointD(x, y))
                y = y - ydelt
                pList.Add(PointD(x, y))
                pList.Add(pList[0])
                area = GeoComputation.SphericalPolygonArea(pList)
                areaData.Data[i, j] = area / 1000000   #Square meters to square kilometers

#---- Read lighting data file
print 'Read lighting data file...'
fn = dataDir + "0514CG.txt"
tf = open(fn)
for aline in tf:        
        datalist = aline.split()
        lat = float(datalist[3])
        lon = float(datalist[4])               
        xIdx = int((lon - x0 + xdelt / 2) / xdelt)
&#160; &#160;&#160; &#160;&#160;&#160;if xIdx < 0 or xIdx > xnum -1:
&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160; continue
&#160; &#160;&#160; &#160;&#160;&#160;yIdx = int((lat - y0 + ydelt / 2) / ydelt)
&#160; &#160;&#160; &#160;&#160;&#160;if yIdx < 0 or yIdx > ynum - 1:
&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160; continue
&#160; &#160;&#160; &#160;&#160;&#160;
&#160; &#160;&#160; &#160;&#160;&#160;gData.Data[yIdx, xIdx] += 1

#---- Get lighting times per square kilometers
for i in range(0,ynum):
&#160; &#160;&#160; &#160;&#160;&#160;for j in range(0,xnum):
&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160; gData.Data[i, j] = gData.Data[i, j] / areaData.Data[i, j]

#---- Ouput grid data as Surfer ASCII data file
outfn = dataDir + "0514CG.grd"
gData.SaveAsSurferASCIIFile(outfn)

#---- Create shaded layer from the grid data
#aLS = LegendScheme(ShapeTypes.Polygon)
#aLS.ImportFromXMLFile(dataDir + "test1.lgs")
aLS = LegendManage.CreateLegendSchemeFromGridData(gData, LegendType.GraduatedColor, ShapeTypes.Polygon)
aLayer = DrawMeteoData.CreateShadedLayer(gData, aLS, "Lighting_Shaded", "Times")
bLayer = DrawMeteoData.CreateGridFillLayer(gData, aLS, "Lighting_Grid", "Times")
aLS = LegendManage.CreateLegendSchemeFromGridData(areaData, LegendType.GraduatedColor, ShapeTypes.Polygon)
areaLayer = DrawMeteoData.CreateGridFillLayer(areaData, aLS, "Area_Grid", "Area")
mipy.MapDocument.ActiveMapFrame.AddLayer(aLayer)
mipy.MapDocument.ActiveMapFrame.MoveLayer(aLayer, 0)
mipy.MapDocument.ActiveMapFrame.AddLayer(bLayer)
mipy.MapDocument.ActiveMapFrame.MoveLayer(bLayer, 0)
mipy.MapDocument.ActiveMapFrame.AddLayer(areaLayer)
mipy.MapDocument.ActiveMapFrame.MoveLayer(areaLayer, 0)

print 'Finished!'

提出错误:
File "<iostream>", line 39
    ? ?? ???for j in range(0,xnum):
    ^
SyntaxError: no viable alternative at character '?'
我用的数据格式是这样的,根据格式,我对脚本里读闪电数据修改了。
ID        日期        时间        lat        lon        强度        陡度
1        2015/5/14        0:05:20        29.289        117.7208        55.2        12.6
2        2015/5/14        0:08:40        29.2667        117.7798        110.9        17.5
3        2015/5/14        0:09:41        29.3316        117.8805        74.7        18.8
4        2015/5/14        0:10:36        28.8085        117.7493        -54.3        -25.7
5        2015/5/14        0:12:22        29.2603        117.7879        92.9        15.7
6        2015/5/14        0:14:33        28.7751        117.8876        -56.1        -26.6
7        2015/5/14        0:14:33        29.0603        117.0943        -46.7        -15.3
8        2015/5/14        0:18:34        29.2807        117.7976        102.2        17
9        2015/5/14        0:19:22        27.7117        114.0031        -46.1        -13.7
10        2015/5/14        0:21:39        29.2238        117.8531        131.8        19.4

密码修改失败请联系微信:mofangbao
发表于 2017-5-20 11:35:55 | 显示全部楼层
谢谢楼主了
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表