将底图投影作为 numpy 数组

Getting a Basemap projection as a numpy array

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

我有一个地理域,其中包含一定数量的纬度和经度。使用这些,我能够绘制域的简单底图:

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 lats 和 200 lons,就会有 20000 个 1 和 0。我想知道是否有某种方法可以将 Basemap 对象转换为数组,但未能实现。可能吗?

提前致谢!

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

.mask returns 一个布尔数组。

mpl_toolkits.basemap.maskoceans(lonsin, latsin, datain, inlands=True, resolution='l', grid=5)

returns a masked array the same shape as datain with “wet” points masked.

Basemap documentation

Numpy Masked Array Documentation