气候服务平台ClimateSERV2.0简介(python)
1 简介
ClimateSERV 2.0允许开发从业者、科学家/研究人员和政府决策者可视化和下载历史降雨数据、植被状况数据以及 180 天的降雨和温度预报,以增进对农业和水资源供应相关问题的理解并做出改进的决策。
这些数据可以通过 Web 应用程序直接访问,也可以使用 Python 应用程序中的 ClimateSERVpy 通过应用程序 API 进行访问。
可以通过以下方式安装 ClimateSERVpy包:
pip install climateserv
conda install -c servir climateserv
环境要求:
- Python 3.9.5 或更高版本 (建议使用 3.9.5)
- PostgreSQL (版本 13)
- THREDDS (版本 4.6.14)
- Linux 服务器
具体安装需要使用两个环境:一个用于数据库,另一个用于应用程序。
2 在conda 环境中设置数据库
- 创建环境
mkdir -p /cserv2/python_environments/conda/anaconda3/envs/
conda create --prefix=/cserv2/python_environments/conda/anaconda3/envs/psqlenv python=3.9.5
conda create --name psqlenv python=3.9.5
- 进入环境
conda activate psqlenv
- 通过 Conda 安装 PostgreSQL
conda install -y -c conda-forge postgresql
- 创建基本数据库
cd /cserv2
mkdir db
cd dbinitdb -D local_climateserv
- 启动 Postgres 的服务器模式/实例
pg_ctl -D local_climateserv -l logfile start
- 创建非超级用户(更安全)
createuser --encrypted --pwprompt csadmin
- 使用此用户,在 Base Database 中创建内部数据库
createdb --owner=csadmin cs2_db
conda deactivate
- 创建数据库连接文件
将以下内容粘贴到下面的文件:
/cserv2/django_app/ClimateSERV2/climateserv2/data.json
{"NAME": "cs2_db","USER": "csadmin","PASSWORD": "PASSWORD_YOU_SET_FOR_THIS_USER","HOST": "127.0.0.1","SECRET_KEY": "Your_super_secret_key_for_django""DEBUG": "False"
}
对于 SECRET_KEY 必须是一个较大的随机值,并且必须保密。
对于 DEBUG,在 development 中,将其设置为 “True”,对于生产环境,将其设置为 “False”。
3 在conda 环境中设置应用程序
安装 conda 后,运行以下命令来创建 python 环境并激活:
conda create --prefix=/cserv2/python_environments/conda/anaconda3/envs/climateserv2 python=3.9.5
conda activate ClimateSERV2
cd 到项目目录,然后运行以下两个安装命令:
pip install -r requirements.txt
conda install --file conda_requirements.txt
完成后,再添加一个全局 lib 来代理消息队列:
sudo apt-get install rabbitmq-server
sudo systemctl enable rabbitmq-server
sudo service rabbitmq-server start
现在可以创建一个服务和配置文件来启动 celery,这是任务队列,专注于实时处理。
需要创建两个文件,一个位于 /etc/systemd/system/celery.service,另一个位于 /etc/conf.d/celery
在 celery.service 中,需要以下内容(可能需要调整路径):
[Unit]
Description=Celery Service
After=rabbitmq-server.service network.target
Requires=rabbitmq-server.service
RuntimeDirectory=celery [Service]
Type=forking
User=www-data
Group=www-data
EnvironmentFile=/etc/conf.d/celery
WorkingDirectory=/cserv2/django_app/ClimateSERV2
ExecStart=/bin/bash -c '${CELERY_BIN} -A $CELERY_APP multi start $CELERYD_NODES \--pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} \--loglevel="${CELERYD_LOG_LEVEL}" $CELERYD_OPTS'
ExecStop=/bin/sh -c '${CELERY_BIN} multi stopwait $CELERYD_NODES \--pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} \--loglevel="${CELERYD_LOG_LEVEL}"'
ExecReload=/bin/sh -c '${CELERY_BIN} -A $CELERY_APP multi restart $CELERYD_NODES \--pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} \--loglevel="${CELERYD_LOG_LEVEL}" $CELERYD_OPTS'
Restart=always[Install]
WantedBy=multi-user.target
在 /etc/conf.d/celery 中,可以粘贴:
CELERYD_NODES="w1 w2 w3"
DJANGO_SETTINGS_MODULE="climateserv2.settings"# Absolute or relative path to the 'celery' command:
CELERY_BIN="/cserv2/python_environments/conda/anaconda3/envs/climateserv2/bin/celery"# App instance to use
CELERY_APP="climateserv2"
CELERYD_MULTI="multi"# Extra command-line arguments to the worker
CELERYD_OPTS="--time-limit=300 --concurrency=8"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
CELERYD_LOG_FILE="/var/log/celery/%n%I.log"
Celery 使用一个临时目录,该目录需要在重启时自动创建。创建 /usr/lib/tmpfiles.d 并将以下内容粘贴到其中:
D /var/run/celery 0777 root root - -
手动创建此目录,以及其他几个目录:
sudo mkdir /var/run/celery
sudo chmod 777 /var/run/celery -Rsudo mkdir /opt/celery
sudo chmod 777 /opt/celerysudo mkdir /var/log/celery
sudo chmod 777 /var/log/celery -R
可以启用并启动 celery:
sudo chmod 644 /etc/systemd/system/celery.service
sudo systemctl daemon-reload
sudo systemctl enable celery
sudo service celery restart
开始应用程序设置:
python manage.py migrate
这将负责设置数据库。
运行前,需要创建一个超级用户:
python manage.py createsuperuser
启动应用程序:
python manage.py runserver
4 其他
web端还提供不同参数的统计计算以及不同数据的图层可视化:


参考:https://github.com/SERVIR/ClimateSERV2

相关文章:
气候服务平台ClimateSERV2.0简介(python)
1 简介 ClimateSERV 2.0允许开发从业者、科学家/研究人员和政府决策者可视化和下载历史降雨数据、植被状况数据以及 180 天的降雨和温度预报,以增进对农业和水资源供应相关问题的理解并做出改进的决策。 这些数据可以通过 Web 应用程序直接访问,也可以…...
Docker | centos7上对docker进行安装和配置
安装docker docker配置条件安装地址安装步骤2. 卸载旧版本3. yum 安装gcc相关4. 安装需要的软件包5. 设置stable镜像仓库6. 更新yum软件包索引7. 安装docker引擎8. 启动测试9. 测试补充:设置国内docker仓库镜像 10. 卸载 centos7安装docker https://docs.docker.com…...
React--》掌握Valtio让状态管理变得轻松优雅
Valtio采用了代理模式,使状态管理变得更加直观和易于使用,同时能够与React等框架无缝集成,本文将深入探讨Valtio的核心概念、使用场景以及其在提升应用性能中的重要作用,帮助你掌握这一强大工具,从而提升开发效率和用户…...
python爬虫百度图片
直接给代码,可直接用,个人需要修改的地方有两处: self.directory 这是本地存储地址,修改为自己电脑的地址,另外,**{}**不要删spider.json_count 10 这是下载的图像组数,一组有30张图像&#x…...
前端开发:Vue中数据绑定原理
Vue 中最大的一个特征就是数据的双向绑定,而这种双向绑定的形式,一方面表现在元数据与衍生数据之间的响应,另一方面表现在元数据与视图之间的响应,而这些响应的实现方式,依赖的是数据链,因此,要…...
CTF-RE 从0到N: TEA
TEA TEA(Tiny Encryption Algorithm,轻量加密算法) 是一种简单、快速的对称加密算法。它是一个分组加密算法,通常用于加密 64 位的数据块,并使用 128 位的密钥。TEA 是一种“费斯妥结构”(Feistel structu…...
python 使用PIL获取图片长宽
在Python中,你可以使用Pillow库(PIL的一个分支和替代品)来获取图片的长和宽。Pillow提供了丰富的图像处理功能,包括获取图像的基本属性,如尺寸。 以下是一个简单的示例,展示了如何使用Pillow库来获取图片的…...
【Nas】X-DOC:搞机之PVE部署All In One(黑群晖NAS 软路由OpenWrt Docker Win10远程桌面)
【Nas】X-DOC:搞机之PVE部署All In One(黑群晖NAS & 软路由OpenWrt & Docker & Win10远程桌面) 1、原硬件配置清单:2、改AIO后增加配置清单:3、虚拟化平台PVE:4、搭建的关键服务: 1…...
linux 驱动源码分析的理解。
首先 , 是linux 驱动,我看网上的老师,在分析源码时 , 不会 所有的函数都分析,而是分析一些比较重要的函数,一些厉害的人,在分析源码时…...
鸿蒙-任务栏右击退出 或 UIAbility窗口关闭,怎么弹框拦截
onPrepareToTerminate 需要配置权限 ohos.permission.PREPARE_APP_TERMINATE 参考链接:文档中心import { emitter } from kit.BasicServicesKit; import { common } from kit.AbilityKit; import { TipsDialog } from kit.ArkUI;// entryAbility.ets 在你的uiabilit…...
【C++进阶篇】——STL的简介
【C进阶篇】——STL的简介 1.什么是STL STL(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。 2.STL的版本 原始版本 Alexander Stepanov、Meng Lee 在…...
信息安全工程师(70)网络攻击陷阱技术与应用
前言 网络攻击陷阱技术是一种主动的防御方法,作为网络安全的重要策略和技术手段,有利于网络安全管理者获得信息优势。 一、网络攻击陷阱技术原理 网络攻击陷阱技术可以消耗攻击者所拥有的资源,加重攻击者的工作量,迷惑攻击者&…...
Web保存状态的手段(Session的使用)
一,JSP中的page指令 1. <% page language“java” session“true”%> session:此页面是否使用session,默认值为true 二,使用Session完善之前的登录程序 1. 如何禁止直接输入URL地址进入登录功能的欢迎界面? …...
第五十四章 安全元素的详细信息 - DerivedKeyToken 详情
文章目录 第五十四章 安全元素的详细信息 - <DerivedKeyToken> 详情详情消息中的位置 第五十四章 安全元素的详细信息 - 详情 <DerivedKeyToken> 的目的是携带发送者和接收者可以独立使用的信息来生成相同的对称密钥。这些方可以使用该对称密钥对 SOAP 消息的相关…...
kafka 的高可用机制是什么?
大家好,我是锋哥。今天分享关于【kafka 的高可用机制是什么?】面试题?希望对大家有帮助; kafka 的高可用机制是什么? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Apache Kafka 是一个分布式消息系统&am…...
4.1.3 网站通信技术
文章目录 1. 网站通信方式2. URL - 统一资源定位符定义格式演示 3. 发送请求的4种形式在地址栏中输入URL访问超链接href属性指定URLform表单在action中指定URL通过AJAX请求后端数据 4. 两种不同返回的请求发送URL,后端处理完响应页面发送AJAX请求,后端处…...
Java-图书管理系统
我的个人主页 欢迎来到我的Java图书管理系统,接下来让我们一同探索如何书写图书管理系统吧! 1管理端和用户端 2建立相关的三个包(book、operation、user) 3建立程序入口Main类 4程序运行 1.首先图书馆管理系统分为管理员端和…...
python如何通过json以及pickle读写保存数据
记录信息 比如说我写了这样一段程序,记录了爱吃的食物: food_list []while True:c input("输入1添加新的食物,输入2查询已添加的食物,输入exit退出:")if c "1":new_food input("输入你…...
【SPIE出版,EI检索稳定】2024年人机交互与虚拟现实国际会议(HCIVR 2024,11月15-17日)
2024年人机交互与虚拟现实国际会议(HCIVR 2024) 2024 International Conference on Human-Computer Interaction and Virtual Reality 官方信息 会议官网:www.hcivr.org 2024 International Conference on Human-Computer Interaction and …...
Linux vim编辑器
前言: 首先我们来了解一下什么是编辑器,通常我们在widow系统下例如C/C我们进行写代码时,我们通过vs2022等等编译器进行,这里的编译器是一种IDE(集成开发环境),集成开发环境是将代码编辑器、编译…...
别再手动调参了!用GCNet模块给你的ResNet模型一键注入全局感知能力(附PyTorch代码)
全局感知能力升级:用GCNet模块为ResNet模型注入高效注意力机制 在计算机视觉领域,ResNet架构因其出色的性能和稳定性成为众多任务的基准模型。然而,随着注意力机制的兴起,传统卷积神经网络在长距离依赖建模上的局限性逐渐显现。本…...
PCIe设备树深度解析:从RK3588实例看Linux内核地址与中断映射(九)
1. PCIe设备树基础概念与RK3588实战背景 第一次接触PCIe设备树配置时,我被那些密密麻麻的十六进制数字和嵌套属性搞得头晕眼花。直到在RK3588平台上实际调试PCIe设备时,才真正理解设备树如何成为连接硬件与操作系统的桥梁。PCIe设备树不同于普通外设的简…...
VRCT完全指南:在VRChat中打破语言障碍的终极解决方案
VRCT完全指南:在VRChat中打破语言障碍的终极解决方案 【免费下载链接】VRCT VRCT(VRChat Chatbox Translator & Transcription) 项目地址: https://gitcode.com/gh_mirrors/vr/VRCT VRCT(VRChat Chatbox Translator & Transcription&…...
中小企业SEO推广应该投入多少费用
<h2>中小企业SEO推广应该投入多少费用</h2> <p>在数字化时代,网络已经成为企业推广和销售的重要渠道之一。特别是对于中小企业来说,通过优化搜索引擎(SEO)来提升网站的自然流量,是非常有效且相对经济…...
CodeMaker:重新定义开发者效率的智能编码助手
CodeMaker:重新定义开发者效率的智能编码助手 【免费下载链接】CodeMaker A idea-plugin for Java/Scala, support custom code template. 项目地址: https://gitcode.com/gh_mirrors/co/CodeMaker 核心价值:告别重复编码,拥抱智能开发…...
SDMatte高清人像抠图作品集:影视级海报与创意合成的幕后利器
SDMatte高清人像抠图作品集:影视级海报与创意合成的幕后利器 1. 开篇:当AI遇见专业级人像抠图 想象一下这样的场景:电影海报需要将主演从绿幕背景中完美剥离,电商广告要把模特无缝融入不同场景,艺术创作需要将人物与…...
CanFestival主站PDO配置避坑指南:以Kinco FD伺服的速度/位置模式控制为例
CanFestival主站PDO配置实战:从零解析Kinco FD伺服双模式控制 当你在深夜的实验室里盯着屏幕上闪烁的CAN报文,却发现伺服电机对控制指令毫无反应时,那种挫败感每个工控开发者都深有体会。本文将带你穿透CanFestival主站配置的迷雾,…...
ROS2编译报错CMake未找到diagnostic_updater:从诊断工具缺失到精准安装
1. 当CMake告诉你找不到diagnostic_updater时发生了什么 第一次看到这个报错的时候,我也是一头雾水。明明代码是从GitHub上clone下来的标准功能包,怎么一编译就报错呢?那个红色的"CMake Error"特别扎眼,就像开车时突然亮…...
HUNYUAN-MT 7B翻译终端性能展示:并发请求压力测试与响应时间报告
HUNYUAN-MT 7B翻译终端性能展示:并发请求压力测试与响应时间报告 最近在星图GPU平台上部署了HUNYUAN-MT 7B翻译终端,很多朋友都好奇它的实际表现到底怎么样。特别是当多个用户同时使用时,它还能不能保持快速响应?会不会因为压力太…...
【技术突破】douyin-downloader:重新定义抖音内容采集效率的智能引擎
【技术突破】douyin-downloader:重新定义抖音内容采集效率的智能引擎 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser …...
