Skip to main content

Self-hosted vector tile map server — PMTiles + MapLibre GL JS with Chinese fuzzy search

Project description

SinoTiles

自托管矢量瓦片地图服务 — PMTiles + MapLibre GL JS 一键启动,带中文模糊搜索与企业银行分析。

PyPI License

安装

pip install siontiles       # 基础安装
pip install siontiles[geo]  # 含 CNAPS 就近银行分析

特性

  • 零配置启动 — 一个脚本,浏览器打开即用
  • 外部数据目录 — PMTiles 和 POI 数据独立存放,通过 config.env 配置
  • PMTiles 矢量瓦片 — 单文件存储,支持 HTTP Range 按需加载
  • 中文模糊搜索 — Bigram Jaccard + 字符集预筛选,支持换序匹配,支持联动企业搜索
  • 13 层样式 — 道路、水系、建筑、公交站、红绿灯、收费站等
  • 联动企业图层 — 810 家企业点位,含银行距离分析,点击查看详情弹窗
  • 企业分析弹窗 — 银行机构统计、账户清单、基本户/就近/外省标签、驾车距离
  • 一键复制 Markdown — 弹窗内 📋 按钮将企业分析数据复制为 Markdown 表格
  • 暗色模式 — 🌙/☀️ 一键切换,地图、面板、弹窗、zoom 控件全适配
  • 全国 z12 图层 — 支持 Protomaps 全国高精度瓦片(z0-12),多数据源切换
  • 最近银行分析 — 非就近账户显示最近同银行网点名称和距离
  • 跨省判定修复 — 城市→省份映射表,省对省精确比较;境外企业自动识别;银行名提取城市回退
  • 国界/省界/十段线 — 省界细虚线 + 陆上国界粗实线 + 十段线粗虚线,8 大边境区域经纬度可配
  • 海岸线不画国界 — 14 个沿海省份海岸线自动剔除,land_border_zones.json 按经纬度配置
  • 自定义 POI — 独立 GeoJSON 源,GCJ-02 自动转 WGS-84
  • 185K+ 地名索引 — 搜索响应毫秒级
  • 暗色模式标签适配 — 基本户/就近/外埠标签暗底亮字

快速开始

# 1. 安装
pip install siontiles

# 2. 配置数据路径(环境变量)
export SIONTILES_PMTILES_DIR=~/path/to/pmtiles
export SIONTILES_POI_DIR=~/path/to/poi

# 3. 启动
siontiles serve
# 浏览器打开 http://localhost:8765

配置

编辑 config.env 或通过环境变量覆盖:

变量 默认值 说明
SIONTILES_PORT 8765 服务端口
SIONTILES_PMTILES_DIR ~/NutstoreFiles/8-MyData/GeoData/pmtiles PMTiles 瓦片目录
SIONTILES_POI_DIR ~/NutstoreFiles/8-MyData/GeoData/poi POI 数据目录

命令行覆盖:SIONTILES_PORT=9999 ./start.sh

目录结构

├── config.env                  # 配置文件(数据路径、端口)
├── web/
│   ├── index.html              # 前端 (MapLibre + 搜索 + 企业弹窗)
│   ├── style.json              # 地图样式(亮色)
│   ├── style-dark.json         # 地图样式(暗色)
│   ├── server.py               # HTTP 服务器 (Range + gzip + 路由映射)
│   ├── start.sh                # 启动脚本
│   ├── search_index.json.gz    # 预构建搜索索引 (~2.6MB)
│   ├── convert_poi.py          # POI 坐标转换 (GCJ-02→WGS-84)
│   └── dedup_enterprise.py     # 企业数据去重修复工具
│
├── $SIONTILES_PMTILES_DIR/     # ← 外部 PMTiles 目录
│   └── *.pmtiles
│
└── $SIONTILES_POI_DIR/         # ← 外部 POI 目录
    ├── custom-poi_wgs84.geojson      # 自定义 POI (WGS-84)
    ├── geo_enterprise_wgs84.geojson  # 企业分析数据 (WGS-84)
    └── geo_bank_branch_wgs84.geojson # 银行网点原始数据 (WGS-84)

Server 内部路由:

  • /pmtiles/*$SIONTILES_PMTILES_DIR
  • /poi/*$SIONTILES_POI_DIR
  • 其他 → web/

技术栈

组件 方案
瓦片格式 PMTiles v4
地图渲染 MapLibre GL JS v4.7
HTTP 服务 Python 3 (Range + gzip)
搜索算法 Bigram Jaccard 相似度
坐标转换 GCJ-02 → WGS-84 (内置)
企业分析 Parquet → GeoJSON (Haversine + 驾车距离)

企业数据更新

# 1. 重建企业分析(需要 Excel 司库账户数据 + 高德 API Key)
cd ~/NutstoreFiles/8-MyData/GeoData/poi
python3 rebuild_bank_analysis.py

# 2. 复制为 server 读取的文件名
cp geo_enterprise_analysis_wgs84.geojson geo_enterprise_wgs84.geojson
gzip -k -f geo_enterprise_wgs84.geojson

# 3. 去重 + 修复 n_nearest
cd /path/to/SionTiles/web
python3 dedup_enterprise.py

# 4. CNAPS 就近分析(标记 isNearestBranch,自动验证)
cd /path/to/SionTiles
python scripts/update_bank_branches.py

# 5. 部署到现网(脚本运行后会提示具体命令)
cp geo_enterprise_wgs84.geojson geo_enterprise_wgs84.geojson.backup-$(date +%Y%m%d)
cp geo_enterprise_updated_wgs84.geojson geo_enterprise_wgs84.geojson

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

siontiles-0.3.1.tar.gz (3.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

siontiles-0.3.1-py3-none-any.whl (3.1 MB view details)

Uploaded Python 3

File details

Details for the file siontiles-0.3.1.tar.gz.

File metadata

  • Download URL: siontiles-0.3.1.tar.gz
  • Upload date:
  • Size: 3.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for siontiles-0.3.1.tar.gz
Algorithm Hash digest
SHA256 851cd68f996403d4d7478719d766517f57e7ba773cdcbcf396cc16ee6acbca77
MD5 932482205e8f63b4ac575e65a20ec8c9
BLAKE2b-256 927a3694b0b5bfd9acaad1ce57fd20f7ca8de769a59d76e7f967e0c5a8cc0040

See more details on using hashes here.

File details

Details for the file siontiles-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: siontiles-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 3.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for siontiles-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b69459f485bfd180cbc4b227ba039ee17d5d833bf60ef6a5661d29a781077334
MD5 30b0e2f36f6e96938300096035530456
BLAKE2b-256 e60abc91904c48a8a5b7568a6435f5d23c6a458bc16d01b84b8ede9144e138c6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page