simple water flood model

Ответить
Vladimir_R
Активный участник
Сообщения: 145
Зарегистрирован: 14 апр 2010, 14:11
Репутация: 44
Откуда: Екатеринбург

simple water flood model

Сообщение Vladimir_R » 05 авг 2012, 20:36

Здравствуйте!

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

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: simple water flood model

Сообщение rhot » 05 авг 2012, 20:40

как вариант, добавить ещё RAM? :)
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

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
Редактор материалов, модератор форума

Vladimir_R
Активный участник
Сообщения: 145
Зарегистрирован: 14 апр 2010, 14:11
Репутация: 44
Откуда: Екатеринбург

Re: simple water flood model

Сообщение Vladimir_R » 06 авг 2012, 09:52

Спасибо за быструю реакцию. Буду пробовать.

Ответить

Вернуться в «GRASS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 16 гостей