矢量与栅格空间数据数字水印与溯源定责系统
通过不可见数字水印技术保障高价值地理空间数据安全,实现数据分发、使用、泄露溯源的全生命周期闭环管理
GeoData-Security-System 是一个针对高价值地理空间数据(矢量/栅格)分发场景的综合性安全管理与溯源定责系统。
在现代 GIS 应用中,空间数据在跨部门共享和分发时面临着极大的泄露与盗用风险。本系统通过前沿的数字水印技术(空域/频域水印、LSB嵌入、二维码编码等),将用户的身份标识与审批信息隐蔽地嵌入至 Shp、GeoJSON 等格式的数据中。当发生数据泄露时,管理部门只需一键上传泄露文件,即可精准提取水印,锁定泄露源头,完成“精准溯源,依法定责”。
- 🛡️ 无感隐蔽嵌入:采用高鲁棒性算法,水印嵌入对原始地理空间数据的精度影响极小(低损/无损),且肉眼与常规工具无法察觉。
- 🎯 一键溯源定责:无需复杂的比对流程,上传涉密/泄露文件即可自动反向解析出责任人专属的二维码及详细身份信息。
- 🌍 2D/3D 一体化 GIS 引擎:内置基于 OpenLayers 与 Three.js 的前端渲染引擎,支持地球级、多维度的空间数据在线实时预览。
- ⚖️ 严密审批工作流:内置基于角色的多级审批(一审/二审)机制,确保每一次数据分发都合法合规且留存审计日志。
- 📊 全景数据大屏:基于 ECharts 打造的数据看板,实时监控资产总量、分发频次、系统状态及告警信息。
- 动态专属水印:在审批流转时,自动将使用者信息编码为加密二维码。
- 多格式支持:兼容常见矢量格式(Shapefile, GeoJSON)及栅格影像格式。
- 多算法融合:根据数据类型动态采用 LSB(最低有效位)、空域/频域算法进行水印的深度植入。
- 抗攻击提取:即便数据经过轻微的裁剪、格式转换,仍能高概率提取完整溯源信息。
- 在线预览:在浏览器端直接渲染庞大的矢量图层,支持属性表联动查询。
- 2D/3D 切换:支持二三维场景的无缝切换,提供沉浸式的地理空间数据审查体验。
- 管理员控制台:掌握全局资产、执行水印嵌入/提取、人员权限分配及两级审批流控。
- 员工申请端:可视化的资产目录浏览,标准化的申请表单,审批通过后自动下载加密打包(.zip)的安全数据。
| 场景类别 | 具体应用痛点与解决方案 | 适用单位 |
|---|---|---|
| 🏛️ 政务共享 | 解决委办局之间数据共享时的权责不清问题,实现“谁申请、谁负责”。 | 测绘局、自然资源厅 |
| 🛡️ 军工涉密 | 涉密高精度地形图、影像图下发部队或科研院所,防范外部泄密。 | 军工企业、涉密机构 |
| 🏢 企业交易 | 商业地图数据、自动驾驶高精地图数据售卖,防止客户二次非法倒卖。 | 图商、自动驾驶企业 |
| 🏫 科研教研 | 内部实验数据共享给学生或外部团队,保护核心科研知识产权。 | 高校、科研院所 |
┌─────────────────────────────────────────────────────────┐
│ 前端展示层 (Frontend) │
│ Vue 3 + Vite + Element Plus + Pinia │
│ • 2D/3D GIS引擎 (OpenLayers/Three.js) • ECharts 大屏 │
└────────────────────┬────────────────────────────────────┘
│ RESTful API / JWT 认证
┌────────────────────┴────────────────────────────────────┐
│ 后端服务层 (Backend) │
│ Python 3 + Flask │
│ • Flask-RESTful • 多级审批流控制 • JWT-Extended 鉴权 │
└────────────────────┬────────────────────────────────────┘
│ 数据流 & 算法调用
┌────────────────────┴────────────────────────────────────┐
│ 核心算法层 (Algorithms) │
│ • GeoPandas/PyShp: 空间数据解析与操作 │
│ • Watermark Engine: 矢量频域/空域水印、栅格LSB嵌入提取 │
│ • qrcode/Pillow: 二维码生成与图像处理 │
└────────────────────┬────────────────────────────────────┘
│
┌────────────────────┴────────────────────────────────────┐
│ 数据存储层 (Data & Storage) │
│ • MySQL: 存储用户流、审批流、业务日志 │
│ • PostgreSQL + PostGIS: 存储高精空间数据与拓扑关系 │
└─────────────────────────────────────────────────────────┘
| 领域 | 技术选型 | 说明 |
|---|---|---|
| 前端 | Vue 3 + Vite | 采用 Composition API,极速构建工具 |
| 状态/路由 | Pinia + Vue Router | 轻量级状态管理与单页应用路由 |
| GIS组件 | OpenLayers + Three.js | 承载大规模空间数据的 2D/3D 渲染 |
| UI/图表 | Element Plus + ECharts | 现代化组件库与数据可视化大屏支持 |
| 后端框架 | Flask + Flask-RESTful | 轻量、灵活的 Python Web 服务 |
| ORM库 | SQLAlchemy + GeoAlchemy2 | 兼顾关系型业务数据与 GIS 空间数据操作 |
| 空间数据处理 | GeoPandas, Shapely, PyShp | 强大的底层矢量/几何数据读写与拓扑计算库 |
| 数据库 | MySQL 8.x + PostgreSQL | 业务库(MySQL)与 空间库(PostGIS)双驱动 |
GeoData-Security-System/
├── C1165作品过程及成果截图/ # 📸 系统演示图集(登录、大屏、审批、溯源等)
├── C1165安装及配置文件/ # ⚙️ 环境配置说明、测试账号密码本
├── C1165相关数据/ # 🗺️ 项目配套测试用 GIS 数据集
├── C1165作品介绍与设计文档/ # 📚 核心文档库 (架构设计、原理说明、部署手册)
└── C1165开发源代码/ # 💻 核心源码
├── 项目前端/
│ └── testrealfrontol/ # Vue3 前端工程
│ ├── src/
│ │ ├── api/ # Axios 接口统一封装
│ │ ├── components/ # 公共业务组件
│ │ ├── router/ # 权限路由拦截与配置
│ │ ├── stores/ # Pinia 全局状态
│ │ └── views/ # 页面级视图 (审批大厅、资产库、溯源中心等)
│ └── package.json
└── 项目后端/
└── testrealend/ # Flask 后端工程
├── algorithm/ # 🧠 水印生成、嵌入、提取、坐标转换等核心算法
├── common/ # 工具类与全局常量
├── model/ # SQLAlchemy 数据库映射模型
├── resource/ # 业务逻辑控制器 (API 资源)
├── requirements.txt # Python 依赖清单
└── app.py # Flask 服务启动入口
| 依赖软件 | 版本要求 | 说明 |
|---|---|---|
| Node.js | v16+ | 包含 npm 工具 |
| Python | 3.10+ | 推荐使用 Anaconda 或 venv 虚拟环境 |
| MySQL | 8.0+ | 存储基础业务数据 |
| PostgreSQL | 12+ | 需安装 PostGIS 插件,存储空间业务数据 |
- 在 MySQL 和 PostgreSQL 中分别创建数据库(如命名为
esri_test),具体建表脚本请参考C1165安装及配置文件目录。 - 修改后端入口文件
C1165开发源代码/项目后端/testrealend/app.py中的数据库连接串:
# 生产环境建议通过 .env 环境变量注入,此处为开发配置示例
app.config['SQLALCHEMY_BINDS'] = {
'mysql_db': 'mysql+mysqldb://root:你的MySQL密码@127.0.0.1/esri_test',
'postgres_db': 'postgresql://postgres:你的PG密码@127.0.0.1/esri_test'
}cd C1165开发源代码/项目后端/testrealend
# 推荐在虚拟环境中安装依赖
pip install -r requirements.txt
# 启动 Flask 服务 (默认端口 5000)
python app.py✅ 看到 Running on http://127.0.0.1:5000 表示后端启动成功。
cd C1165开发源代码/项目前端/testrealfrontol
# 安装 NPM 依赖
npm install
# 启动 Vite 开发服务器
npm run dev✅ 浏览器访问控制台输出的本地地址(通常为 http://localhost:5173)。
请查看 C1165安装及配置文件/账号和密码.txt 获取测试账号。
- 管理员账号:可体验审批流管理、数据溯源提取。
- 员工账号:可体验地图数据浏览、发起下载申请。
- 空间水印算法创新:结合 GeoPandas 与自定义底层算法,实现了针对 Shp 矢量坐标的微小位移嵌入(空域)与傅里叶变换嵌入(频域),在不影响地图精度的前提下实现了责任人身份的高隐蔽绑定。
- 复杂 GIS 前端渲染:突破传统表格展现形式,引入 OpenLayers 与 Three.js,实现几十兆矢量图层在 Web 端的流畅在线解析、渲染与 2D/3D 交互。
- 双引擎数据驱动:系统采用 MySQL + PostgreSQL(PostGIS) 异构数据库双绑定的架构,完美分离了常规业务审批流与复杂空间拓扑数据的存储,提升了系统查询效率。
- 企业级审批工作流:从发起申请 -> 一审 -> 二审 -> 动态实时打水印 -> 文件加密打包导出,实现了 GIS 资产安全分发的一键式、流程式闭环管理。
更多深度原理与二次开发指引,请参阅根目录下的配套文档:
- 📖 架构与算法设计:《C1165作品设计文档.docx》
- 📝 系统功能综述:《C1165作品介绍文档.docx》
- 🔧 生产环境部署:《C1165安装部署说明文档.docx》
本项目为 C1165 团队开发成果。 如果您在阅读源码或运行过程中遇到技术问题,欢迎提交 Issue 进行讨论!
如果本系统对你的科研、工作或学习有帮助,请点击 ⭐ Star 支持我们!