爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 144575|回复: 108

[经验总结] 基于python3.6的CIMISS系统数据统一服务接口客户端开发

  [复制链接]

新浪微博达人勋

发表于 2018-2-22 16:33:58 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 zhangqqqf 于 2018-4-3 14:22 编辑

基于python3.6的CIMISS数据统一服务接口客户端开发

说明:
1. MUSIC系统内基于python的客户端调用方法的说明文档已经过时, 如果你使用的是python3.x请参考本文档进行开发;


Python:
3.x 下载地址:https://www.python.org/downloads/

IDE:
Pycharm 下载地址: https://www.jetbrains.com/pycharm/download/#section=windows
开发工具的使用方法请自行google,练习使用;

创建新工程:
pycharm创建新项目工程: 例如 D:\JetBrains\Projects\python\mimo(mimo为项目名,请自行命名,路径自由选择)

Virtual Environment:
本过程可省略, 但是为了避免不同依赖库版本的混乱,我这里建议为不同的开发项目建立单独的虚拟环境virtualEnv, 如果你熟悉命令行操作,可以使用Pycharm集成的virtualEnv创建,我这里基于Python 3.6.2 建立的virtualenv 放在指定目录内, 例如 D:\JetBrains\virtualEnv\mimoEnv,  创建完虚拟环境注意pip版本的升级.
说明: 本文档内下面所有使用的python命令均为本虚拟环境下的简写, 例如python -V, 实际执行的为D:\JetBrains\virtualEnv\mimoEnv\Scripts\python -V

执行命令检查版本(python3.x pip 9.x):
python -V
Python 3.6.2

pip -V
pip 9.0.1 from d:\jetbrains\virtualenv\mimoenv\lib\site-packages (python 3.6)

pip list
pip (9.0.1)
setuptools (18.1)
wheel (0.30.0)

zeroc-ice:
官方地址: https://zeroc.com/downloads/ice#python
安装zeroc-ice依赖包:  执行命令 D:\JetBrains\virtualEnv\mimoEnv\Scripts\pip install zeroc-ice
(说明: 该网站很慢, 如果可以梯子请翻墙)
pip list 检查,如果存在zeroc-ice(3.7.0.1) 则安装成功;

基础客户端包
MUSIC网站上下载的music-lib-python-v1.6.0.zip并不可用, 请使用我提供的附件cma.zip, 并解压缩放到项目工程目录中
例如: D:\JetBrains\Projects\python\mimo\cma

DEMO程序:
例如: D:\JetBrains\Projects\python\mimo\client.py
  1. # Created on 2017/08/25
  2. #
  3. # @author: zhangxin
  4. import datetime
  5. from cma.cimiss.DataQueryClient import DataQuery

  6. if __name__ == '__main__':
  7.    
  8.     # 定义client对象,指定数据服务ip和port
  9.     # client = DataQuery(serverIp="10.96.89.55", serverPort=1888)
  10.     # 定义client对象,默认使用client.config指定服务连接配置,需根据自己的地址进行修改
  11.     client = DataQuery()


  12.     # 用户名和密码
  13.     userName = "BEHB_xxxx"
  14.     password = "xxxxx"

  15.     # 接口ID
  16.     interfaceId = "getSurfEleInRegionByTime"

  17.     # 当前时间减一天
  18.     now_time = (datetime.datetime.now() - datetime.timedelta(hours=8)).strftime('%Y%m%d%H') + "0000"
  19.     print('now_time:', now_time)

  20.     # 接口参数
  21.     params = {'dataCode': "SURF_CHN_MUL_HOR_N",
  22.               'elements': "Station_ID_C,PRE_12h",
  23.               'times': now_time,
  24.               'adminCodes': "230100",
  25.               'orderby': "Station_ID_C:ASC",
  26.               'limitCnt': "100000"}

  27.     retArray2D = ""

  28.     # 调用接口
  29.     # 1.获取数据返回结构体/类
  30.     # retArray2D = client.callAPI_to_array2D(userName, password, interfaceId, params)

  31.     # 2.获取数据返回序列化字符串
  32.     # dataFormat 序列化的数据格式,可取:xml、json、csv、text、spaceText、commaText、tabText等。
  33.     #            其中,spaceText、commaText、tabText表示保存为文本,记录间换行,要素值间分别用空格、逗号和TAB分割;text同spaceText。
  34.     # retArray2D = client.callAPI_to_serializedStr(userName, password, interfaceId, params, dataFormat="csv")

  35.     # 3.获取数据写入本地文件
  36.     # dataFormat 序列化的数据格式,可取:xml、json、csv、text、spaceText、commaText、tabText等。
  37.     #            其中,spaceText、commaText、tabText表示保存为文本,记录间换行,要素值间分别用空格、逗号和TAB分割;text同spaceText。
  38.     # savePath 保持的本地文件路径(全路径,含文件名)

  39.     # 保存文件的路径及文件名
  40.     _saveDir_ = '.\data'
  41.     # 一种字符串拼接方法
  42.     _saveFile_ = '%s.txt' % now_time
  43.     # 又一种字符串拼接方法
  44.     _savePath_ = _saveDir_ + _saveFile_
  45.     print('savePath:', _savePath_)

  46.     result = client.callAPI_to_saveAsFile(userName, password, interfaceId, params, dataFormat='csv', savePath=_savePath_)
  47.     # 输出结果预览
  48.     print(retArray2D)

  49.     # 销毁client对象
  50.     client.destroy()
复制代码

DEMO程序执行:
python clinet.py
`
Ice Checked!
now_time: 20180130120000
savePath: .\data\20180130120000.txt
Ice Destory!
`
我把附件补充了上了, 有需要的朋友下载吧;  如果没有积分可以私信我, 直接发你;
如果有任何问题欢迎私信或邮件, 一起交流学习;






mimo.zip

1.24 MB, 下载次数: 453, 下载积分: 金钱 -5

demo

cma.zip

7.74 KB, 下载次数: 438, 下载积分: 金钱 -5

ice-lib

评分

参与人数 1金钱 +20 贡献 +2 收起 理由
yousangjie + 20 + 2 很给力!

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-3-13 15:57:01 | 显示全部楼层
楼主您好,用你的脚本时遇到以下错误提示:Ice UnChecked, Retry.. 。已经用pip install zeroc-ice,提示成功安装。但遇到的上述问题,不知道该如何解决,求大神帮忙。谢谢!
密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2018-2-22 16:35:27 | 显示全部楼层
我就想问下 删我这个帖子干什么?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-2-23 06:21:09 来自手机 | 显示全部楼层
楼主能再发一遍帖子么,感觉很有用处的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-2-23 08:42:06 | 显示全部楼层
tulalang 发表于 2018-2-23 06:21
楼主能再发一遍帖子么,感觉很有用处的

帖子被管理员删掉了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-2-23 10:11:18 | 显示全部楼层
好帖啊!怎么会被删除?请问能不能传一份您的cma.zip给我啊?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-2-24 17:32:06 | 显示全部楼层
cmiss接口貌似只有内部能用,管理员应该不会让你发出来的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-2-25 13:24:45 | 显示全部楼层
非常感谢,收藏了。最近在捣鼓2.7如何接。顺便吐槽一下官网的那个zip包,说明写的不咋地。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2018-2-26 13:17:52 | 显示全部楼层
这个界定确实有点难,不过这不属于内部气象数据,不会有原则性的问题,只是一些内部的学习资料,只要数据不泄露,只有这些学习资料也没什么用处。基本上也都是内部人士才会去用。感谢楼主分享。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-2-26 14:59:21 | 显示全部楼层
cimiss网站里就有各个接口的示例代码,直接copy下来换上自己单位的用户名和密码就能下载  关键不是代码  而是用户名和密码  而且省级的用户能下载的数据有限  国家局的用户下载的才是比较全面的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-2-27 13:51:26 | 显示全部楼层
能豆子 发表于 2018-2-23 10:11
好帖啊!怎么会被删除?请问能不能传一份您的cma.zip给我啊?

我把附件补充上了
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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