GeoCoordinates输出中的经度符号不正确
我正在写一个Python脚本,用来处理地理坐标,使用的是GeoCoordinates这个类。这个类的功能是把经纬度从小数度转换成度、分、秒(DMS)格式,反之亦然。不过,我遇到了一个问题,就是输出的经度符号不对。当我用坐标lat=40.7775和long=-122.41639创建一个对象时,正确的经度输出应该是40°46′39″N 122°24′59″W,但我得到的是40°46′39″N -122°24′59″W。
def convert_lat_long_to_dms(self, lat: float, long: float):
lat_deg = int(lat)
lat_min = int((lat - lat_deg) * 60)
lat_sec = round((lat - lat_deg - lat_min / 60) * 3600)
lat_dir = 'S' if lat < 0 else 'N'
long_deg = int(long)
long_min = int((long - long_deg) * 60)
long_sec = round((long - long_deg - long_min / 60) * 3600)
long_dir = 'W' if long < 0 else 'E'
return f"{lat_deg}°{lat_min:02}′{lat_sec:02}″{lat_dir} {long_deg}°{abs(long_min):02}′. {abs(long_sec):02}″{long_dir}"
1 个回答
2
这是对hmn Falahi的一个简短跟进,因为我没有足够的声望来评论。
在返回语句中给lat_min
和lat_sec
加上abs()函数。如果lat = -40.7775
和long = -122.41639
,那么convert_lat_long_to_dms函数会返回40°-46′-39″S 122°24′59″W
,因为lat_min和lat_sec仍然是负值。