Интерполяция линейных обьектов

SBoris
Участник
Сообщения: 82
Зарегистрирован: 24 мар 2011, 19:15
Репутация: 1

Re: Интерполяция линейных обьектов

Сообщение SBoris » 10 дек 2012, 00:33

Интерполированный растр IDW.
GRASSidw.png
GRASSidw.png (19.26 КБ) 10142 просмотра

SBoris
Участник
Сообщения: 82
Зарегистрирован: 24 мар 2011, 19:15
Репутация: 1

Re: Интерполяция линейных обьектов

Сообщение SBoris » 18 дек 2012, 13:31

По ходу неожиданно встретил вот такое после большей половины выполненных расчётов

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

(Tue Dec 18 10:54:37 2012)                                                      
r.grow.distance input=dp_car_1@ruska distance=dp_car_1x@ruska       
map [dp_car_1x] - unable to write row 0
(Tue Dec 18 10:55:55 2012) Command finished (77 sec)
В коммандной строке - та же ошибка. На других растрах - то же самое. Считало ведь до этого. Что это? Как поправить?

И попутно, если есть возможность покажите куски скриптов для выборки растров по маске имен растров и цикл с иполнением комманд GRASS, например той же r.grow.distance (пайпа не надо) с вектором имён растров - чтоб быстрее сориентироватся на местности програмирования. А то достало тыкать мышкой. Или для этого надо создать новую тему?
Я тут прикинул что-то, но понимаю - это далеко от истины.

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

#!/bin/sh
...
i=1
while [ $i != size(raster_names_list)+1 ]
do
           r.grow.distance input=$raster_names_list(i)@ruska distance='$raster_names_list(i)+x'@ruska
           i = 'expr $i + 1'
done

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

Re: Интерполяция линейных обьектов

Сообщение Александр Мурый » 18 дек 2012, 14:02

SBoris писал(а):

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

                                            
r.grow.distance input=dp_car_1@ruska distance=dp_car_1x@ruska       
map [dp_car_1x] - unable to write row 0
(Tue Dec 18 10:55:55 2012) Command finished (77 sec)
Что это? Как поправить?
Для начала банальность -- регион по растру задавали? Если можно, выложите растр "dp_car_1", надо смотреть.
SBoris писал(а): И попутно, если есть возможность покажите куски скриптов для выборки растров по маске имен растров и цикл с иполнением комманд GRASS, например той же r.grow.distance (пайпа не надо)
Почему такая нелюбовь к пайпам? Они же наше всё :) Приведённый кусок кода слишком усложнён, по-моему.
Для выборки растров по маске имён есть спец. модуль g.mlist.
Пример с <g.mlist>:

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

g.mlist rast pat="dp_car_*" | while read r; do
    g.region rast=$r
    r.grow.distance input=$r distance=${r}x
done
Редактор материалов, модератор форума

SBoris
Участник
Сообщения: 82
Зарегистрирован: 24 мар 2011, 19:15
Репутация: 1

Re: Интерполяция линейных обьектов

Сообщение SBoris » 18 дек 2012, 15:21

amuriy писал(а):
SBoris писал(а):

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

                                      
r.grow.distance input=dp_car_1@ruska distance=dp_car_1x@ruska       
map [dp_car_1x] - unable to write row 0
(Tue Dec 18 10:55:55 2012) Command finished (77 sec)
Что это? Как поправить?
Для начала банальность -- регион по растру задавали?

То же самое... unable to write row 256
Растр созданный, как и все остальные (на которых расчет завершился без ошибок) из вектора в GRASS. Весь набор - весит много. Экспортированный растр и продукт расчета с ошибкой прилагаю.
amuriy писал(а):Почему такая нелюбовь к пайпам? Они же наше всё :) Приведённый кусок кода слишком усложнён, по-моему.
Это после опыта с Octave/MatLab/R...Потому и попросил пример.
Для начала не хотел усложнять себе жизнь... Я б с радостью попробовал с пайпами, но времени свободного для осилялства маловато...Я им никогда раньше не пользовался. Но, если ваш опыт програмирования подсказывет что это проще и быстрее. То можна было бы попробовать. С идеологией пайпов немного знаком...Далее дело на заходило...
За пример - спасибо.
Если я правильно понял, read r читает список имен в переменную r и так до конца списка. А | - отдалённое подобие пайпа. Вроде всё понятно. Буду пробовать. Но надо бы убрать глюк сначала unable to write row.
Вложения
boris.tar.gz
(781.07 КБ) 660 скачиваний

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

Re: Интерполяция линейных обьектов

Сообщение Александр Мурый » 18 дек 2012, 15:55

SBoris писал(а): Если я правильно понял, read r читает список имен в переменную r и так до конца списка. А | - отдалённое подобие пайпа.
Да, всё так. Скорее, это в Octave/MatLab/R -- некое подобие, а "|" -- настоящий Unix pipe.

Попробовал с вашим растром, прошло без каких-либо ошибок:

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

g.region rast=dp_car_1 zoom=dp_car_1
r.grow.distance in=dp_car_1 dist=dp_car_1.grow
Вот картинка:
dp_car_1_grow_sm.png
dp_car_1_grow_sm.png (48.45 КБ) 10054 просмотра
Редактор материалов, модератор форума

SBoris
Участник
Сообщения: 82
Зарегистрирован: 24 мар 2011, 19:15
Репутация: 1

Re: Интерполяция линейных обьектов

Сообщение SBoris » 18 дек 2012, 16:55

amuriy писал(а):
SBoris писал(а): Попробовал с вашим растром, прошло без каких-либо ошибок:
Гм. а что у меня случилось? :shock: Не апдейтилсяб не доставлял, не сносил, не ковырялся... Гибернация. Работало - и вот те на... Перегружался. Не помогает. Может я лимит растров в наборе достиг? Где копать, - не знаю.
Попробовал импортировать файл (который выставил здесь) :shock:

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

(Tue Dec 18 14:52:07 2012)                                                      
r.in.gdal input=/home/boris/Downloads/Trash/dp_car_01.tiff output=dp_car_01     
Projection of input dataset and current location appear to match
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
error writing null row 5671
map [dp_car_01] - unable to write row 5718
error writing null row 5671
error writing null row 5672
error writing null row 5673
error writing null row 5674
error writing null row 5675
error writing null row 5676
error writing null row 5677
error writing null row 5678
error writing null row 5679
error writing null row 5680
error writing null row 5681
error writing null row 5682
error writing null row 5683
error writing null row 5684
error writing null row 5685
error writing null row 5686
error writing null row 5687
error writing null row 5688
error writing null row 5689
error writing null row 5690
error writing null row 5691
error writing null row 5692
error writing null row 5693
error writing null row 5694
error writing null row 5695
error writing null row 5696
error writing null row 5697
error writing null row 5698
error writing null row 5699
error writing null row 5700
error writing null row 5701
error writing null row 5702
error writing null row 5703
error writing null row 5704
error writing null row 5705
error writing null row 5706
error writing null row 5707
error writing null row 5708
error writing null row 5709
error writing null row 5710
error writing null row 5711
error writing null row 5712
error writing null row 5713
error writing null row 5714
error writing null row 5715
error writing null row 5716
error writing null row 5717
error writing null row 5718
error writing null row 5719
error writing null row 5720
error writing null row 5721
error writing null row 5722
error writing null row 5723
error writing null row 5724
error writing null row 5725
error writing null row 5726
error writing null row 5727
error writing null row 5728
error writing null row 5729
error writing null row 5730
error writing null row 5731
error writing null row 5732
error writing null row 5733
error writing null row 5734
error writing null row 5735
error writing null row 5736
error writing null row 5737
error writing null row 5738
error writing null row 5739
error writing null row 5740
error writing null row 5741
error writing null row 5742
error writing null row 5743
error writing null row 5744
error writing null row 5745
error writing null row 5746
error writing null row 5747
error writing null row 5748
error writing null row 5749
error writing null row 5750
error writing null row 5751
error writing null row 5752
error writing null row 5753
error writing null row 5754
error writing null row 5755
error writing null row 5756
error writing null row 5757
error writing null row 5758
error writing null row 5759
error writing null row 5760
error writing null row 5761
error writing null row 5762
error writing null row 5763
error writing null row 5764
error writing null row 5765
error writing null row 5766
error writing null row 5767
error writing null row 5768
error writing null row 5769
r.in.gdal complete. Raster map <dp_car_01> created.
(Tue Dec 18 14:52:14 2012) Command finished (6 sec)
А это чё ущё такое. Чем сей глюк лечить?

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

Re: Интерполяция линейных обьектов

Сообщение Александр Мурый » 18 дек 2012, 17:00

Какая версия GRASS? Лимита растров в наборе, вроде бы, не бывает. Место на диске не могло закончиться (ну мало ли...)? Никакие файлы из набора PERMANENT не удалялись случайно?
Редактор материалов, модератор форума

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Интерполяция линейных обьектов

Сообщение KolesovDmitry » 18 дек 2012, 17:04

SBoris писал(а): Гм. а что у меня случилось? :shock: Не апдейтилсяб не доставлял, не сносил, не ковырялся... Гибернация. Работало - и вот те на... Перегружался. Не помогает. Может я лимит растров в наборе достиг? Где копать, - не знаю.
Давайте сначала попробуем разобраться, где проблема -- в грасс или в библиотеках. Создайте еще один набор и попробуйте импортировать в него файлы. Если импортируются, попробуйте посчитать на них что-нибудь.

SBoris
Участник
Сообщения: 82
Зарегистрирован: 24 мар 2011, 19:15
Репутация: 1

Re: Интерполяция линейных обьектов

Сообщение SBoris » 18 дек 2012, 18:38

KolesovDmitry писал(а):
SBoris писал(а): Гм. а что у меня случилось? :shock: Не апдейтилсяб не доставлял, не сносил, не ковырялся... Гибернация. Работало - и вот те на... Перегружался. Не помогает. Может я лимит растров в наборе достиг? Где копать, - не знаю.
Давайте сначала попробуем разобраться, где проблема -- в грасс или в библиотеках. Создайте еще один набор и попробуйте импортировать в него файлы. Если импортируются, попробуйте посчитать на них что-нибудь.

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

r.in.gdal input=/home/boris/dp_car_01.tiff output=dp_car_01     
Projection of input dataset and current location appear to match
r.in.gdal complete. Raster map <dp_car_01> created.
(Tue Dec 18 16:30:39 2012) Command finished (4 sec)   
да посчиталось, и при том очень шустро 4 сек притив 140-200.
В файлах и папках GRASS проекта не ковырялся и ничего не трогал.
GRASS 6.4.2 (2012) /Debian wheezy amd64

SBoris
Участник
Сообщения: 82
Зарегистрирован: 24 мар 2011, 19:15
Репутация: 1

Re: Интерполяция линейных обьектов

Сообщение SBoris » 18 дек 2012, 18:40

amuriy писал(а):Какая версия GRASS? Лимита растров в наборе, вроде бы, не бывает. Место на диске не могло закончиться (ну мало ли...)? Никакие файлы из набора PERMANENT не удалялись случайно?
Места не было, действительно (странно как то - отдельный диск для данных). Высвободил 1.5Гб. Проблема осталась.
Но с новым набором работает. Но теперь вопрос, как быстро перебросить все растры (гдето под 200) из глючного набора в новый?

gamm
Гуру
Сообщения: 4048
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

Re: Интерполяция линейных обьектов

Сообщение gamm » 18 дек 2012, 18:56

SBoris писал(а):Поскольку буферная зона заокруглена, то в местах пересечения линий получаются треугольники, которые как бы налазят на линию и пробивают её тонкой линией насквозь.
а что вы складывали, если не секрет? треугольников так ну никак не должно получаться, там должны быть круги, возникающие в местах стыков линий разных типов из-за перекрытия буферов.

SBoris
Участник
Сообщения: 82
Зарегистрирован: 24 мар 2011, 19:15
Репутация: 1

Re: Интерполяция линейных обьектов

Сообщение SBoris » 18 дек 2012, 19:22

gamm писал(а):
SBoris писал(а):Поскольку буферная зона заокруглена, то в местах пересечения линий получаются треугольники, которые как бы налазят на линию и пробивают её тонкой линией насквозь.
а что вы складывали, если не секрет? треугольников так ну никак не должно получаться, там должны быть круги, возникающие в местах стыков линий разных типов из-за перекрытия буферов.
Если речь идёт о ранних постах - то это были попытки уйти от изнурительно дистансинга и суммирования растров посредством буферных зон. Но как оказалось перекрытия зон не наблюдается. Алгоритм работает в таких местах как итнерполяция (равноудаление). Там я ничего не складывал простые буферы...
На последних постах - карта расстояний от дорог по категориям интенсивностей. До складывания ещё не дошел. Результат, как и обещал, покажу. Только вот, перепинаю карты с глючавого набора в новый.

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

Re: Интерполяция линейных обьектов

Сообщение Александр Мурый » 18 дек 2012, 19:43

SBoris писал(а):Места не было, действительно (странно как то - отдельный диск для данных). Высвободил 1.5Гб. Проблема осталась.
Грассовские растры очень "тяжёлые".
Видимо, из-за нехватки места на диске теперь некоторые растры в наборе имеют не весь набор файлов. Не факт, что простой переброской из набора в набор получится их восстановить. Может быть, придётся переделать операции, на которых произошли ошибки.
SBoris писал(а): Но теперь вопрос, как быстро перебросить все растры (гдето под 200) из глючного набора в новый?
Можно для начала попробовать скопировать растры в этот же набор (лучше сначала проверить на одном "сбойном" растре, сработает ли это):

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

for i in $(g.mlist rast); do g.copy rast=$i,${i}_copy; g.rename rast=${i}_copy,$i --o; done 
[/s]

Попробовал -- не работает (логично, кстати).
Редактор материалов, модератор форума

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

Re: Интерполяция линейных обьектов

Сообщение Александр Мурый » 18 дек 2012, 20:43

Можно сравнить набор каталогов и файлов в базе данных у "битых" и нормальных растров. Для этого:
-- перейдите в консоли в каталог с вашей областью GRASS;
-- запустите для одного "битого" и одного нормального растра команду:

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

find имя_набора -name "*имя_растра*"

-- приведите сюда вывод команд.
Редактор материалов, модератор форума

SBoris
Участник
Сообщения: 82
Зарегистрирован: 24 мар 2011, 19:15
Репутация: 1

Re: Интерполяция линейных обьектов

Сообщение SBoris » 18 дек 2012, 23:59

вариант с глюком

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

~$ cd /media/data/Work/GiS_DB/Mk/
/media/data/Work/GiS_DB/Mk$ find ruska -name "*dp_car_01*"
ruska/cats/dp_car_01
ruska/cell/dp_car_01
ruska/cellhd/dp_car_01
ruska/cell_misc/dp_car_01
ruska/colr/dp_car_01
ruska/hist/dp_car_01
рабочий вариант

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

/media/data/Work/GiS_DB/Mk$ find test -name "*dp_car_01*"
test/cats/dp_car_01
test/cats/dp_car_01x
test/cell/dp_car_01
test/cell/dp_car_01x
test/cellhd/dp_car_01
test/cellhd/dp_car_01x
test/cell_misc/dp_car_01
test/cell_misc/dp_car_01x
test/colr/dp_car_01
test/colr/dp_car_01x
test/fcell/dp_car_01x
test/hist/dp_car_01
test/hist/dp_car_01x

Ответить

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

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

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