【问题标题】:Getting a Basemap projection as a numpy array将底图投影作为 numpy 数组获取
【发布时间】:2025-12-27 03:30:07
【问题描述】:

这一定是可能的,但我不确定如何处理它。

我有一个地理域,具有一定数量的纬度和经度。使用这些,我可以绘制一个简单的域底图:

fp_mhd = name.footprints('path/to/file')
domain_lon = fp_mhd.lon
domain_lat = fp_mhd.lat


### Construct Basemap ###
m = Basemap(resolution='c',projection='gall', 
            llcrnrlat=(np.min(domain_lat)), 
            urcrnrlat=(np.max(domain_lat)),
            llcrnrlon=(np.min(domain_lon)),
            urcrnrlon=(np.max(domain_lon)))

我需要以某种方式区分该域内的国家和海洋,并将结果作为数组返回,即 1 表示陆地,0 表示海洋(尽管这些值无关紧要)。该数组需要是二维的,其中每个点对应于特定的纬度和经度。假设有 100 个纬度和 200 个经度,就会有 20000 个 1 和 0。我想知道是否有某种方法可以将 Basemap 对象转换为数组,但未能实现这一点。有可能吗?

提前致谢!

【问题讨论】:

  • 什么是底图?你用什么包来绘图?您需要哪些数据来区分国家/地区的海洋,以及如何使用这些数据?

标签: python numpy matplotlib-basemap


【解决方案1】:

看看下面的函数。您应该能够提取掩码,因为它返回一个 numpy 掩码数组。

.mask 返回一个布尔数组。

mpl_toolkits.basemap.maskoceans(lonsin, latsin, datain, inlands=True, 分辨率='l', 网格=5)

返回一个形状与 datain 相同的带有“湿”点的掩码数组 蒙面。

Basemap documentation

Numpy Masked Array Documentation

【讨论】: