专栏名称: GISer last
GISer last 公众号 主要以分享互联网数据资源为主。也分享过GIS、FME等技术教程方法。我个人对于大数据资源、可视化制作、地图制图等方面有很大兴趣,也会分享个人的一些应用和教程。
目录
相关文章推荐
中国基金报  ·  重大重组,复牌! ·  15 小时前  
中国基金报  ·  华为,AI大消息! ·  昨天  
中国基金报  ·  “元宇宙第一股”,暴跌! ·  2 天前  
哔哩哔哩  ·  用300天从零制作游戏,最后上架Steam ·  2 天前  
中国基金报  ·  这家“独角兽”与OpenAI“分手”了! ·  3 天前  
51好读  ›  专栏  ›  GISer last

DeepSeek进行坐标转换,我真的大写的服!

GISer last  · 公众号  ·  · 2025-02-06 22:07

正文

我们的互联网上获取的数据点位的坐标信息,
其实都是加了偏移的坐标,
例如高德的火星坐标(GCJ02)、百度的BD09等,
所以,直接加载点位数据后,
会有明显的偏移。

例如,我加载了一个居民点位数据,
可以看到明细偏差,
甚至都偏出了行政区界线!


于是我向DeepSeek发出了请求:


数据是高德火星坐标,写个在ArcGIS Pro中运行的python代码,实现高德火星坐标转为CGCS2000的地理坐标


DeepSeek进行了长时间的系统深度思考:


首先明确需求:

首先,高德使用的是GCJ-02坐标系,而CGCS2000类似于WGS84,但可能存在细微差别。不过通常转换时,可能直接当作WGS84处理。所以需要找到GCJ-02到WGS84的转换算法,或者是否有现成的库可以用。不过ArcGIS Pro的Python环境可能没有这些库,所以可能需要自己实现转换算法。

然后考虑可行性:

接下来,我需要确定转换算法的正确性。GCJ-02的加密算法是公开的吗?我记得有一些开源项目实现了逆向转换,比如在GitHub上的某些项目。可能需要查找相关的Python代码,将其集成到脚本中。比如,是否有现成的函数可以将GCJ-02转换为WGS84?或者是否需要使用第三方库如coordTransform_py?

但考虑到用户希望代码在ArcGIS Pro中运行,可能不希望安装额外的库,所以最好自己实现转换算法。这样用户不需要额外安装依赖,工具会更易用。

注意对细节的把控:

需要注意,转换后的坐标是地理坐标系(WGS84或CGCS2000),可能需要设置输出坐标系为CGCS2000的地理坐标系,例如EPSG:4490或EPSG:4326(虽然4326是WGS84,但4490是CGCS2000)。不过实际上,CGCS2000和WGS84在大部分情况下坐标差异很小,可能用户需要确认具体需求。这里可能需要明确转换后的坐标系参数。

另外,坐标转换可能涉及点、线、面等不同几何类型,所以脚本需要处理各种几何类型,递归转换每个顶点的坐标。

......

给了我一段代码:

我把这段代码直接放到了ArcGIS Pro里面运行,
于是,真的转换成功了:
点位实现了移动,
整体看上去,
都在行政区划里面了。



具体到某个点位来看下,
就会发现,
还是很准的,
我真是大写的服!




系统学习更多的GIS实用内容,

点击“ 阅读原文 ”或识别下方二维码,

进入学院,成为老铁会员,

数百节实用课程免费畅学!









请到「今天看啥」查看全文