# moon-shapefile 项目申报书

## 基本信息
项目名称：Moon Shapefile：Shapefile 地理数据读写与转换库  
参赛者：马昀昀  
联系方式：1498657823@qq.com  
GitHub 仓库链接：https://github.com/liyun6666/moon-shapefile  
项目方向：MoonBit 地理数据交换基础库 / GIS 数据处理  
是否为移植项目：否；依据公开格式独立实现，参考 PyShp 的公开读写行为。

## 项目简介
本项目使用 MoonBit 实现 SHP 几何、SHX 索引和 DBF 属性表的联合读写，为行政区边界导入、设施点位筛选、测绘数据交换及 GeoJSON 转换提供基础库。已有二进制解析、几何模型、属性表和转换实现；本阶段重点完善边界校验、可复现测试、中文文档及发布交付，采用字节级解析、类型化数据模型和结构化错误组织实现。

## 核心功能范围
- 支持 Null、Point、MultiPoint、PolyLine、Polygon 及 Z/M 变体的 SHP/SHX 读写与索引访问；
- 支持 DBF 字符、数值、浮点、日期和逻辑字段，保留删除标记及几何与属性的物理行对应；
- 提供长度、偏移、坐标及数据集一致性校验，支持边界框和属性筛选；
- 支持 GeoJSON 导入导出与多边形环校验，提供公开 API、中文 README 和测试复现步骤。

## 移植或参考说明
参考项目名称：PyShp；来源：https://github.com/GeospatialPython/pyshp；许可证：MIT。  
本项目许可证：MIT。SHP/SHX 布局依据《ESRI Shapefile Technical Description》，不包含 PyShp 源码；参考范围及来源见 THIRD_PARTY.md。首版不含投影转换、MultiPatch、DBF Memo、网络或 ZIP 读取。

## 验收说明
- 工程验收：执行 `moon check --deny-warn`、`moon test --deny-warn`、`moon build --target wasm-gc`，均须成功；GitHub Actions 自动执行检查、测试和构建。
- 正常输入验收：对各支持类型执行读写往返，断言几何、Z/M 值、属性、删除标记及索引对应；对筛选和 GeoJSON 转换断言结果，而非仅检查程序退出。
- 异常输入验收：截断文件、非法偏移、非有限坐标、字段溢出和错误多边形环须被拒绝；相关断言包含在可重复运行的测试中。
- 交付验收：公开源码、MIT 许可证、中文使用文档与验收步骤齐全，并发布 `liyun6666/moon-shapefile` 至 Mooncakes；以实际运行结果和发布页面核验，不以代码行数或测试数量代替正确性。
