flopy get_rc () не работает для повернутой сетки

#flopy

#flopy

Вопрос:

Я настраиваю пространственную привязку моей модели следующим образом:

 m = flopy.modflow.Modflow.load(nam, verbose=True,load_only=['dis'])
x_offset = 963091.522224#x lower limit (SW corner)
y_offset = 9280278.473164#y lower limit (SW corner)
rot = 35.0# CCW
m.sr.xll = x_offset#x lower limit (SW corner)
m.sr.yll = y_offset#y lower limit (SW corner)
m.sr.rotation = rot
  

Я полагаю, что свойства заданы правильно, поскольку экспортируемые мной растры geotiff правильно повернуты. Однако мои результаты для get_rc () получаются неверными. Пары x, y, которые я передаю, находятся в центрах ячеек, результаты были идеальными с невращенными сетками.

Вызов метода, который я использую (псевдокод), является:

 (r,c) = m.sr.get_rc(X,Y)
  

где X и Y — это массивы numpy.

Комментарии:

1. Похоже, была доступна обновленная версия flopy для разработки с некоторыми изменениями в sr. Я скачал и попробовал новый get_rc(), а также новый get_ij(). Метод по-прежнему не работал. Я нашел обходной путь, заключающийся в том, чтобы установить m.sr.rotation равным 0.0 и вместо этого повернуть мои данные о xll, yll с помощью поворота -rot с помощью m.sr.rotate(). Затем я передал эти повернутые координаты в невращенную модель, и это сработало.

Ответ №1:

Мы заменили пространственную привязку (SR) на объект сетки общей модели, который прикреплен к модели, чтобы мы могли более широко поддерживать неструктурированные сетки во flopy. Вот пример того, как зарегистрировать вашу модель в пространстве. В вашем конкретном случае вам следует вызвать метод set_coord_info после загрузки.

 import flopy
m = flopy.modflow.Modflow()
dis = flopy.modflow.ModflowDis(m)
xoff = 963091.522224
yoff = 9280278.473164
angrot = 35.
m.modelgrid.set_coord_info(xoff=xoff, yoff=yoff, angrot=angrot)
m.modelgrid.plot()
  

Все последующие графики и экспорт теперь будут использовать эту географически зарегистрированную информацию.

введите описание изображения здесь

Объект modelgrid также имеет другие методы, такие как intersect , которые будут возвращать информацию о ячейке для указанных точек x и y. Эти методы будут продолжать развиваться для неструктурированных сеток и других типов пересечений.

Комментарии:

1. Можете ли вы привести пример для get_rc (X, Y) с modelgrid?

2. Примеры здесь: github.com/modflowpy/flopy/blob/develop/examples/Notebooks /…