在中国常用的三种坐标系之间转换 —— WGS-84(GPS / 谷歌地球)、GCJ-02(火星坐标系,高德/腾讯)、BD-09(百度坐标系)。提供
记忆
geoskill-crs-transformation
试用基于 pyproj 的 EPSG 坐标参考系转换,内置 WGS84 / GCJ02 / BD09 互转,支持点集与矢量要素。EPSG coordinate reference system transformation via pyproj with built-in WGS84 / GCJ02 / BD09 conversions for point sets and vector features.
它能做什么
基于 pyproj 的 EPSG 坐标参考系转换,内置 WGS84 / GCJ02 / BD09 互转,支持点集与矢量要素。EPSG coordinate reference system transformation via pyproj with built-in WGS84 / GCJ02 / BD09 conversions for point sets and vector features.
技能文档
坐标系转换 | CRS Transformation
Two transformation paths:
- EPSG mode (default): strict transformation between arbitrary EPSG codes
based on the pyproj
Transformer(e.g., WGS84 4326 ↔ Web Mercator 3857, UTM zones), supporting whole-layer reprojection and batch point-set conversion with round-trip consistency. - China coordinate system mode: built-in analytical offset formulas (State Bureau of Surveying and Mapping algorithm, Krasovsky ellipsoid) for WGS-84 (GPS) ↔ GCJ-02 (Mars coordinates, AMap/Tencent) ↔ BD-09 (Baidu), where GCJ-02 → WGS-84 uses iterative inverse calculation with accuracy better than 1e-6 degrees; coordinates outside China are returned unchanged.
Suitable for GPS track correction, alignment with internet map coordinates,
and cross-CRS data registration. The --synthetic mode generates a random
point set within a bbox for offline demonstration.
Dependencies / 依赖
pip install numpy rasterio geopandas shapely fiona pyproj
Usage / 使用方法
Basic usage
python geoskill-crs-transformation.py --bbox 116.0 39.0 117.0 40.0 --synthetic --output-dir ./out
Example 1 (synthetic data, offline, EPSG 4326→3857)
python geoskill-crs-transformation.py --bbox 116.0 39.0 117.0 40.0 --synthetic --mode epsg --to-crs EPSG:3857 --output-dir ./mercator
Example 2: reproject a vector file to UTM 50N
python geoskill-crs-transformation.py --input sites.geojson --mode epsg --from-crs EPSG:4326 --to-crs EPSG:32650 --output-dir ./utm
Example 3: convert GPS coordinates (WGS84) to AMap coordinates (GCJ02)
python geoskill-crs-transformation.py --input gps_track.geojson --mode system --system-from wgs84 --system-to gcj02 --output-dir ./gcj
Example 4: convert Baidu coordinates (BD09) to GPS (WGS84)
python geoskill-crs-transformation.py --input bd_pois.geojson --mode system --system-from bd09 --system-to wgs84 --output-dir ./wgs
Example 5: synthetic point set GCJ02→BD09
python geoskill-crs-transformation.py --bbox 116.0 39.0 117.0 40.0 --synthetic --mode system --system-from gcj02 --system-to bd09 --output-dir ./bd --quiet
Output / 输出
| File | Format | Description |
|---|---|---|
transformed.geojson | GeoJSON | Transformed features |
transformation_report.json | JSON | Transformation parameters and sampled before/after coordinates |
output-manifest.json | JSON | Run manifest |
Data Source / 数据源 / Source
--input: local vector file (points/any geometry)--synthetic: random point set generated locally- The offset formulas are public algorithms; no external service dependency
Privacy / 隐私声明 / Privacy
- Runs offline by default;
--syntheticmode requires no network at all. - All processing is performed locally; user data is never uploaded.
License / License
MIT
name: geoskill-crs-transformation description: '基于 pyproj 的 EPSG 坐标参考系转换,内置 WGS84 / GCJ02 / BD09 互转,支持点集与矢量要素。EPSG coordinate reference system transformation via pyproj with built-in WGS84 / GCJ02 / BD09 conversions for point sets and vector features.'
坐标系转换 | CRS Transformation
两条转换路径:
- EPSG 模式(默认):基于 pyproj
Transformer在任意 EPSG 代码之间 严格转换(如 WGS84 4326 ↔ Web Mercator 3857、UTM 分带),支持整图层 重投影与点集批量转换,往返一致。 - 中国坐标系模式:内置 WGS-84(GPS)↔ GCJ-02(火星坐标,高德/腾讯) ↔ BD-09(百度)的解析加偏公式(国测局算法,克拉索夫斯基椭球),其中 GCJ-02 → WGS-84 用迭代反算,精度优于 1e-6 度;中国境外坐标原样返回。
适合 GPS 轨迹纠偏、互联网地图坐标对齐、跨坐标系数据配准。--synthetic
模式在 bbox 内生成随机点集做离线演示。
依赖
pip install numpy rasterio geopandas shapely fiona pyproj
使用方法
基本用法
python geoskill-crs-transformation.py --bbox 116.0 39.0 117.0 40.0 --synthetic --output-dir ./out
示例 1(合成数据,离线,EPSG 4326→3857)
python geoskill-crs-transformation.py --bbox 116.0 39.0 117.0 40.0 --synthetic --mode epsg --to-crs EPSG:3857 --output-dir ./mercator
示例 2:矢量文件重投影到 UTM 50N
python geoskill-crs-transformation.py --input sites.geojson --mode epsg --from-crs EPSG:4326 --to-crs EPSG:32650 --output-dir ./utm
示例 3:GPS 坐标(WGS84)转高德坐标(GCJ02)
python geoskill-crs-transformation.py --input gps_track.geojson --mode system --system-from wgs84 --system-to gcj02 --output-dir ./gcj
示例 4:百度坐标(BD09)转 GPS(WGS84)
python geoskill-crs-transformation.py --input bd_pois.geojson --mode system --system-from bd09 --system-to wgs84 --output-dir ./wgs
示例 5:合成点集 GCJ02→BD09
python geoskill-crs-transformation.py --bbox 116.0 39.0 117.0 40.0 --synthetic --mode system --system-from gcj02 --system-to bd09 --output-dir ./bd --quiet
输出
| 文件 | 格式 | 说明 |
|---|---|---|
transformed.geojson | GeoJSON | 转换后的要素 |
transformation_report.json | JSON | 转换参数与抽样前后坐标 |
output-manifest.json | JSON | 运行清单 |
数据源 / Source
--input:本地矢量文件(点/任意几何)--synthetic:本地生成随机点集- 加偏公式为公开算法,无外部服务依赖
隐私声明 / Privacy
- 默认离线运行,
--synthetic模式完全无网络。 - 所有处理在本地完成,不上传用户数据。
License
MIT
相关技能
基于 GDAL / OGR 批量转换栅格与矢量格式 (GeoTIFF / Shapefile / GeoPackage / GeoJSON) 并记录日志。Batch convert raster and vector formats (GeoTIFF / Shapefile / GeoPackage / GeoJSON) via GDAL / OGR with logging.
对矢量数据做变更检测、版本快照与差异比较,支持 commit / diff / log 操作。Change detection, version snapshots and diff comparison for vector data with commit / diff / log operations.
Explain, compare, and choose geographic coordinate reference systems and map projections, including CRS selection, EPSG codes, datum differences, axis order,...
Transfer map styles via color mapping and histogram matching with style templates
用最近邻 / 双线性 / 三次卷积改变栅格分辨率,输出重采样后的 GeoTIFF 与统计。Resample raster resolution with nearest / bilinear / cubic convolution and emit a GeoTIFF plus statistics.