Skip to content

sijie-Z/GeoData-Security-System

Repository files navigation


GeoData-Security-System

矢量与栅格空间数据数字水印与溯源定责系统

通过不可见数字水印技术保障高价值地理空间数据安全,实现数据分发、使用、泄露溯源的全生命周期闭环管理

Vue 3 Flask Python OpenLayers MySQL PostGIS

快速开始核心特性技术架构应用场景目录结构


📖 项目简介

GeoData-Security-System 是一个针对高价值地理空间数据(矢量/栅格)分发场景的综合性安全管理与溯源定责系统

在现代 GIS 应用中,空间数据在跨部门共享和分发时面临着极大的泄露与盗用风险。本系统通过前沿的数字水印技术(空域/频域水印、LSB嵌入、二维码编码等),将用户的身份标识与审批信息隐蔽地嵌入至 Shp、GeoJSON 等格式的数据中。当发生数据泄露时,管理部门只需一键上传泄露文件,即可精准提取水印,锁定泄露源头,完成“精准溯源,依法定责”。

💡 为什么选择本系统?

  • 🛡️ 无感隐蔽嵌入:采用高鲁棒性算法,水印嵌入对原始地理空间数据的精度影响极小(低损/无损),且肉眼与常规工具无法察觉。
  • 🎯 一键溯源定责:无需复杂的比对流程,上传涉密/泄露文件即可自动反向解析出责任人专属的二维码及详细身份信息。
  • 🌍 2D/3D 一体化 GIS 引擎:内置基于 OpenLayers 与 Three.js 的前端渲染引擎,支持地球级、多维度的空间数据在线实时预览。
  • ⚖️ 严密审批工作流:内置基于角色的多级审批(一审/二审)机制,确保每一次数据分发都合法合规且留存审计日志。
  • 📊 全景数据大屏:基于 ECharts 打造的数据看板,实时监控资产总量、分发频次、系统状态及告警信息。

✨ 核心特性

🔐 核心:高鲁棒性数字水印引擎

  • 动态专属水印:在审批流转时,自动将使用者信息编码为加密二维码。
  • 多格式支持:兼容常见矢量格式(Shapefile, GeoJSON)及栅格影像格式。
  • 多算法融合:根据数据类型动态采用 LSB(最低有效位)、空域/频域算法进行水印的深度植入。
  • 抗攻击提取:即便数据经过轻微的裁剪、格式转换,仍能高概率提取完整溯源信息。

🗺️ GIS 空间数据可视化可视化

  • 在线预览:在浏览器端直接渲染庞大的矢量图层,支持属性表联动查询。
  • 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 插件,存储空间业务数据

步骤 1:数据库配置

  1. 在 MySQL 和 PostgreSQL 中分别创建数据库(如命名为 esri_test),具体建表脚本请参考 C1165安装及配置文件 目录。
  2. 修改后端入口文件 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'
}

步骤 2:启动后端服务

cd C1165开发源代码/项目后端/testrealend

# 推荐在虚拟环境中安装依赖
pip install -r requirements.txt

# 启动 Flask 服务 (默认端口 5000)
python app.py

✅ 看到 Running on http://127.0.0.1:5000 表示后端启动成功。

步骤 3:启动前端服务

cd C1165开发源代码/项目前端/testrealfrontol

# 安装 NPM 依赖
npm install

# 启动 Vite 开发服务器
npm run dev

✅ 浏览器访问控制台输出的本地地址(通常为 http://localhost:5173)。

步骤 4:访问与测试

请查看 C1165安装及配置文件/账号和密码.txt 获取测试账号。

  • 管理员账号:可体验审批流管理、数据溯源提取。
  • 员工账号:可体验地图数据浏览、发起下载申请。

💼 核心亮点 (简历/展示参考)

  • 空间水印算法创新:结合 GeoPandas 与自定义底层算法,实现了针对 Shp 矢量坐标的微小位移嵌入(空域)与傅里叶变换嵌入(频域),在不影响地图精度的前提下实现了责任人身份的高隐蔽绑定。
  • 复杂 GIS 前端渲染:突破传统表格展现形式,引入 OpenLayers 与 Three.js,实现几十兆矢量图层在 Web 端的流畅在线解析、渲染与 2D/3D 交互。
  • 双引擎数据驱动:系统采用 MySQL + PostgreSQL(PostGIS) 异构数据库双绑定的架构,完美分离了常规业务审批流与复杂空间拓扑数据的存储,提升了系统查询效率。
  • 企业级审批工作流:从发起申请 -> 一审 -> 二审 -> 动态实时打水印 -> 文件加密打包导出,实现了 GIS 资产安全分发的一键式、流程式闭环管理。

📚 项目文档与支持

更多深度原理与二次开发指引,请参阅根目录下的配套文档:

  • 📖 架构与算法设计:《C1165作品设计文档.docx》
  • 📝 系统功能综述:《C1165作品介绍文档.docx》
  • 🔧 生产环境部署:《C1165安装部署说明文档.docx》

🤝 贡献与反馈

本项目为 C1165 团队开发成果。 如果您在阅读源码或运行过程中遇到技术问题,欢迎提交 Issue 进行讨论!


如果本系统对你的科研、工作或学习有帮助,请点击 ⭐ Star 支持我们!

⬆ 回到顶部

About

一个针对于将矢量数据分发之后可以对数据进行溯源定责的系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages