Python 将直角坐标转换为极坐标

利用python实现直角坐标转换为极坐标。

import numpy as np
import pandas as pd

'''
将经纬度转换为极坐标
'''

df = pd.read_csv('data.csv')

# 纬度latitude,经度longitude
loc_x = df['latitude'].values
loc_y = df['longitude'].values


# 将直角坐标转换为极坐标,可以用坐标中最小的点为极点,也可以用(0,0)为极点
# 半径
def get_radius(x, y):
    r = np.sqrt((x - x_min) ** 2 + (y - y_min) ** 2)
    # r = np.sqrt((x **2+y **2))
    return r


# 角度
def get_angle(x, y):
    a = np.arctan((y - y_min) / (x - x_min)) * 180 / np.pi
    # a = np.arctan(y / x * 180 / np.pi)
    return a


# 将最小的点设为极点
x_min = df['latitude'].values.min()
y_min = df['longitude'].values.min()

radius = []
angle = []

for x, y in zip(loc_x, loc_y):
    radius.append(get_radius(x, y))
    angle.append(get_angle(x, y))

radius = np.array(radius)
angle = np.array(angle)

# 保留小数点后8位
df['radius'] = radius.round(decimals=8)
df['angle'] = angle.round(decimals=8)

注意:在有些数据中,经纬度会以负数的形式存在,用来区分东西经度和南北纬度的,需要考虑进去。可以先取绝对值,然后在进行坐标变换。

你可能感兴趣的:(Python 将直角坐标转换为极坐标)