Здравствуйте!
Есть задача построить простую модель паводковых вод, с которой конечный пользователь(не гис-специалист) будет работать через программный интерфейс.
Мне видеться, что это работает так: пользователь вводит координаты и значение в нужной точке,а grass рассчитывает область затопления. Идеальным для этого является модуль r.lake. Но тестирование показало, что для его работы нужно большое кол-во RAM.
Территория расчетов очень большая, один из крупных субъектов РФ. Предлагать пользователю ограничивать область расчета нет возможности.
Есть ли какие-то решения для построения простую модель паводковых вод?
simple water flood model
-
- Активный участник
- Сообщения: 145
- Зарегистрирован: 14 апр 2010, 14:11
- Репутация: 44
- Откуда: Екатеринбург
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: simple water flood model
как вариант, добавить ещё RAM?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: simple water flood model
Ещё варианты:
-- в процессе работы разбивать растр на куски, в цикле запускать модуль для каждого куска, потом сшивать результирующие растры;
-- огрубить исходную ЦМР (или обязательно сохранять для растр зоны затопления искомое разрешение?);
-- (самое трудоёмкое) допилить <r.lake> до нужного состояния, благо что код открытый;
-- огрубить ЦМР в несколько раз --> посчитать затопление --> вырезать из ЦМР кусок на участок затопления --> посчитать затопление по меньшей ЦМР с исходным разрешением; внизу пример shell-скрипта для этого варианта (использован набор данных Spearfish).
-- в процессе работы разбивать растр на куски, в цикле запускать модуль для каждого куска, потом сшивать результирующие растры;
-- огрубить исходную ЦМР (или обязательно сохранять для растр зоны затопления искомое разрешение?);
-- (самое трудоёмкое) допилить <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
Редактор материалов, модератор форума
-
- Активный участник
- Сообщения: 145
- Зарегистрирован: 14 апр 2010, 14:11
- Репутация: 44
- Откуда: Екатеринбург
Re: simple water flood model
Спасибо за быструю реакцию. Буду пробовать.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 16 гостей