Python: 将地图以公里为单位转换为度数
Python: Convert map in kilometres to degrees
我有一个包含几百万行的 pandas 数据框,根据 WGS 1984 世界墨卡托投影(使用 ArcGIS 创建),每行都有一个 X 和 Y 属性以及以千米为单位的位置。
在不离开 Python/pandas 环境的情况下,将这些点投影回度数的最简单方法是什么?
已经有一个名为 pyproj. I will agree it is actually not the simplest module to find via google. Some examples of its use can be seen here
的 python 模块可以为您进行此类转换
多年后,这就是我做这件事的方式。将所有东西都保存在 GeoPandas 中,以尽量减少 footguns 的可能性。
部分导入:
import pandas as pd
import geopandas as gpd
from shapely.geometry import Point
创建数据框(注意值必须以米为单位!)
df = pd.DataFrame({"X": [50e3, 900e3], "Y": [20e3, 900e3]})
根据 X/Y 坐标创建几何图形
df["geometry"] = df.apply(lambda row: Point(row.X, row.Y), axis=1)
转换为 GeoDataFrame,设置当前 CRS。
在本例中 EPSG:3857,问题的投影。
gdf = gpd.GeoDataFrame(df, crs=3857)
将其投影到标准 WGS84 CRS in degrees (EPSG:4326)。
gdf = gdf.to_crs(4326)
然后(可选)将 X/Y 坐标提取回标准列:
gdf["X_deg"] = gdf.geometry.apply(lambda p: p.x)
gdf["Y_deg"] = gdf.geometry.apply(lambda p: p.y)
我有一个包含几百万行的 pandas 数据框,根据 WGS 1984 世界墨卡托投影(使用 ArcGIS 创建),每行都有一个 X 和 Y 属性以及以千米为单位的位置。
在不离开 Python/pandas 环境的情况下,将这些点投影回度数的最简单方法是什么?
已经有一个名为 pyproj. I will agree it is actually not the simplest module to find via google. Some examples of its use can be seen here
的 python 模块可以为您进行此类转换多年后,这就是我做这件事的方式。将所有东西都保存在 GeoPandas 中,以尽量减少 footguns 的可能性。
部分导入:
import pandas as pd
import geopandas as gpd
from shapely.geometry import Point
创建数据框(注意值必须以米为单位!)
df = pd.DataFrame({"X": [50e3, 900e3], "Y": [20e3, 900e3]})
根据 X/Y 坐标创建几何图形
df["geometry"] = df.apply(lambda row: Point(row.X, row.Y), axis=1)
转换为 GeoDataFrame,设置当前 CRS。 在本例中 EPSG:3857,问题的投影。
gdf = gpd.GeoDataFrame(df, crs=3857)
将其投影到标准 WGS84 CRS in degrees (EPSG:4326)。
gdf = gdf.to_crs(4326)
然后(可选)将 X/Y 坐标提取回标准列:
gdf["X_deg"] = gdf.geometry.apply(lambda p: p.x)
gdf["Y_deg"] = gdf.geometry.apply(lambda p: p.y)