subzero-starter-kit 项目教程

subzero-starter-kit 项目教程

subzero-starter-kit Starter Kit and tooling for authoring GraphQL/REST API backends with subZero subzero-starter-kit 项目地址: https://gitcode.com/gh_mirrors/su/subzero-starter-kit

1. 项目的目录结构及介绍

subzero-starter-kit/
├── db/
│   ├── src/
│   │   ├── authorization/
│   │   │   └── privileges.sql
│   │   └── init.sh
│   └── migrations/
├── .env
├── docker-compose.yml
└── README.md

目录结构介绍

  • db/: 数据库相关文件夹,包含数据库的初始化脚本和迁移文件。
    • src/: 数据库源代码文件夹,包含数据库的初始化脚本和权限配置。
      • authorization/: 权限配置文件夹,包含数据库权限相关的SQL文件。
        • privileges.sql: 数据库权限配置文件。
      • init.sh: 数据库初始化脚本。
    • migrations/: 数据库迁移文件夹,包含数据库的迁移脚本。
  • .env: 项目的配置文件,包含Docker和subzero-cli的配置。
  • docker-compose.yml: Docker Compose配置文件,用于定义和运行多容器Docker应用程序。
  • README.md: 项目说明文件,包含项目的简介和使用说明。

2. 项目的启动文件介绍

docker-compose.yml

docker-compose.yml 文件是用于定义和运行多容器Docker应用程序的配置文件。通过该文件,可以一键启动项目所需的所有服务。

version: '3.7'
services:
  db:
    image: postgres:12
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    volumes:
      - ./db/src:/docker-entrypoint-initdb.d
    ports:
      - "5432:5432"

db/src/init.sh

init.sh 是数据库的初始化脚本,用于在数据库容器启动时执行初始化操作。

#!/bin/bash

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
  CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
  CREATE EXTENSION IF NOT EXISTS "pgcrypto";
EOSQL

3. 项目的配置文件介绍

.env

.env 文件是项目的配置文件,包含Docker和subzero-cli的配置。

# Docker specific configs
# use only letters and numbers for the project name
COMPOSE_PROJECT_NAME=subzerostarterkit

# subzero-cli custom settings
# the default diff tool to use when generating migrations
SQL_DIFF_TOOL=migra

# we have a custom log_line_prefix to facilitate log parsing/filtering for subzero-cli
# this is configured in db/src/init.sh
DB_LOG_LINE_MARKER=SBZ

# we want to include only log lines from this "application" (database client)
# FILTER_DB_APP_NAME=subzero

配置文件介绍

  • COMPOSE_PROJECT_NAME: Docker Compose项目的名称,用于唯一标识项目。
  • SQL_DIFF_TOOL: 用于生成数据库迁移的差异工具,默认使用migra
  • DB_LOG_LINE_MARKER: 数据库日志行标记,用于日志解析和过滤。
  • FILTER_DB_APP_NAME: 过滤数据库客户端日志的应用名称,可选配置。

subzero-starter-kit Starter Kit and tooling for authoring GraphQL/REST API backends with subZero subzero-starter-kit 项目地址: https://gitcode.com/gh_mirrors/su/subzero-starter-kit

要画出(100,25)到(120,36)的航线图,需要先找到这两个点在数据中对应的位置。可以通过以下方式计算: ```python # 获取经纬度数据 lon = data.variables['XLONG'][0] lat = data.variables['XLAT'][0] # 找到最接近给定经纬度的索引值 start_lon_idx = np.abs(lon[0] - 100).argmin() start_lat_idx = np.abs(lat[:, 0] - 25).argmin() end_lon_idx = np.abs(lon[0] - 120).argmin() end_lat_idx = np.abs(lat[:, 0] - 36).argmin() ``` 然后,可以使用Matplotlib中的`plot`函数绘制两个点之间的直线: ```python fig, ax = plt.subplots(figsize=(12, 8)) # 绘制温度和过冷水分布 cf = ax.contourf(x, y, t_2d, cmap='coolwarm') cbar = plt.colorbar(cf) ax.contour(x, y, overcooled_water_grid, colors='green', linewidths=1) # 绘制航线 ax.plot([start_lon_idx, end_lon_idx], [start_lat_idx, end_lat_idx], color='red', linewidth=2) ax.set_title("Temperature and Overcooled Water Distribution") ax.set_xlabel("Longitude") ax.set_ylabel("Latitude") cbar.ax.set_ylabel('Temperature (K)', rotation=270, labelpad=15) plt.show() ``` 完整代码如下: ```python import netCDF4 as nc import numpy as np import matplotlib.pyplot as plt filename = r'C:\Users\24759\.spyder-py3\wrfout_d01_2020-08-20_02_00_00 (1)' data = nc.Dataset(filename) temperature = data.variables['T'][:] qrain = data.variables['QRAIN'][:] qcloud= data.variables['QCLOUD'][:] subzero_temperature = temperature < 273 overcooled_water = np.logical_and(subzero_temperature, np.logical_or(qcloud > 0, qrain > 0)) t_2d = temperature[0, 0, :, :] overcooled_water_grid = np.zeros_like(t_2d, dtype=bool) overcooled_water_grid[overcooled_water[0, 0, :, :]] = True # 获取经纬度数据 lon = data.variables['XLONG'][0] lat = data.variables['XLAT'][0] # 找到最接近给定经纬度的索引值 start_lon_idx = np.abs(lon[0] - 100).argmin() start_lat_idx = np.abs(lat[:, 0] - 25).argmin() end_lon_idx = np.abs(lon[0] - 120).argmin() end_lat_idx = np.abs(lat[:, 0] - 36).argmin() fig, ax = plt.subplots(figsize=(12, 8)) # 绘制温度和过冷水分布 cf = ax.contourf(x, y, t_2d, cmap='coolwarm') cbar = plt.colorbar(cf) ax.contour(x, y, overcooled_water_grid, colors='green', linewidths=1) # 绘制航线 ax.plot([start_lon_idx, end_lon_idx], [start_lat_idx, end_lat_idx], color='red', linewidth=2) ax.set_title("Temperature and Overcooled Water Distribution") ax.set_xlabel("Longitude") ax.set_ylabel("Latitude") cbar.ax.set_ylabel('Temperature (K)', rotation=270, labelpad=15) plt.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戴玫芹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值