DYNAMOSTUDIOS/WIKIMAPIA-ARCHIVER

GitHub: DYNAMOSTUDIOS/WIKIMAPIA-ARCHIVER

一款地理数据归档引擎,用于从 Wikimapia 提取并保存多边形、元数据、照片和评论等社区地理知识为结构化离线数据集。

Stars: 1 | Forks: 0

Wikimapia Archiver Logo

Wikimapia Archiver

在世界地理记忆消失之前——将其保存下来。

!!! 目前正在开发的最全面的项目。!!!


![Python](https://img.shields.io/badge/Python-3.11+-3776AB?style=flat-square&logo=python&logoColor=white) ![SQLite](https://img.shields.io/badge/SQLite-storage-003B57?style=flat-square&logo=sqlite&logoColor=white) ![GeoJSON](https://img.shields.io/badge/GeoJSON-export-brightgreen?style=flat-square) ![Status](https://img.shields.io/badge/status-work%20in%20progress-orange?style=flat-square) ![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)
## 🌍 关于 [Wikimapia](https://wikimapia.org) 是一个协作地图项目,包含了**多年由社区创建、且在其他地方无法找到的地理知识**: | 数据类型 | 描述 | |---|---| | 🔷 手绘多边形 | 用户描绘的地点、区域和地标的边界 | | 📝 本地描述 | 母语注释和文化背景 | | 🕰️ 历史位置 | 在物理世界中可能已不复存在的地点 | | 💬 评论与注解 | 附加在地图对象上的社区讨论 | | 🏷️ 用户生成的元数据 | 标签、类别和自定义属性 | 本项目旨在以开放、结构化、可移植的格式**归档并保存**这些数据——使其能够比创建它的平台更长久地存在。 ## 🚧 项目状态 ### ✅ 当前功能 - [x] 多边形 / BBOX 地理扫描 - [x] Wikimapia API 集成 - [x] 对象详情提取 - [x] GeoJSON 导出 - [x] SQLite 归档存储 ### 🗺️ 计划功能 - [ ] 改进的对象发现算法 - [ ] 照片与图像归档 - [ ] 历史快照与差异追踪 - [ ] 可视化 / 渲染系统 - [ ] 离线归档查看器(独立应用) ## 🎯 目标 本项目围绕一个核心使命而构建:**地理知识保存**。 ``` 📦 Preserve geographic history 🛡️ Archive endangered metadata 📐 Store polygon geometry 💾 Build portable offline archives 🌐 Protect community-generated geographic knowledge ``` 我们坚信,由真实社区创造的地点知识,理应超越任何单一平台的寿命而留存下来。 ## ⚙️ 技术栈 | 层级 | 技术 | |---|---| | Runtime | Python 3.11+ | | 存储 | SQLite | | 导出格式 | GeoJSON | | 数据流水线 | 异步抓取流水线 | | 几何图形 | 多边形处理 | | 来源 | Wikimapia API | ## 🚀 快速开始 ### 前置条件 ``` python --version # 3.11 or higher required ``` ### 安装 ``` # 克隆仓库 git clone https://github.com/yourusername/wikimapia-archiver.git cd wikimapia-archiver # 创建虚拟环境 python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # 安装依赖 pip install -r requirements.txt ``` ### 配置 ``` cp .env.example .env # 编辑 .env 并添加您的 Wikimapia API key ``` ``` # .env WIKIMAPIA_API_KEY=your_api_key_here OUTPUT_DIR=./archives ``` ### 用法 ``` # 扫描 bounding box (lat_min, lon_min, lat_max, lon_max) python archiver.py scan --bbox 41.0,28.9,41.1,29.0 # 将归档数据导出为 GeoJSON python archiver.py export --format geojson --output ./output/istanbul.geojson # 查看归档统计信息 python archiver.py stats ``` ## 📁 项目结构 ``` wikimapia-archiver/ ├── archiver/ │ ├── __init__.py │ ├── api.py # Wikimapia API client │ ├── scanner.py # BBOX / polygon scanner │ ├── extractor.py # Object detail extractor │ ├── storage.py # SQLite archival layer │ └── exporter.py # GeoJSON / format exporters ├── assets/ # Logos, screenshots, banners ├── archives/ # Default output directory (gitignored) ├── tests/ ├── .env.example ├── requirements.txt └── README.md ``` ## 🗄️ 数据格式 ### GeoJSON 输出 ``` { "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [[[28.97, 41.01], [28.98, 41.01], [28.98, 41.02], [28.97, 41.01]]] }, "properties": { "id": 12345678, "title": "Hagia Sophia", "description": "Byzantine cathedral turned mosque...", "categories": ["religious", "historical"], "archived_at": "2025-01-15T10:30:00Z" } } ] } ``` ### SQLite Schema(简版) ``` CREATE TABLE objects ( id INTEGER PRIMARY KEY, title TEXT, description TEXT, geometry TEXT, -- GeoJSON polygon string tags TEXT, -- JSON array archived_at DATETIME DEFAULT CURRENT_TIMESTAMP ); ``` ## 📜 免责声明 ## 📄 许可证 MIT License — 详情请参阅 [`LICENSE`](./LICENSE)。
**出于对人们所爱之地——以及与之相关的记忆的关怀而构建。**
⭐ 如果您认为地理知识值得保存,请为本仓库点个 Star。
标签:GeoJSON, Python, SQLite, URL抓取, Wikimapia, 地理信息系统, 数据归档, 数据抓取, 无后门