根据坐标(纬度、经度)创建坐标网格,并比较位于该网格内的指标的平均值与 file2 的坐标

问题描述 投票:0回答:0

我有 2 个文件,每个文件有 3 列 - 纬度、经度和值。这两个文件包含的坐标可能非常接近,但不完全相等,因此无法进行一对一的比较。因此,根据我的理解,理想的方法应该是针对每个坐标(例如 10 x 10m)创建一个虚拟矩形或多边形边界,并比较其他文件中位于该边界内的所有坐标的值。

我不需要在地图或图表上显示任何内容。我只需要简单的表格比较。

我尝试做下面的事情。这会将坐标分组到 1 个文件中,并且可以对第二个文件执行相同的操作,但同样,分组的值不相同,因此我无法使用此方法比较这两个文件。

   step = 0.0002
    to_bin = lambda x: np.floor(x / step) * step
    df_temp["latBin"] = to_bin(df_temp.Latitude)
    df_temp["lonBin"] = to_bin(df_temp.Longitude)
    groups = df.groupby(["latBin", "lonBin"])

` 然后我尝试了下面的方法,从坐标转换为 x,y 系统,但仍然是同样的问题。

  def apply_fun (raw):
    x,y,_,_ = utm.from_latlon(raw['Latitude'],raw['Longitude']) 
    return str(np.round(x/20))+"|"+str(np.round(y/20))


    x = df_temp.apply(lambda row : apply_fun(row),axis=1)
    df_temp.insert(3,'Group',x)

    gdf = df_temp.groupby(['Group']).agg({"Latitude":["mean"],"Longitude":["mean","count"],"thp":   ["mean"]})
    gdf = gdf.reset_index().drop(columns=['Group'],level=0)
    gdf.columns = [' '.join(col) for col in gdf.columns]`

我的目标基本上是对文件 1 中位于 10x10 米边界内的所有坐标进行分组,并将文件 2 中位于该边界内的坐标与文件 1 的每个坐标进行比较。

希望我清楚需要什么。

这里需要您的指导和支持,谢谢

python pandas coordinates geospatial geopandas
© www.soinside.com 2019 - 2024. All rights reserved.