• Python中的反距离加权插值


    地理空间插值是用于使用已知值估计地理区域中未知点的值的过程。

    逆距离加权,或简称 IDW,是用于地理空间数据插值的最流行的方法之一。本文将讲述如何在 Python中进行 IDW 插值。

    IDW 插值方法假设更接近的值比更远的值更相关。IDW 通过使用已知值与要估计值的点的距离加权来估计未知点的值。

    1. import numpy as np
    2. def idw_custom(dist,val,power):
    3.     numerator=np.sum(val/(dist**power))
    4.     weights=np.sum(1/(dist**power))
    5.     return numerator/weights
    6. dist=np.array([1.38,3.04,7.36,7.59,9.67])
    7. val=np.array([17.7,15.7,34.3,6.3,23.3])
    8. print(idw_custom(dist,val,1))

    分子包含已知值的总和除以距离,分母包含距离倒数的总和。幂可以用来控制已知值的影响。

    使用内置库执行 IDW 插值

    在上面的示例中,我们使用了预先计算的距离,但在大多数实际用例中,我们必须自己计算距离。我们可以使用haversine距离来计算它,但是当我们有很多点时,这可能很麻烦。这是我们可以使用预先存在的库来计算距离并执行插值的地方。

    在我们的示例中,我们将从班加罗尔市的空气质量数据中插入 PM2.5 值。

    1. grid_space = 0.01
    2. grid_lon = np.arrange(np.amin(lons), np.amax(lons), grid_space)
    3. grid_lat = np.arrange(np.amin(lats), np.amax(lats), grid_space)

    让我们首先生成一个需要估计值的点网格。我们设置了大约 1 公里的网格空间。

    “lons”包含经度列表,“lats”包含纬度列表。我们使用经度和纬度的最小值和最大值生成了网格。

    1. all_lats = np.meshgrid(grid_lon, grid_lat)[1].ravel()
    2. all_lons = np.meshgrid(grid_lon, grid_lat)[0].ravel()
    3. itrp=pd.DataFrame()
    4. itrp['lat']=all_lats
    5. itrp['lng']=all_lons

    在上面的代码中,我们创建了一个数据框,其中包含我们需要估计值的纬度和经度对。我们也可以使用'for循环'来做同样的事情,如下面的代码所示。

    1. lat=[]
    2. lng=[]
    3. for i in range(len(grid_lat)):
    4. for j in range(len(grid_lon)):
    5. lat.append(grid_lat[i])
    6. lng.append(grid_lon[j])
    7. itrp=pd.DataFrame()
    8. itrp['lat']=lat
    9. itrp['lng']=lng

    我们可以使用 Sklearn 的 KNN 实现来模拟 IDW。下面给出了执行此操作的代码。

    “样本”数据帧包含单个时间戳的车站空气质量数据。我们将经纬度作为解释变量,将 PM2.5 作为需要插值的变量。我们应该使用“kd_tree”作为算法,并将“n_neighbors”设置为站数,在本例中为 8。我们还应该将“权重”设置为执行 IDW 的距离。

    将使用 predict 方法来估计存储在 itrp 数据帧中的网格点的值。

    我们现在将加载一些 shapefile 来帮助我们可视化插值结果。

  • 相关阅读:
    用Unity同时开发【微信小游戏】【安卓】【IOS】游戏#5.5.2 组件拓展
    足球比赛系统的设计
    一文看懂推荐系统:经典双塔模型:微软DSSM模型(Deep Structured Semantic Models),无特征交互,后来美团改进了
    高级深入--day29
    浅析Linux SCSI子系统:错误恢复
    我的创作纪念日
    小白看了也会选:数据分析的常见工具有哪些
    Python---数据容器分类及通用操作
    开发工具箱 —— it-tools
    Wireshark 4.0.0 新版本发布
  • 原文地址:https://blog.csdn.net/wouderw/article/details/127698486