# vtile **Repository Path**: parselife/vtile ## Basic Information - **Project Name**: vtile - **Description**: (COG) 实时栅格切片服务 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-06-16 - **Last Updated**: 2026-04-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: COG, WMTS, xyz, GIS ## README # vtile > 最新版本: `1.3.6` ## 更新日志 `v1.3.6` - 增加配置项 `Cache > Enable`,用于控制是否开启缓存,默认开启,默认缓存时间为 1 天 默认采用内存缓存 `v1.3.5` - 完善`gdb`图层导入接口,支持指定数据库的 `schema` `v1.3.4` - 增加 cog 转换接口, `/cog/extra/translate` `v1.3.3` - 重构`conf.ini`结构,修复因为设置 `API_BASE_PREFIX` 导致的 `basic auth`失效问题 `v1.3.2` - 增加配置项 `API_BASE_PREFIX`, 用于适配接口到`nginx`反向代理的场景 ## 特性 - GeoTiff 瓦片服务 支持多波段 - 获取 GeoTIFF 指定波段的统计信息 - 统计指定波段中等于特定值的像素个数 - 读取 GeoTIFF 文件有效数据范围(4326 坐标系) - 读取 FileGDB 文件元数据信息 - 读取 FileGDB 指定图层要素 GeoJSON 格式 - 读取 FileGDB 指定图层并入库到 postgis - ... ## 开发 > 说明:开发环境以为 `MacOS M2` 为例 1. 安装 `conda` 创建 python3.11+ 环境 > 注:vscode 点击右下角的 python 版本 进行选择切换到 `python311` 的环境即可 > 终端使用 `conda activate python311` 来激活环境 > conda 下需要安装 pg 相关驱动等 `conda install -c conda-forge gdal libgdal postgresql` (MacOS 为例) 2. 安装依赖 ```shell python -m pip install -r requirements.txt ``` conda 安装依赖包: ```shell conda install xxxx ``` 3. 运行 ```shell python main.py ``` 4. 编译&发布 - 生成 requiremenets.txt 文件: `python -m pip freeze > requirements.txt` - 更新版本号 - 打包发布:运行 `image-build.sh` 输入版本号 自动发布镜像 ## 运行 在生产环境运行,推荐用 `docker` 环境. ```shell docker pull registry.cn-hangzhou.aliyuncs.com/piesat-public/vtile:1.3.6 docker run -d -p 8891:8891 -v /data/tiff:/app/data --name=vtile --restart=unless-stopped registry.cn-hangzhou.aliyuncs.com/piesat-public/vtile:1.3.6 ``` > 指定 cpu 和内存: docker run -m 16g --cpus 16 ... ### 1. API 在线文档 - swagger: `http://localhost:8891/{API_BASE_PREFIX}/docs` - redoc: `http://localhost:8891/{API_BASE_PREFIX}/redoc` ### 2. 使用说明 - colormap 语法示例:[[[2,3],[155,237,77,255]],[[4,6],[22,37,194,255]],[[7,11],[0,255,0,255]]] ([2,3]包含左边数值,不包含右边数值) - rescale 参数: 当波段值不在 0-255 范围内时 必须设置该参数值 ,否则无法正确显示颜色 示例: min,max - cog tiff 使用步骤参考: - 利用 `/statistics` 获取波段统计信息 - 利用 `/tilejson.json` 获取 `xyz` 地址以及显示范围信息 (若波段值范围不在 0-255 内,则需要指定 `rescale` 参数 以及 `bidx` 参数,需要前后对应上) - 添加 `url` 到 `vmap` 地图中 ### 3. 性能优化 1. 指定 容器的 cpu 和内存 尽量给大一些 2. 在 nginx 层做缓存 ```lua proxy_cache_path /mnt/kty/data/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=10g use_temp_path=off; location /vtile { proxy_cache my_cache; proxy_cache_valid 200 43200m; # 时间可根据实际情况调整 proxy_cache_key $request_uri; # 根据请求uri 做缓存 add_header Nginx-Cache-Status 'Cached'; # 添加自定义头 proxy_pass http://ip:8991; } ``` 3. 在第二步基础上,nginx 做 gzip 压缩 ```lua gzip on; gzip_static on; gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png font/ttf font/x-woff; ``` **服务器配置预估** 1. 省级范围数据: 最低:16 核 + 32G 优选:32 核 + 64G 2. 市县级范围数据: 最低:8 核 + 16G 优选: 16 核 + 32G ### 配置文件说明 > PORT: 接口服务端口号,默认是 8891 > LOG_LEVEL: 日志级别 默认是 INFO > DATA_PATH: 数据目录,默认是容器中的 data 注意在运行容器时 需要映射宿主机的数据目录到容器中 > WORKER_NUM: 运行线程数 默认 1 > BASIC_AUTH: 用于控制 /docs /redoc 接口文档的访问权限 > API_BASE_PREFIX: 用于适配接口到 nginx 反向代理的场景,默认是 '' > Cache > Enable: 是否开启缓存 默认是 1 开启