【发布时间】:2021-12-11 03:52:00
【问题描述】:
我想使用品脱将度数(地理 CRS 中的距离)转换为海里。
https://geopandas.org/docs/reference/api/geopandas.GeoDataFrame.sjoin_nearest.html 以度为单位输出 epsg:4326 的距离。
鉴于赤道到两极的距离(以纳米为单位)不同,我不确定这是否可行。
我可以使用 1 度 ~= 111 公里 ~= 60 海里的经验法则。
也许可以使用起点和距离来计算,例如:https://github.com/anitagraser/movingpandas/blob/master/movingpandas/geometry_utils.py#L38
这段代码也很有用:https://geopy.readthedocs.io/en/stable/#module-geopy.distance
这里有一些代码要测试:
import pandas as pd
import geopandas as gpd
df = pd.DataFrame({"lon": [0], "lat": [0]})
gdf_pt = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df["lon"], df["lat"]), crs="epsg:4326")
df2 = pd.DataFrame({"lon": [1, 2], "lat": [0, 0]})
gdf_pts = gpd.GeoDataFrame(df2, geometry=gpd.points_from_xy(df2["lon"], df2["lat"]), crs="epsg:4326")
value = gdf_pt.sjoin_nearest(gdf_pts, distance_col="distances")["distances"].values[0]
import pint
l = value * ureg.arcdegree
【问题讨论】: