将像素 x,y 坐标转换为 wgs84
convert pixel x,y coordinates to wgs84
我有 2 个相同对象的数据集,但都是在不同的坐标系中获得的。一个是从图像 [像素数据] 中获得的坐标,因此坐标是相对于图像的。另一个系统是WGS84系统。
我需要转换图像像素系统中的点,方法是使用 python 将它们映射到 WGS84 系统中相应的相对点。
我掌握的信息如下:
图片数据格式为:
pixIndex X Y R G B
1 0 0 227 227 227
2 1 0 237 237 237
3 2 0 0 0 0
4 3 0 232 232 232
5 4 0 233 233 233
... ... ... ... ... ... ...
原始数据:
我该如何进行这种转换?等角投影应该没问题,我不需要它在墨卡托坐标中。
在 python atm 上不是很强大,我看了这个,但不确定如何在 python 中这样做:
Convert latitude/longitude point to a pixels (x,y) on mercator projection
感谢任何帮助:) 谢谢!
如果您 link 的转换公式正确(尤其是评论 Convert latitude/longitude point to a pixels (x,y) on mercator projection 中的这个)
然后:
import pandas as pd
import numpy as np
import math
from io import StringIO
df = pd.read_csv(StringIO(""" pixIndex X Y R G B
1 0 0 227 227 227
2 1 0 237 237 237
3 2 0 0 0 0
4 3 0 232 232 232
5 4 0 233 233 233"""), sep="\s+")
mapWidth = df["X"].max()
mapHeight = df["Y"].max()
x = df["X"]
y = df["Y"]
df["Lon"] = ((360 * x) / mapWidth) - 180
df["Lat"] = 90 * (-1 + (4 * np.arctan(np.power(math.e, (math.pi - (2 * math.pi * y) / mapHeight)))) / math.pi)
哪个输出(样本数据中Y全0)
pixIndex X Y R G B Lon Lat
0 1 0 0 227 227 227 -180.0 NaN
1 2 1 0 237 237 237 -90.0 NaN
2 3 2 0 0 0 0 0.0 NaN
3 4 3 0 232 232 232 90.0 NaN
4 5 4 0 233 233 233 180.0 NaN
不确定转换过程的有效性,只是修改了公式。
我有 2 个相同对象的数据集,但都是在不同的坐标系中获得的。一个是从图像 [像素数据] 中获得的坐标,因此坐标是相对于图像的。另一个系统是WGS84系统。
我需要转换图像像素系统中的点,方法是使用 python 将它们映射到 WGS84 系统中相应的相对点。
我掌握的信息如下:
图片数据格式为:
pixIndex X Y R G B
1 0 0 227 227 227
2 1 0 237 237 237
3 2 0 0 0 0
4 3 0 232 232 232
5 4 0 233 233 233
... ... ... ... ... ... ...
原始数据:
我该如何进行这种转换?等角投影应该没问题,我不需要它在墨卡托坐标中。
在 python atm 上不是很强大,我看了这个,但不确定如何在 python 中这样做:
Convert latitude/longitude point to a pixels (x,y) on mercator projection
感谢任何帮助:) 谢谢!
如果您 link 的转换公式正确(尤其是评论 Convert latitude/longitude point to a pixels (x,y) on mercator projection 中的这个) 然后:
import pandas as pd
import numpy as np
import math
from io import StringIO
df = pd.read_csv(StringIO(""" pixIndex X Y R G B
1 0 0 227 227 227
2 1 0 237 237 237
3 2 0 0 0 0
4 3 0 232 232 232
5 4 0 233 233 233"""), sep="\s+")
mapWidth = df["X"].max()
mapHeight = df["Y"].max()
x = df["X"]
y = df["Y"]
df["Lon"] = ((360 * x) / mapWidth) - 180
df["Lat"] = 90 * (-1 + (4 * np.arctan(np.power(math.e, (math.pi - (2 * math.pi * y) / mapHeight)))) / math.pi)
哪个输出(样本数据中Y全0)
pixIndex X Y R G B Lon Lat
0 1 0 0 227 227 227 -180.0 NaN
1 2 1 0 237 237 237 -90.0 NaN
2 3 2 0 0 0 0 0.0 NaN
3 4 3 0 232 232 232 90.0 NaN
4 5 4 0 233 233 233 180.0 NaN
不确定转换过程的有效性,只是修改了公式。