- 积分
- 915
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-4-24
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
参考:https://bbs.06climate.com/forum. ... ;highlight=%B5%DA14
完善代码,差最后美化。
import numpy as np
import pandas as pd
import os
import matplotlib.pyplot as plt
def get_drylines_position_coordinate(filename):
'''
读取micaps第14类数据,micaps数据类型介绍如下链接:
https://www.bbsmax.com/A/WpdKqqOrJV/
input: 文件路径
output: micaps底图上叠加的线条对应的经纬度
'''
#读取文件
f=open(filename,mode='r')
data=f.readlines()
#获取该文件中包含几条线
num_drylines=int(data[2].strip().split()[-1])
print("获取该文件中包含几条线:",num_drylines)
n=3 #前五行为数据说明
all_position=[]
#print(data[3])
#获取每条线的经纬度坐标
for i in range(num_drylines):
# print("hang:",n)
#获取该线条用多少个点来描述,其中每个点对应一个经度和维度(和一个额外的数字,不重要)
n_points=int(data[n].strip().split()[-1])
# print(i,"获取该线条用多少个点来描述,其中每个点对应一个经度和维度:",n_points)
#由于默认每行仅支持输出个4数据点,因此,会存在多行数据
n_rows=int(np.ceil(n_points))
# print("会存在多行数据",n_rows)
#把包含这条线所有点的列连接起来
point_data=data[n+1]
for j in range(n_rows-1):
point_data=point_data+data[n+2+j]
#去除换行符和将每个数据隔开
point_data=point_data.strip().split()
#将数据类型由str转换为float型
point_data=[float(point_data) for i in range(len(point_data))]
#前面说到,每个点包含三个数据,其中第一个为经度,第二个为维度
point_lon=point_data[0::3]
point_lat=point_data[1::3]
#print(point_lon)
#print(point_lat)
#将该条线的经纬度坐标记录下来
coordinate=[point_lon,point_lat]
all_position.append(coordinate)
# print("hang111:",data[n+n_rows+1].strip().split()[-1])
nn=int(data[n+n_rows+1].strip().split()[-1])
#每条线差两列
n=n+n_rows+nn+2
print(coordinate)
return all_position ,data
filename=r'D:\pres\9999.000'
coor_data,data=get_drylines_position_coordinate(filename)
#print(data)
import pandas as pd
import os
import matplotlib.pyplot as plt
figure=plt.figure(figsize=(16,10))
num_lines=len(coor_data)
print(num_lines)
for i in range(num_lines):
print(coor_data[0],coor_data[1])
plt.plot(coor_data[0],coor_data[1])
plt.text(14.188,6.5574,"927.5")#标记数据
|
|