- 积分
- 5363
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-2-16
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 scmeiqy 于 2020-4-3 16:51 编辑
CIMISS接口之Python:支持任意版本ICE,Python3.x
疫情期间,为了完成上级交待的工作:关于CIMISS数据获取方法,给同事们作个培训。
经调查,几乎都只会使用windows平台下的fortran,而Cimiss文档中没有基于windows平台的fortran接口;查询ICE文档,也没有见到。
征询大家意见,说是部分人会python,好吧,python!
开工,才发现官网那个python接口文档,实在………………
经实验,按照官网那个python接口文档,如果你在环境ICE3.4.2、python2.7.17、Windows10_X64下,能实验成功的话,算你人品好————超级好!!!
当然,最后我成功了————但是我把visual studio 2008请出来,专门在Windows7_x64下,把ICE3.4.2的部分库基于其源码重编译了一遍,替换到Windows10_X64下。
工作不止步于此,通过读ZeroC ICE官方文档,有所发现,共享于广大家园朋友,所以才有了此发布。
很简单,很简单,很简单……重要的事说三遍:
1、库只需三个文件(全在cimiss_python.7z中):
一个配置文件,一个ice文件,一个接口包装文件。
2、说明一点:现在的库,我改变了接口包装文件的位置(改变的理由:我把cimiss的java接口,也使用ICE3.7.3、java8环境,全部重新实现了,也改变了接口包装文件的位置,两者统一了):
原位置:cma.cimiss.DataQueryClient
新位置:sc.mqy.client.DataQueryClient
下面是demo代码:
# coding=utf8
'''
Created on 2017/08/25
@author: zhangxin
Modified on 2020/04/01
@author: scmeiqy
'''
import datetime
import sys
import Ice
from sc.mqy.client.DataQueryClient import DataQuery
if __name__ == '__main__':
# 定义client对象,指定数据服务ip和port
# client = DataQuery(serverIp="10.96.89.55", serverPort=1888)
# 定义client对象,默认使用client.config指定服务连接配置,需根据自己的地址进行修改
client = DataQuery()
# 用户名和密码
userName = "userName"
password = "password"
# 接口ID
interfaceId = "getSurfEleInRegionByTime"
# 当前时间减一天
now_time = (datetime.datetime.now() - datetime.timedelta(hours=8)).strftime('%Y%m%d%H') + "0000"
print('now_time:', now_time)
# 接口参数
params = {'dataCode': "SURF_CHN_MUL_HOR_N",
'elements': "Station_ID_C,PRE_12h",
'times': now_time,
'adminCodes': "230100",
'orderby': "Station_ID_C:ASC",
'limitCnt': "100000"}
retArray2D = ""
# 调用接口
# 1.获取数据返回结构体/类
# retArray2D = client.callAPI_to_array2D(userName, password, interfaceId, params)
# 2.获取数据返回序列化字符串
# dataFormat 序列化的数据格式,可取:xml、json、csv、text、spaceText、commaText、tabText等。
# 其中,spaceText、commaText、tabText表示保存为文本,记录间换行,要素值间分别用空格、逗号和TAB分割;text同spaceText。
# retArray2D = client.callAPI_to_serializedStr(userName, password, interfaceId, params, dataFormat="csv")
# 3.获取数据写入本地文件
# dataFormat 序列化的数据格式,可取:xml、json、csv、text、spaceText、commaText、tabText等。
# 其中,spaceText、commaText、tabText表示保存为文本,记录间换行,要素值间分别用空格、逗号和TAB分割;text同spaceText。
# savePath 保持的本地文件路径(全路径,含文件名)
# 保存文件的路径及文件名
_saveDir_ = '.\data'
# 一种字符串拼接方法
_saveFile_ = '%s.txt' % now_time
# 又一种字符串拼接方法
_savePath_ = _saveDir_ + _saveFile_
print('savePath:', _savePath_)
result = client.callAPI_to_saveAsFile(userName, password, interfaceId, params, dataFormat='csv', savePath=_savePath_)
# 输出结果预览
print(result)
result = client.callAPI_to_saveAsFile(userName,password, "getSurfEleByTime",\
{'dataCode':"SURF_CHN_MUL_HOR",\
'elements':"Station_ID_C,PRE_1h,PRS,RHU,VIS,WIN_S_Avg_2mi,WIN_D_Avg_2mi,Q_PRS",\
'times':"20141224000000",\
'orderby': "Station_ID_C:ASC",\
'limitCnt': "20000" },'json','20200401data.txt')
print(result)
# 销毁client对象
client.destroy()
#print(client.getStatus())
print(Ice.stringVersion())
sys.exit(client.getStatus())
可以只下载cimiss_python.7z文件。用这里的张贴代码测试即可————cimiss_python_demo.7z只包含demo.py一个文件。
cimiss_python_demo.7z
(1.4 KB, 下载次数: 141)
|
评分
-
查看全部评分
|