Например, я хотел бы сопоставить форму Северной Атлантического океана с глобальной сеткой с разрешением 0,1 градуса (см. код ниже). Можно ли каким-то образом получить координаты созданного мной многоугольника и сопоставить их с массивом Grid в коде?
Шейп-файл взят из https://marineregions.org/downloads.php «Глобальные океаны и моря».
Код: Выделить всё
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection
from matplotlib.patches import PathPatch
import numpy as np
idir = "shp.files"
ifn = "goas_v01"
ifp = "{0:s}/{1:s}".format(idir,ifn)
sres = 0.1
decim = int(-np.log10(sres))
lat_grid = np.arange( -90, 90+sres,sres).round(decim)
lon_grid = np.arange(-180,180 ,sres).round(decim)
lat_size = len(lat_grid)
lon_size = len(lon_grid)
grid = np.zeros((lat_size,lon_size))
mapargs = {
"llcrnrlon" :-180 ,
"urcrnrlon" : 180 ,
"llcrnrlat" : -90 ,
"urcrnrlat" : 90 ,
"projection":"cyl",
"lat_0" : 0 ,
"lon_0" : 0 ,
}
fig,ax = plt.subplots(1,1)
patches = []
map = Basemap(**mapargs)
map.drawmapboundary()
map.drawcoastlines()
shpf = map.readshapefile("{0:s}".format(ifp),"{0:s}".format(ifn),drawbounds = False)
infos = map.goas_v01_info
shps = map.goas_v01
msize = len(infos)
trg_nm = "North Atlantic Ocean"
for m in range(msize):
info = infos [m]
rngnum = info ["RINGNUM"]
nm = info ["name"]
shp = shps [m]
if (nm == trg_nm and rngnum == 1):
patches.append(Polygon(np.array(shp), closed=True))
ax.add_collection(PatchCollection(patches, facecolor= 'm', edgecolor='k', linewidths=1., zorder=2))
plt.show()

в массив сетки с размерами (1801,3600) как значение 1 для каждой точки.>
Подробнее здесь: https://stackoverflow.com/questions/798 ... o-an-array
Мобильная версия