坐标转换

v1.0.1

支持GeoJSON格式点、线、面数据在WGS84(经纬度)和Web Mercator(EPSG:3857)坐标系间批量转换。

0· 311· 1 versions· 0 current· 0 all-time· Updated 10h ago· MIT-0

Install

openclaw skills install gis-transform-coords

GIS 坐标转换 Skill

快速转换点、线、面数据的坐标系:WGS84(经纬度)↔ Web Mercator(EPSG:3857)

快速开始

转换 GeoJSON 到墨卡托

python3 ~/.openclaw/workspace/skills/gis-coord-transform/scripts/transform_coords.py input.geojson -t mercator -o output.geojson --pretty

转换墨卡托回经纬度

python3 ~/.openclaw/workspace/skills/gis-coord-transform/scripts/transform_coords.py input.geojson -t wgs84 -o output.geojson --pretty

支持的几何类型

类型说明
Point
LineString线
Polygon
MultiPoint多点
MultiLineString多线
MultiPolygon多面
FeatureGeoJSON 要素
FeatureCollection要素集合

命令行参数

参数说明
input输入 GeoJSON 文件路径
-o, --output输出文件路径(默认输出到 stdout)
-t, --to目标坐标系:mercatorwgs84
--pretty美化输出 JSON

使用示例

示例 1:转换单个点

// input.geojson
{
  "type": "Point",
  "coordinates": [116.4074, 39.9042]
}
python3 scripts/transform_coords.py input.geojson -t mercator

输出(墨卡托坐标):

{
  "type": "Point",
  "coordinates": [12958396.7, 4865942.3]
}

示例 2:转换 FeatureCollection

python3 scripts/transform_coords.py cities.geojson -t mercator -o cities_mercator.geojson --pretty

示例 3:批量转换

for file in *.geojson; do
  python3 scripts/transform_coords.py "$file" -t mercator -o "${file%.geojson}_mercator.geojson"
done

依赖安装

pip3 install pyproj

坐标系说明

坐标系EPSG 代码用途
WGS84EPSG:4326GPS、经纬度、地理坐标
Web MercatorEPSG:3857Web 地图(Google Maps、OpenStreetMap、Mapbox 等)

常见问题

为什么转换后坐标数字变大了?

Web Mercator 使用米为单位,而 WGS84 使用度。墨卡托坐标通常在百万级别。

转换精度如何?

使用 pyproj 库,精度非常高,适合专业 GIS 应用。

支持其他坐标系吗?

当前版本仅支持 WGS84 ↔ Web Mercator。如需其他坐标系,可扩展 pyproj.Transformer

扩展建议

需要添加其他坐标系转换时,修改脚本中的 Transformer 定义:

# 例如:WGS84 → CGCS2000 (EPSG:4490)
transformer = Transformer.from_crs("EPSG:4326", "EPSG:4490", always_xy=True)

相关文件

  • scripts/transform_coords.py - 坐标转换主脚本

Version tags

latestvk97e4jr1bdrsew34y74tz9as6982pr80