Страница 1 из 1

simple water flood model

Добавлено: 05 авг 2012, 20:36
Vladimir_R
Здравствуйте!

Есть задача построить простую модель паводковых вод, с которой конечный пользователь(не гис-специалист) будет работать через программный интерфейс.
Мне видеться, что это работает так: пользователь вводит координаты и значение в нужной точке,а grass рассчитывает область затопления. Идеальным для этого является модуль r.lake. Но тестирование показало, что для его работы нужно большое кол-во RAM.
Территория расчетов очень большая, один из крупных субъектов РФ. Предлагать пользователю ограничивать область расчета нет возможности.
Есть ли какие-то решения для построения простую модель паводковых вод?

Re: simple water flood model

Добавлено: 05 авг 2012, 20:40
rhot
как вариант, добавить ещё RAM? :)

Re: simple water flood model

Добавлено: 05 авг 2012, 23:56
Александр Мурый
Ещё варианты:
-- в процессе работы разбивать растр на куски, в цикле запускать модуль для каждого куска, потом сшивать результирующие растры;
-- огрубить исходную ЦМР (или обязательно сохранять для растр зоны затопления искомое разрешение?);
-- (самое трудоёмкое) допилить <r.lake> до нужного состояния, благо что код открытый;

-- огрубить ЦМР в несколько раз --> посчитать затопление --> вырезать из ЦМР кусок на участок затопления --> посчитать затопление по меньшей ЦМР с исходным разрешением; внизу пример shell-скрипта для этого варианта (использован набор данных Spearfish).

Код: Выделить всё


#!/bin/sh

# задаём ЦМР
DEM=elevation.10m

# узнаём разрешение ЦМР и задаём разрешение, огрублённое в 5 раз
eval $(r.info -s $DEM)
if [ $nsres = $ewres ]; then
TMP_RES=$(echo "$nsres * 5" | bc)
fi

# задаём текущий регион по ЦМР с огрублённым разрешением
g.region rast=$DEM res=$TMP_RES

# запускаем <r.lake> с нужными параметрами
r.lake dem=$DEM wl=1150 xy=603970.6171875,4926353.2109375 lake=${DEM}.lake --o

# задаём текущий регион по растру затопления с исходным разрешением ЦМР
g.region rast=${DEM}.lake zoom=${DEM}.lake nsres=$nsres ewres=$ewres -p

# вырезаем из исходной ЦМР кусок на участок затопления
r.mapcalc "${DEM}.tmp = $DEM"

# запускаем <r.lake> с теми же параметрами, но уже на меньшей ЦМР
r.lake dem=${DEM}.tmp wl=1150 xy=603970.6171875,4926353.2109375 lake=${DEM}.lake --o

# задаём текущий регион по исходной ЦМР (если надо)
g.region rast=$DEM

# удаляем вырезанный кусок ЦМР (если надо)
g.remove rast=${DEM}.tmp

Re: simple water flood model

Добавлено: 06 авг 2012, 09:52
Vladimir_R
Спасибо за быструю реакцию. Буду пробовать.