【python】经纬度坐标(以度为单位)转换为经纬度(度分秒为单位)

最近在处理数据的过程中,偶然遇到了经纬度转换的问题,如下所示,获取的GPS数据是以度为单位的,但是突然想将其转化为以度分秒为单位的数据,遂写点代码作为记录

在这里插入图片描述

###############################################################
# 将以度为单位的经纬度(N*2)转化为以度分秒为单位的经纬度(N*3)
# input:latlon.xlsx    output:GPS.xlsx
###############################################################
import openpyxl  # 处理Excel的包

f = openpyxl.load_workbook("D:\Data\latlon.xlsx")  # 打开源文件
out_f = openpyxl.Workbook()  # 创建输出Excel
table1 = out_f.active
table1.title = 'success'  # 创建输出的sheet名称

# 写入表头
title = ['LONGITUDE', 'LATITUDE', 'LABEL']
for i in range(3):
    table1.cell(row=1, column=i + 1, value=title[i])

sheet1 = f['Sheet1']  # 存储数据表头
ncols = sheet1.max_row
s = 2
for i in range(1, ncols + 1):
    N = sheet1.cell(row=i, column=1).value  # 获取原坐标
    E = sheet1.cell(row=i, column=2).value
    tempN = str(int(N)) + "°" + str(int((N - int(N)) * 60)) + "'" + str(
        (((N - int(N)) * 60) - int((N - int(N)) * 60)) * 60) + "''" + ' ' + 'N'  # 坐标转换
    tempE = str(int(E)) + "°" + str(int((E - int(E)) * 60)) + "'" + str(
        (((E - int(E)) * 60) - int((E - int(E)) * 60)) * 60) + "''" + ' ' + 'E'
    label = i

    table1.cell(row=s, column=2, value=tempN)
    table1.cell(row=s, column=1, value=tempE)
    table1.cell(row=s, column=3, value=label)
    s += 1

out_f.save("D:\Data\GPS.xlsx")  # 保存文件

在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Python中,可以使用一些库和算法将经纬度坐标转换为大地坐标。 首先,需要安装pyproj这个库,它是一个地理坐标转换库。可以使用以下命令来安装: ``` pip install pyproj ``` 安装完成后,我们可以使用pyproj来进行经纬度和大地坐标转换。下面是一个简单的示例代码: ```python from pyproj import Proj # 定义坐标系 wgs84 = Proj(proj='latlong', datum='WGS84') # 经纬度坐标 lon = 120 lat = 30 # 将经纬度坐标转换为大地坐标 x, y = wgs84(lon, lat) # 输出大地坐标 print("大地坐标 x:", x) print("大地坐标 y:", y) ``` 在上面的代码中,我们首先定义一个wgs84对象,它代表了WGS84坐标系,也就是常见的经纬度坐标系。 然后,我们给出一个经度和纬度的值,通过调用wgs84对象并传入经纬度值,就可以得到对应的大地坐标。最后,我们可以通过打印语句来输出大地坐标。 这样,你就可以使用Python经纬度坐标转换为大地坐标了。当然,pyproj库还支持更多的坐标转换方式,你可以根据具体需求来进行调整。 ### 回答2: 在Python中,可以使用第三方库pyproj来实现经纬度和大地坐标之间的转换。 首先,需要安装pyproj库。可以通过在终端或命令提示符中运行以下命令来安装: ``` pip install pyproj ``` 安装完毕后,就可以在Python中使用该库来进行转换了。 下面是一个简单的示例,演示如何将经纬度转换为大地坐标: ```python from pyproj import CRS, Transformer def lat_lon_to_geodetic(lat, lon): # 定义输入坐标的参考系统为WGS84的经纬度 wgs84 = CRS.from_epsg(4326) # 定义输出坐标的参考系统为WGS84的大地坐标 geodetic = CRS.from_epsg(4978) # 创建一个转换器 transformer = Transformer.from_crs(wgs84, geodetic) # 执行转换 x, y, z = transformer.transform(lon, lat, 0) # 返回大地坐标 return x, y, z # 输入经纬度的值 lat = 40.7128 lon = -74.0060 # 调用函数进行转换 x, y, z = lat_lon_to_geodetic(lat, lon) print("大地坐标:") print("X:", x) print("Y:", y) print("Z:", z) ``` 上述代码中,我们创建了一个转换器对象,将WGS84的经纬度坐标系定义为输入参考系统,将WGS84的大地坐标系定义为输出参考系统。然后,我们使用转换器的transform方法将经纬度转换为大地坐标。最后,打印输出转换后的大地坐标。 ### 回答3: Python可以使用第三方库pyproj来实现经纬度到大地坐标转换。 首先,您需要在Python中安装pyproj库。您可以使用pip命令来进行安装,如下所示: ```python pip install pyproj ``` 安装完成后,您可以在Python脚本中导入pyproj库,并使用其Proj类来定义坐标转换对象。以下是一个示例代码,展示如何将经纬度转换为大地坐标: ```python from pyproj import Proj def convert_geodetic_to_geocentric(latitude, longitude): # 定义WGS84大地坐标系 geodetic = Proj('+proj=latlong +datum=WGS84') # 定义大地坐标的投影 geocentric = Proj('+proj=geocent +datum=WGS84') # 将经纬度转换为大地坐标 x, y, z = transform(geodetic, geocentric, longitude, latitude, 0, radians=False) return x, y, z # 示例:将纬度40°N、经度100°E转换为大地坐标 latitude = 40 longitude = 100 x, y, z = convert_geodetic_to_geocentric(latitude, longitude) print('大地坐标(X,Y,Z):', x, y, z) ``` 在上述代码中,我们首先定义了WGS84大地坐标系和大地坐标的投影。然后,使用transform函数将经纬度转换为大地坐标,并返回转换后的坐标值。 请注意,此示例仅展示了将经纬度转换为大地坐标的过程。如果您需要具体的坐标转换方案,请根据您所使用的大地坐标系,在Proj类初始化时传入具体的参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值