Wikimapia Archiver
在世界地理记忆消失之前——将其保存下来。
!!! 目前正在开发的最全面的项目。!!!





## 🌍 关于
[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。