четвер, 14 квітня 2016 р.

Базові функції r.mapcalc в GRASS


Дана формула дуже проста, проте дає розяснення, яким чином з карти А (яка містить ряд растрових точок з певною висотою) видобути по цих же координатах точки з карти В для порівняння







Більше читати тут:
r.mapcalc: An Algebra for GIS and Image Processing, by Michael Shapiro and Jim Westervelt, U.S. Army Construction Engineering Research Laboratory (March/1991). http://grass.osgeo.org/uploads/grass/history_docs/mapcalc-algebra.pdf
Performing Map Calculations on GRASS Data: r.mapcalc Program Tutorial, by Marji Larson, Michael Shapiro and Scott Tweddale, U.S. Army Construction Engineering Research Laboratory (December 1991) http://grass.osgeo.org/uploads/grass/history_docs/mapcalc.pdf




середа, 12 жовтня 2011 р.

Встановлення девелоперської версії Grass 7

потужна річ, звичайно не без глюків, але реально працююча. Найкраще встановлювати з сирців, тоді буде забезпечений весь реалізований на даний момент функціонал. У себе, щоб не було конфліктів із офіційною версією 6.4.1, я встановив Травичку в пісочницю - у віртуальній машині. Вийшов Дебіан Squeeze в Дебіані Wheezy - Debian в квадраті тобто ;). Там все бігає просто пречудово. Тепер по суті. Послідовність дій така... Почну з кінця, бо коли інсталив і компілив, не записав. Взнаємо номер поточної версії svn: :~ > g.version -c GRASS 7.0.svn48476 (2011) Поновлюємо версію до останньої: root@squeeze:/home/eucrariano/grass_trunk# svn up #і поки воно собі щось там тягає з "високошвидкісного" 115кбіт інету від Інтертелекому, я розкажу сумну історію, як я забув, як встановлював грасс 7.0 свн. Дійсно забув ;(. Накачав вихідних кодів. Це пам’ятаю. Потім встановив усілякі make та іншу дрібноту, яку воно хотіло по мануалу. В пароцесі компіляції лізли всякі глюки: все чого бракувало я чемно докладав, і по колу, поки не скомпілилося. От чого бракувало - не памятаю, часу, як все бракувало на лизання блогу паралельно з інсталяцією; потім при інсталяції були трабли - теж доклав все що потрібно. Результат - Грасс, як і бажалося. Працював пречудово, поки не прибив мені вектори на тримісячній роботі, зараза. І оце недавно почав я порівнювати дані сртм3 і астера2 на область і виявилося, що в вікспітоні воно не малює профіля, а в грасі 6.4.1 - теж не хоче. Може це біда даних, пересичених, але здається таки то глюк. Тому от і поновляю свн. Ljduj? pfhfpf/ Написало, що Updated to revision 49690. Але в грасі показує стару версію. Пробуємо запустити make. Фігня виходить. Добре, що є пам’ять команд. Шляхом підбору (наукового тику), скомпілював нарешті нову версію. Спочатку: root@squeeze:/home/eucrariano/grass-7.0.svn_src_snapshot_2011_12_10/bin.x86_64-unknown-linux-gnu# CFLAGS="-g -Wall -Werror-implicit-function-declaration -fno-common -Wextra -Wunused" CXXFLAGS="-g -Wall" ./configure --prefix=/usr/local --with-postgres --with-postgres-includes=/usr/include/postgresql --with-mysql --with-mysql-includes=/usr/include/mysql --with-gdal --with-proj --with-proj-share=/usr/share --with-motif --with-glw --with-nls --with-readline --with-cxx --enable-largefile --with-freetype --with-freetype-includes=/usr/include/freetype2 --with-sqlite --with-odbc --with-cairo --with-python=/usr/bin/python2.6-config --with-wxwidgets --with-tcltk-includes=/usr/include/tcl8.5 --with-tcltk-libs=/usr/lib/tcl8.5 --with-geos --with-pthread ПОТІМ: root@squeeze:/home/eucrariano/grass-7.0.svn_src_snapshot_2011_12_10/bin.x86_64-unknown-linux-gnu# make -j 4 - довго компілиться, в результаті маємо папку (власне коли розпаковуємо архів свн, то саме тоді вона створюється, і ВСІ дії робимо звідти) root@squeeze:/home/eucrariano/grass-7.0.svn_src_snapshot_2011_12_10# А В ЦІЙ ПАПЦІ Є root@squeeze:/home/eucrariano/grass-7.0.svn_src_snapshot_2011_12_10/bin.x86_64-unknown-linux-gnu# де власне і знаходиться файл *grass70 який і запускаємо. Версія грасса стала GRASS 7.0.svn49642 (2011) - що і треба було довести ;))

Перекидання даних з Grass до Easy Trace

Момент дуже важливий, особливості команд видно на рисунку. робота йде через обмінний формат mif MapInfo.

неділя, 22 травня 2011 р.

Відчищення мапсету від сміття

З часом мапсет виявляється перевантаженим різним хламом, типу пробних/невдалих карт, які займають іноді сотні мегабайт. Тому чистимо весь це непотріб за допомогою модуля g.remove. Чудово працює множинне видалення непотребу:
Н: g.remove rast=soils,slope,temp vect=roads,rail group=nhap.1,nhap.2
ГОЛОВНЕ: добре памятати потрібні карти, бо повернути назад не вийде. Краще перед виконанням цього модуля, зробити архівну копію локації.

субота, 21 травня 2011 р.

Зсув векторної карти відносно растрової за допомогою v.transform

Було: оцифрована векторна карта по растровій підкладці.
У подальшій роботі виникла потреба дооцифрувати ще один лист карти, який знаходиться нижче. Растр доточили в фотошопі/GIMPi, і розширену карту імпортували в грасс. Далі:
# Задаємо новий регіон для щойно імпортованої карти
g.region rast=назва_імпортованої_растрової_карти (Н: g.region -s rast=glyboka@PERMANENT)
(галочка s - параметр (-s) означає, що новий регіон буде встановлений по дефолту).

Включаємо відображення векторної карти і бачимо, що результати кількадібного клацання мишею (векторна карта себто) наклалися на зовсім іншу ділянку карти, ту, яку щойно доточили. Оскільки так і мало бути (ми працюємо в даному випадку в простих декартових координатах), необхідно "посунути" цілу векторну карту по вертикалі вверх на таку кількість пікселів, які додалися за рахунок добавленого листа карти. Використовуємо модуль v.transform.

Обчислення величини зсуву векторної карти: задача досить таки примітивна (таки примітивна ;)), але щоб довго не думати і уявляти, що вийде, поступимо старим дідівським способом - роби як я. Алгоритм такий: маємо "стару" карту з розмірами (X1,Y1) і розширену карту з розмірами (X2,Y2): dY=Y2-Y1 (формула справедлива для растру, який доточений знизу). Якщо растр доточується зверху, то лишніх рухів робити не потрібно.
Далі:
v.transform input=назва_поточної_векторної_карти output=назва_зміщеної_векторної_карти yshift=число_пікселів_на_які_треба_посунути_векторну_карту

Ось і все. Зсуви можуть бути і по вісі Х та Z, окрім цього можливе масштабування різного роду і повороти. Ось такий він v.transform.


А тепер про глюки.
Все прекрасно зсовує, масштабує, але при спробі векторизувати, дає набір зигзагоподібних ліній, проблема детально описана в http://gis-lab.info/forum/viewtopic.php?f=29&t=7871&p=45296#p45296.
Лікується це лише використанням v.digit, при цьому в грасі 6.4.0 необхідно переключати дефолтний інтерфейс на tcl/tk. Спроби маніпулювання векторною картою, як ото експорт, потім зворотній імпорт - нічого не дають. Таки так, це глюк інтерфейсу wxPython.
Обновлення на wheezy дозволило покласти GRASS 6.4.1. А от запрацювати без копняка воно не захотіло: GRASS 6.4.1 (gisdemo_ncspm):~ > g.list: relocation error:
/usr/lib/libgdal1.7.0.so.1: symbol __cxa_pure_virtual, version
libmysqlclient_16 not defined in file libmysqlclient.so.16 with link time
reference
g.list: relocation error: /usr/lib/libgdal1.7.0.so.1: symbol
__cxa_pure_virtual, version libmysqlclient_16 not defined in file
libmysqlclient.so.16 with link time reference ....
і так далі. Доклав я вручну через dpkg -i xxxxx.deb отакі пакунки, як mysql-common all 5.1.57-1, libmysqlclient-dev amd64 5.1.57-1, libmysqlclient16 amd64 5.1.57-1, причому оці три зарази довелося брати з анстейбла. Втішився, а коли запустив граса, обламався, модуль векторизації пітоновський там відсутній, допилюють його. І 3d візуалізації немає. Добре, що є nviz.
І запускати v.digit можна з оболонки пітона (тим часом - meantime: Reason: No module named grass6_wxvdigit
Note that the wxGUI's vector digitizer is currently disabled
(hopefully this will be fixed soon). Please keep an eye out
for updated versions of GRASS. In the meantime you can use
"v.digit" from the Develop Vector menu. ). І головне в v.digit - відсутність явних глюків. Для полегшення роботи наводжу рядок команди, яка запускає векторизацію із растровою підкладкою (оскільки з наскоку розібратися як її відобразити - задача ще та). Тепер чекаємо на поновлення граса, бо таки в wxPython працювати зручніше.
команда в терміналі:
v.digit kolomna bgcmd="d.rast kolomna", де після вдігіт йде назва векторної карти з поточного набору, а після командии - bgcmd="d.rast kolomna" йде запит на відображення на моніторі расторової карти. В даному прикладі назви векторної і растрової карт збігаються, але це не шкодить, воно само собі знає, де вектор де растр.

Якщо вибрати оце все через меню пітона, то на вкладці optional в рядочку bgcmd набираємо d.rast імя_карти. І вуаля.
Все настільки просто, наскільки і непросто.
Колись давно, я, як користувач віндовс світу, перейшов на лінукс і необхідно було зразу оцифрувати дещо, то витратив просто купу часу, поки все це уяснив. Перечитав гору мануалів, а отакого простого пояснення як оце зараз написав, не знайшов ніде ;(. Тому користуйтеся, може це комусь допоможе.


10.08.2011.
Знайшов таки спосіб працювати з відтрансформованою векторною картою без обхідних шляхів.
1. v.out.ogr - перша вкладка: імя карти з глюками після трансформації, імя карти, що буде експортуватися (при цьому процесі скриті дані, які оті глюки викликають, відкидаються).
2. Вкладка input - відмічаємо об’єкти, що експортуватимуться.
3. Вкладка Creation - відмічаємо "проміжний" формат, куди експортуємо - це mif. Всі інші поля не заповнюємо.
4. Запускаємо модуль. Дані конвертуються. Де вони опиняються ? От і є нагода повивчати трохи Лінукс ;). Хто знає, той зразу знайде і навіть шукати не буде ;).

5. Модуль v.in.ogr - перша вкладка: огрдатасорснейм, імя карти, яке присвоюється карті, що імпортується, нагадую, що при цьому дані, які викликають глюки, відкидаються.
2. Вкладка input - відмічаємо об’єкти, що експортуватимуться.
3. Запускаємо модуль - Wir haben sсhon fertig gemacht.

Все редагується без глюків ;)

середа, 11 травня 2011 р.

GRASS-GIS - що то таке

Ось нарешті дійшли руки розпочати ведення блогу на цю тему. Одна з найпотужніших настільних ГІС володіє величезним функціоналом, повне розкриття якого вимагає непоганого знання англійської мови (чи вміння правильно інтерпретувати машинний переклад), навичок, вищих за початковий у користуванні Linux, і, звичайно, вміння правильно формулювати самому собі завдання. На відміну від віндових тицялок, GRASS GIS (далі трава) не дасть зробити абсолютно нічого без хоча б приблизного уявлення про бажаний результат. Що казати, іноді уявлення є, а не все виходить. Зате після освоєння, розумієш, наскільки ці речі просто робити, в порівнянні з комерціними гіс. На допомогу можу порекомендувати http://gis-lab.info/forum/viewforum.php?f=29. Вся актуальна інформація буде збиратися тут, в одному місці, оскільки частенько забувається якийсь н’юанс, а перегортати купу сторінок інколи не з руки. Отже, поїхали!!!