Files
mayihua e9f87fc693 feat: CoordConverter 坐标转换套件 v1.0.0
TXT / Excel(CSV) / SHP 三种格式任意互转
支持 WGS84 / CGCS2000 / Xian80 / Beijing54 / Web Mercator 坐标系转换

由 Mapo 🗺️ 自动生成
2026-07-29 12:49:08 +08:00

58 lines
1.8 KiB
Python

#!/usr/bin/env python3
"""
CoordConverter CLI — standalone command-line interface.
"""
import argparse
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from converter.workflow import ConversionWorkflow
from core.coord_transform import CoordTransformer
def build_parser() -> argparse.ArgumentParser:
p = argparse.ArgumentParser(prog="coord-converter", description="坐标转换工具")
sub = p.add_subparsers(dest="command")
# convert
cp = sub.add_parser("convert", help="转换单个文件")
cp.add_argument("input", help="输入文件路径")
cp.add_argument("-o", "--output", required=True, help="输出文件路径")
cp.add_argument("--from-crs", default="auto", help="源坐标系 EPSG (默认 auto)")
cp.add_argument("--to-crs", default="EPSG:4490", help="目标坐标系 EPSG (默认 CGCS2000)")
cp.add_argument("--output-format", default="auto", help="强制输出格式")
# list-crs
lp = sub.add_parser("list-crs", help="列出支持的坐标系")
return p
def main():
parser = build_parser()
args = parser.parse_args()
if args.command == "convert":
wf = ConversionWorkflow()
result = wf.run(
input_path=args.input,
output_path=args.output,
from_crs=args.from_crs if args.from_crs != "auto" else None,
to_crs=args.to_crs,
output_format=args.output_format,
)
print(f"✅ 转换完成: {result['output']}")
print(f" 记录数: {result['feature_count']}")
print(f" 坐标系: {result['crs']}")
elif args.command == "list-crs":
for crs in CoordTransformer.list_supported():
print(f" {crs['name']:16s} {crs['epsg']:12s} {crs['desc']}")
else:
parser.print_help()
if __name__ == "__main__":
main()