GIS-GRASS Географическая Информационная Система

Что такое GIS?

О Географической Информационной Системе можно сказать многое. Здесь приводятся три определения (сделанные David A. Hastings, 1992, в Geographic Information Systems: A Tool for Geoscience Analysis and Interpretation):

(Минимальное определение): GIS это комплексная система аппаратного и программного обеспечения, предназначенная для хранения, управления и с (при помощи бумажных копий или графики) возможностью избирательного редактирования с учетом географических данных. Такого рода определение, в основном, используется продавцами и пользователями векторной версии GIS, чьи цели или увеличение количества продаж или использование GIS, как источника картографической информации.

(Похожее определение):;GIS это совокупность программного и аппаратного обеспечения обработки и вывода информации. Но в отличии от обычных СУБД, вся информация;в GIS представлена в пространственном изображении, а не в плоских моделях. Распечатать можно не только карты, но и таблицы. и и числовые величины. Поэтому GIS можно рассматривать в качестве пространственной СУБД, как альтернативу обыкновенным СУБД. Однако это определение для человеку который использует обыкновенные СУБД .

(Более конкретное определение):;GIS это совокупность программного и аппаратного обеспечения, которое делает возможным разработку, моделирование и вывод многослойной пространственной информации. Система может производить некоторые аналитические функции и этим самым помогает пользователю анализировать и интерпретировать информацию. GIS может смоделировать явление как функцию от других явлений, которые описаны пространственной и числовой информацией.

Другие определения можно найти на http://www.geo.ed.ac.uk/home/research/whatisgis.html at the University of Edinburgh

Что такое GRASS?

GRASS (Geographic Resources Analysis Support System) это приложение на основе GIS, являющееся системой обработки изображений. Приложение было создано;управлением инженерных войск США(US Army Corps of Engineers), Исследовательским Институтом по разработке сооружений (Constriction Engineering Research Laboratory (USA/CERL)) и дополнена многими другими, это приложение часто используется в правительственных организациях, университетах и всевозможных коммерческих организациях по всему миру. оно написано в основном на C, для различных машин под UNIX. Linux является одной из наиболее удобных сред для его применения.

GRASS включает в себя более 40 программ для обработки изображений на мониторе и бумаге, более 60 программ растровой графики, более 30 программ обработки векторной графики, около 30 программ для обработки других видов графики, 16 программ для обработки числовой информации и 6 программ для работы с файлами.

GRASS не имеет узкой специализации и может использоваться в различных областях. Для тех кто пользуется первый раз этой программой, простой пользовательский интерфейс может послужить отличной базой. Используя исходные файлы, библиотеки с документацией и инструкции к самой программе, можно написать собственные приложения к этому пакету.;

Исходные файлы GRASS можно получить бесплатно. Некоторые программы которые можно скомпилировать для своей машины так же можно бесплатно скачать. Они могут работать под различными версиями UNIX.

(Выдержка из описания проекта Intro to GRASS:http://www.geog.le.ac.uk/assist/grass)

Краткая история GRASS

В начале 1980-ых;U. S. Army Corps of Engineers и Construction Engineering Research Laboratory (USA/CERL) в Champaign, Illinois, начали исследовать возможности Geographic Information Systems для проведения исследований, анализа и мониторинга ландшафта и коррекции карт, по зданию;министерства обороны США (U. S. Department of Defense). Одной из мотиваций было следование указу о национальной доктрине об окружающей среде (National Environmental Policy Act) принятого в конце 1970-ых.

Bill Goran из USA/CERL просмотрел все возможные версии GIS, рассматривая их с точки зрения возможности проводить анализ ландшафта, для того чтобы рекомендовать одну или несколько версий CERL. Но он не смог найти ни одной версии GIS которая бы подходила к этим требованиям. Таким образом, то что началось как поиск превратилось в разработку нового GIS.

USA/CERL наняли несколько программистов и начали с того, что написали растрово-векторный GIS для VAX UNIX. И это была первая команда которая занялась серьезной разработкой GIS под UNIX. До сих пор эта система подходит под использование различными версиями UNIX, потому что они разработали процедуры кодировки в ANSI для стандартного UNIX, не используя ничего, что являлось бы уникальным и различалось в версиях UNIX.

Стиль программирования GRASS характеризуется:

Использованием библиотек UNIX там где это возможно, созданием собственных библиотек GRASS для часто употребляемых GIS процедур, таких как открытие растровых файлов которые могут быть заархивированы или нет.

Возможностью поддержки обоих основных типов данных GIS: растровых и векторных.

Использованием обработки объектов в основном в растровом виде.

Возможностью работы с растровыми сетками различных разрешений в одной базе данных. Это отличается от традиционной обработки, когда требуется идентичная сетка.

Возможностью поддержки растровых;сеток с различными площадями покрытия.

Возможность кодировать растровые файлы данных, чтобы существенно уменьшить размер файлов.

Раздельная структура файлов переклассификации. Такие файлы содержат таблицу, в которой указаны предшествующие и новые классы. Это занимает гораздо меньше места, чем обычный способ при котором изначальная сетка заменяется цифровыми величинами. Переклассифицированный файл содержащий карту 100x100 км с десятиметровой сеткой будет иметь объем в несколько сотен байт в отличии от 100 мегабайтного разархивированного восьмибитного файла растровых величин.

Возможность работы со стандартными моделями. В то время как другие создавали громоздкие форматы данных, GRASS принял стандартный Digital Line Graph векторный формат.;

GRASS разрабатывался несколькими лабораториями в различных каталогах. Начальные разработки размещены в каталоге src.contrib. Более доработанный находится в каталоге src.alpha.;

За разработкой GRASS следили три комитета различных уровней. USA/CERL несло основную ответственность за GRASS. Они и проводили все основные мероприятия по разработке;и тестированию GRASS.

Многие университеты стали использовать GRASS как среду для обучения и разработки. Ввели небольшие курсы по его изучению в свое штатное расписание. Примерами в этом случае могут послужить Central Washington University, The University of Arkansas, Texas A & M University, The University of California at Berkeley, и Rutgers University.

В 1996 USA/CERL, до начала тестирования бета-версии GRASS 5.0, заявило, что отныне они не будут поддерживать GRASS. USA/CERL рассказало, что они подписали соглашения с некоторыми разработчиками коммерческих GIS, и в дальнейшем GRASS будет коммерческим продуктом. Один из результатов такого решения GRASSLANDS:http://www.las.com/grassland/, адаптированная версия GRASS (коммерческая). В результате многие пользователи GRASS перешли на другие бесплатные GIS. Но, так или иначе, ftp-сайт GRASS содержит множество дополнений к последней версии GRASS.;

Требования к системе при работе с GRASS

Минимальные требования к системе:

8 Mb памяти (разумеется, больше лучше..)

100 Mb свободного пространства на диске ~40 Мb для программ;

~40 Мb для исходников

~? для данных (этот объем может быть почти бесконечным, если вы того пожелаете)

GRASS работает под Linux с ядром старше чем 1.2.13 (более точная информация в приложениях).
GRASS будет работать в текстовом режиме. Так или иначе, для вывода графических данных вам понадобится X.;Если вы найдете требования к программному и аппаратному обеспечению, которые надо обязательно упомянуть, дайте мне знать!

Как приобрести GRASS

GRASS можно приобрести на ленте у нескольких компаний которые подписали договор с USA/CERL о распространении. Эти компании поставляют, в основном, версии для работы на других платформах, таких как Masscomp, Sun, DEC, Hewlett Packard и т.д..

Самый простой способ получить GRASS - это скачать его с ftp:

1. Новая страничка на Baylor University:http://www.baylor.edu/~grass

На день написания этого mini-HOWTO, Baylor разместил на этой страничке исходники GRASS версий 4.1 и 4.2, а так же версию, скомпилированную для Sun Solaris. Также на этом сайте можно найти Blackland GRASS для Windows 95/NT. Используя информацию в этом mini-HOWTO, вы сможете скомпилировать этот исходник для своей машины под Linux.

2. Основной сайт USA/CERL:http://www.cecer.army.mil/grass, или зеркала USA/CERL:

адрес ftp:

moon.cecer.army.mil

Приложение A описывает, как скачать и установить GRASS 4.13 с USA/CERL. (Перед установкой прочтите главу 6!)

Приложение Б описывает, как скачать и установить GRASS 4.15 с USA/CERL.;(Перед установкой прочтите главу 6!)

Приложение В описывает, как скачать и установить исходники GRASS 4.14 и GRASS 4.15 с USA/CERL, и исходник;GRASS 4.2 скачаный с Baylor University. (Перед установкой прочтите главу 6!)

Разработчики дистрибутивов Linux! Быть может вы заинтересуетесь включением GRASS в ваши дистрибутивы? Помните,;что исходные файлы GRASS общедоступны. Ваш дистрибутив будет более весомым, если вы добавите туда исходники и/или собранную версию GRASS.

Как "заставить" GRASS работать под Linux.

Приложения А, Б и В описывают, как приобрести и установить GRASS. До того, как вы начали установку, вам надо решить где будут размещены три части системы:

Проограммы приложения к GRASS, исходники (если вы их устанавливаете), инструкции, документация, и тому подобное. Многие размещают это в /usr/local (например /usr/local/grass/bin, /usr/local/grass/src).

Исполняемые программы;GRASS и утилиты gmake. Некоторые скидывают это в /usr/local (например /usr/local/grass/grass4.1 и gmake4.1 или /usr/local/bin/grass4.1 и gmake4.1).

Каталоги информации GRASS. Это можно записать, куда угодно, если они описаны в файлах конфигурации. Но я так не поступаю. Исходники и программы GRASS используются только этой программой, и мне не хотелось бы распихивать их в разные места, поэтому я создаю отдельный каталог, назовем его /user, и складываю туда все, что связано с GRASS. Например:

/user/grass4.1/bin   (сюда обычно я складываю grass4.1 и gmake4.1)
/data
/dev 
/etc
/man
/src
/src.alpha
/src.contrib

сейчас я создаю сайт GRASS5.0, архитектура которого выглядит примерно так:

/user/grass5/bin
/data   (формат некоторых данных GRASS5 изменен...)
/dev
/etc

Прочтение инструкция к установке GRASS (описанная в главе 10 и приложении В) необходимо для правильной работы GRASS, даже в том случае если вы следовали всем указаниям описанным в приложениях А и Б. не забудьте важную деталь: обычно при инсталляции GRASS права пользователя и администратора разделяются. Для того чтобы избежать проблем связанных с этим вы должны создать пользователя "grass" (эти советы не обязательны) на своей машине. Весь процесс установки и конфигурирования должны производится под правами этого пользователя. Разархивируйте и отредактируйте файлы настройки под правами "grass." После этого желательно редко запускать GRASS с правами "grass." (я так поступаю только когда мне требуется создать архивы карт в основной базе карт). Это делается по той же причине, что и использование прав отличных от "root". ВЫ МОЖЕТЕ СЛИШКОМ МНОГО НАТВОРИТЬ,;КАК СУПЕРПОЛЬЗОВАТЕЛЬ "grass"!

Кроме выполнения советов и инструкций описанных здесь и в приложениях, вам придется выполнить дополнительную работу по наработке информационной базы. Вы можете скачать примерные базы с USA/CERL (каталог pub/grass/grass4.1/data на сервере "ftp moon.cecer.army.mil"), прочтите советы по этому в GRASS Programmer's Manual.

Я лично, вам бы посоветовал обратиться к базам Spearfish и Global, размещенных на USA/CERL:

База Spearfish содержит две карты со сторонами в 7,5 минут в Черных Горах (Black Hills of South Dakota, USA). Они выполнены в Universal Transverse Mercator Projection (UTM). База была создана Larry Batten (сейчас работает в Environmental Systems Research Institute в Boulder, Colorado). Эта база была дополнена USA/CERL. Она очень удобна в использовании (там есть много материалов для обучения работе с GRASS).;

База Global была разработана Bob Lozar из USA/CERL для воспроизведения плоско-параллельной проекции в GRASS с целью изучения окружающей среды.

Начиная с этих примеров, вы можете создать ваши собственные базы в UTM и плоско-параллельных координатах.;

Поддержка для GRASS (и GIS) в сети

Поддержка всем доступной программы? Все говорят нет! Хотя как пользователи Linux, вы об этом хорошо знаете.

Сначала GRASS поддерживался только GRASS Information Office в USA/CERL, также были очень активные пользователи вне этого офиса, которые оказывали посильную помощь. Пользователи GRASS встречались и обсуждали проблемы, существовал сервер для пользователей и разработчиков, компании вносили свою лепту на контрактной или платной основе.

Выпускались книги и обучающие материалы по GRASS, некоторые университеты проводили курсы по изучению GRASS. Их насчитывалось довольно много. Если они вас интересуют, то спросите дополнительную информацию в конференции comp.infosystems.gis

в ссылках есть некоторые, выложенные в Internet, книги (Глава 10).

Материалы по обучению в World Wide Web можно найти на CyberInstute Short Course in GIS:http://www.ngdc.noaa.gov/seg/tools/gis/referenc.html

Одна из лучших программ в этой области - это Project Assist's - Intro to GRASS:http://www.geog.le.ac.uk/assist/grass

Есть и другие неплохие сайты:

Central Washington University was an early GRASS user and training facility:http://www.csu.edu/~gishome/grass.htm

"Starting the hunt for mostly free spatial data" by Stephan Pollard:http://cast.uark.edu/local/hunt основан University of Arkansas, одним из первых кто занялся обучением этой программе.

Purdue University has several GRASS features:http://pasture.ecn.purdue.edu/~aggrass

USA/CERL's online GRASS manual:http://www.cecer.army.mil/grass/userman/main-alpha.html

Rutgers University's GRASS Information Center:http://deathstar.rutgers.edu/grassinfo.html

The REGIS project:http://www.regis/berkeley.edu;Это сайт University of California at Berkeley, он предлагает Linux версию GRASS, которую можно скачать с ftp, а так же есть Web-версия названная, GRASSLINKS.

Но после того, как вы прочтете книги и пройдете курсы, к кому вы обратитесь за советом???

На настоящий момент, лучшим источником такой информации является конференция comp.infosystems.gis . Если вы не пользовались до этого конференциями, то спросите вашего администратора или провайдера о такой возможности. comp.infosystems.gis в основном обсуждает следующие проблемы

"как можно найти данные по определенной теме для определенной местности?"

"как можно сконвертировать эти данные для использования в Aardvark GIS?"

"как можно "заставить" какую-то функцию работать в Aardvark GIS?"

"какой именно GIS надо использовать для решения конкретной задачи?"

GRASS это самая популярная из GIS в этой конференции. Темы обсуждаются только когда они созреют. Как правило, вы сможете найти ответы на различные вопросы в этой конференции. Также вы можете провести поиск по вашей проблеме на DejaNews:http://www.dejanews.com, где хранятся старые темы конференции.

Каково будущее GRASS?

Прекрасный вопрос! Существует несколько ответов на него:

USA/CERL объявило, что последующие версии GRASS будут использоваться только для внутреннего применения, а сайты перестанут поддерживаться. Возможно, будет подписан корпоративный договор со следующими компаниями: (1) Environmental Sciences Research Institute (ESRI), (2) Intergraph, и (3) Logiciels et Applications Scientifiques (L.A.S.) Inc. Два первых договора предусматривают превращение GRASS в коммерческий продукт, принадлежащий ESRI и Intergraph. Последний предусматривает полную переделку GRASS на низком уровне и получение нового коммерческого GIS. L.A.S. также предлагает поддержку общественно доступного сайта GRASS, который и дальше будет существовать как отдельная система и источник идей для L.A.S. GRASSLAND. Один наблюдатель заметил, что первые два договора будут, сродни продаже ОС Linux компании Microsoft. А третий договор, отмечает он же, был бы очень интересным экспериментом по сохранению коммерческой и бесплатной версии программы GRASS.

Некоторые думают, что GRASS может существовать и без поддержки со стороны USA/CERL. Другие утверждают, что Открытый Консорциум Гео-Информационных систем сможет все сделать лучше, и от этого выиграют разработчики и пользователи. Есть и еще одна точка зрения, которая противоположна предыдущей,;ее сторонники утверждают, что Открытый Консорциум приведет к появлению множества похожих, но не взаимосовместимых стандартов, насаждаемых различными разработчиками.;

Есть люди которые считают, что университеты, которые занимаются GRASS, могут самостоятельно его поддерживать некоторое время. Но это уже будет нестандартная версия.....

Многие надеются на то, что модель развития GRASS, использованная USA/CERL устарела и будет изменена. Возможно: Под управлением другого хозяина, такого как NASA (нуждающиеся в мощной научной системе GIS совмещенной с системой обработки изображений для их Системы Наблюдения за Землей).

На распространенную модель....что-то похожее на Linux?

Что-то напоминающее гибрид? Возможно, усилия по поддержке в сети приведут к образованию конференций, например: comp.infosystems.gis.grass, включающая в себя:

comp.infosystems.gis.grass.academics

comp.infosystems.gis.grass.publicservice

comp.infosystems.gis.grass.commercialvalueadded

comp.infosystems.gis.grass.commercialdistributors

comp.infosystems.gis.grass.programming

comp.infosystems.gis.grass.users

comp.infosystems.gis.grass.centralcommittee

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

GRASS имеет потенциальные возможности в следующих областях:

Использование, в качестве как научной, так и обычной графической GIS. Многие GIS могут рисовать хорошие карты. Но многие из них не могут производить научно-аналитические функции также легко и удобно, как это можно сделать в GRASS. GRASS была спроектирована и разработана именно как научная GIS, для анализа окружающей среды. На данный момент есть одна веб-версия GRASS. Она разработана Калифорнийским Университетом с использованием веб-форм для работы с сервером, который выполняет вывод в формате .gif, помещает изображения на странички и отсылает их по запросу. Эту версию можно найти по адресу http://www.regis/berkeley.edu/grasslinks.;

Образование. GRASS гораздо более удобна для изучения, чем любая другая GIS. Ее гораздо проще изменить (для тех, кто хочет ее изучить как программу, а не научный инструмент), чем другие GIS, так как они поставляются без исходников. И, конечно, ее могут позволить себе даже студенты, в отличии от других GIS.

Разработка приложений для исследований и проектирования. Многие университеты используют GRASS из-за следующих преимуществ: наличие исходников, простая процедура изменения, довольно просто написать скрипты и т.д.

Коммерциализация. этот документ дает основную информацию о коммерческой версии GRASS. Эта компания (может и другие?) будет только приветствовать ваши предложения по продвижению/поддержке этого продукта.

Есть и еще один немаловажный вопрос... кто сможет послужить эквивалентом Linus Torvelds в этой модели управления? Скорее всего, не какая-то личность. Поэтому я оперирую понятием, центральный комитет. Все ваши предложения и замечания по этой главе я внимательно изучу.

Руководство к установке:
********************************************************************
* GRASS 4.1 обновление 3 для Linux
*
* Этот пакет содержит только программы GRASS, в нем *НЕТ* никаких данных для GIS
* Данные для примера можно получить по адресу
* moon.cecer.army.mil
*
* Скомпилировано: Andy Burnett - burnett@zorro.cecer.army.mil
* Дата: April 7, 1994

********************************************************************
Требования к системе:

        35 Mб свободного места на диске для установки пакета

Требования к библиотекам системы:

        libc4.5.21 или выше

        libX.so.3.1.0 или выше

Если вы используете библиотеки, которые старше вышеперечисленных, то этот релиз
*НЕ* будет работать на вашей системе.

--------------------------------------------------------------------------
Файлы, находящиеся в релизе:

        README_4.1.3            то, что вы сейчас читаете,
ginstall                простой скрипт установки grass
grassaa --------|
grassab         |
grassac         |
grassad         |
grassae         |--     программы linux GRASS
grassaf         |
grassag         |
grassah         |
grassai         |
grassaj         |
grassak --------|

УСТАНОВКА:

        Для установки этих программ под linux, вы можете просто запустить 
скрипт ginstall или вы можете разархивировать файлы вручную.
Я рекомендую использовать скрипт ginstall ... он очень простой и 
надежный.  Для запуска скрипта ginstall, вам понадобится 
gawk (gnu awk), установленный на вашей машине, и он должен находиться в одном из стандартных
каталогов, перечисленных в переменной PATH.

Если вы все же решили сделать это собственноручно, то вам следует: 

o  создать домашний каталог(/usr/grass, /usr/local/grass,
или, на ваше усмотрение, любой другой) который мы назовем условно GISBASE.

********************* ВНИМАНИЕ **************************************
с этого момента, заменяйте $GISBASE именем каталога, который вы только
что создали
********************* ВНИМАНИЕ **************************************

o  cat grassa? | gzip -d | (cd $GISBASE; tar xvf -)
Эта команда разархивирует все в каталог $GISBASE

o  скопируйте $GISBASE/etc/moncap.sample в $GISBASE/etc/monitorcap и отредактируйте его.
o  смените все совпадения с GBASE на $GISBASE
o  скопируйте $GISBASE/etc/grass4.1 в доступный каталог (я рекомендую
/usr/bin)
o  отредактируйте копию которую только что сделали:
смените все совпадения с GBASE на $GISBASE

Приложение B: Приобретение/Установка GRASS4.1.5

В этом предложении рассказывается о том, как скачать и установить GRASS4.15 для Linux;(5-ое последнее обновление к последнему релизу GRASS, версии 4.1).

Как скачать эти файлы:

ftp moon.cecer.army.mil
login: anonymous
password: your email address
cd pub/grass/grass4.1/release/binaries/linux
image
mget linuxa*
bye

Руководство к установке:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Файлы в этом релизе:
README_4.1.5            то, что вы сейчас читаете,
install.sh                простой скрипт установки grass
linuxaa --------|
linuxab         |
linuxac         |
linuxad         |
linuxae         |--   программы GRASS, версии 4.1.5 для Linux
linuxaf         |
linuxag         |
linuxah         |
linuxai --------|

* * * * * * * * * * *** * * * * * * * * * * * * * * * * * * * * * * *
* GRASS4.15 был скомпилирован под Linux на моей машине со следующей конфигурацией:
Slackware 3.0
ядро 1.2.13
gcc 2.7.0
libc 5.0.9
flex 3.5.2

~ ~ ~ ~ ~ ~ ~
~ ВАЖНО:    ~
~ ~ ~ ~ ~ ~ ~
LINUX GRASS 4.15 РАБОТАЕТ ТОЛЬКО ПОД LINUX С ПОДДЕРЖКОЙ ELF.  
ПРОГРАММА МОЖЕТ И НЕ РАБОТАТЬ С БОЛЕЕ РАННИМИ ВЕРСИЯМИ ЯДРА И/ИЛИ GCC И FLEX.

Программа заархивирована программами tar и gzip, затем разбита на 9 (приблизительно 1.3 Mб
- 1200 x 1K блоков) файлов, названных с linuxg.aa по linuxg.ai.

Вам следует скачать, используя протокол ftp в двоичном режиме передачи, все файлы linuxg.a*, 
а так же этот файл readme и скрипт установки - install.sh.  Желательно скопировать их в 
в корневой каталог.

В корневом каталоге в режиме командной строки UNIX, напечатайте
sh ./install.sh full_path_to_the_destination_directory

и эта команда автоматически разархивирует файлы linuxg.a* в указанный каталог
(destination directory), и отредактирует некоторые специфические файлы. 
Вам понадобится для этого около 26 Mб места на диске.

В указанном каталоге (destination directory), вы найдете скрипт grass4.1.  Он
должен быть отредактирован в зависимости от каталога, в который вы хотите установить программу. 
Теперь или переместите/скопируйте файл grass4.1 в каталог, указанный в переменной PATH или
создайте символьную ссылку следующим образом:
cd /usr/local/bin
ln -s destination_directory/etc/grass4.1 grass4.1

Теперь вы можете запустить GRASS командой grass4.1, если знаете, как с ним управляться дальше.

В каталоге destination_directory/etc есть каталог readme. В нем есть несколько 
файлов readme с описанием некоторых команд. Все скомпилированные команды можно найти в 
файле commands.readme. Я не могу утверждать, что все из них работают, но большинство из них я проверил. 
Если вы найдете неработающие, то пошлите сообщение в конференцию пользователей grass
и, возможно, сообща, мы сможем решить эту проблему.

Yung-Tsung Kang,
Michigan State University

Приложение C: приобретение/Компиляция исходников GRASS

Если GRASS работает под Linux, то почему бы не использовать и исходники?

Давайте попробуем ответить на;вопрос: "Почему я не могу получить исходники для своей GIS, так я бы смог посмотреть, как она работает, и исправить некоторые вещи?";

Если вы хотите:

Добавить некоторые функции GRASS.

Понять, как работают некоторые функции (понять, что влияет на функцию. Могу ли я что-нибудь туда добавить?)

Изменить программу (если вы намерены это сделать, то прочтите;Приложение D!),

Если вы пробуете скомпилировать несколько десятков мегабайт исходников.

Сначала вам потребуется скачать исходники и руководство к установке GRASS. Возможно, вам понадобится руководство для программиста GRASS и руководство для пользователя. Для этого выполните следующее:

ftp moon.cecer.army.mil
login: anonymous
password: your email address
cd pub/grass/grass4.1/release/source
get README.4
get README.5
image
mget s4* (or s5*, your choice)
cd ../../documents
get installGuide.ps.Z
cd /manuals/programmer/postscript
get progman.ps.Z
cd ../../user/postscript
get refman.ps.Z
bye

Не забывайте про этот сайт. Там, в каталоге pub/grass/grass4.1/document, есть несколько обучающих программ по GRASS. Там есть две версии исходников (я расскажу только о GRASS 4.14, хотя там есть и версия 4.15). В каталоге pub/grass/outgoing есть много функций, в основном дополнительных (и множество других вещей, не вошедших в основную версию).

Следуйте инструкциям приведенными в файле README.4, для установки исходников GRASS 4.14 (иногда называется версией 4.1.4). И, соответственно, в файле README.5 описана установка исходников GRASS 4.15 (она иногда называется версией 4.1.5).

После установки исходников разархивируйте и распечатайте installGuide.ps.Z (или troff-версию, если это вам больше по вкусу). Скорее всего, вам понадобится то же самое сделать с файлами refman.ps.Z и progman.ps.Z. Напомню, что программа progman.ps.Z - это руководство для программиста, которое содержит много информации по форматам информации и структуре каталогов. Продвинутые пользователи, возможно, захотят разобраться и с системными утилитами GRASS, даже если не будут ими пользоваться.

Теперь, для того, чтобы успешно установить GRASS, изучите руководство по установке (файл installGuide.ps.Z). Не пугайтесь того, что этот документ выглядит большим. Если вы устанавливали Linux самостоятельно, то установка GRASS у вас не вызовет затруднений. Не тушуйтесь, если функция или две у вас не скомпилировались. У меня такое случилось с двумя. К счастью, это были малоупотребительные функции... когда-нибудь я до них доберусь и откомпилирую.

По этому адресу вы можете найти руководство к установке самой новой версии;GRASS 4.2 from Baylor University:http://www.baylor.edu/~grass Этот документ был написан Baylor, я не успел его просмотреть и откорректировать, так как вышел он несколько дней назад. Но, в целом, процедура установки почти не изменилась.

Быстрый запуск GRASS 4.2
Руководство по установке

ВНИМАНИЕ: Это руководство для быстрой установки;GRASS 4.2. Настоятельно рекомендуем прочесть полное руководство. $GIS/src - каталог содержащий файлы и скрипты для компиляции GRASS. При запуске этих скриптов вы скомпилируете GRASS для своей системы.

Вы можете загрузить диск с исходниками GRASS на различных типах машин и откомпилировать их, не делая копий исходников. Следуйте инструкциям для каждого типа машин.

ВНИМАНИЕ: Это руководство подразумевает, что вы хорошо знакомы с UNIX, C, make, и скриптами shell. GRASS подвержен воздействию законов Murphy, и единственной защитой от этого может послужить ваше знание данных вещей.

ВНИМАНИЕ: Эти инструкции и скрипты использовались при компилировании GRASS на различных типах машин. Пожалуйста, сообщите мне результаты компилирования на своей системе по адресу:

grass@baylor.edu

СОДЕРЖАНИЕ КАТАЛОГОВ

    GISGEN      скрипт, который компилирует GRASS

    MAKELINKS   скрипт, который используется после GISGEN для создания исполняемых программ

VERSION     версия и дата релиза GRASS

    generic/    дополнительные независимые файлы, требующиеся gmake
gmake     скрипт shell, который выполняет компиляцию
make.def  создает переменные(командой make)
make.tail пояснения по make

    head/       файлы заголовков gmake для этого сайта.  Заголовки файлов
создаются запуском команды utils/setup.

    lists/      список программ, подлежащих компиляции
GRASS     стандартные программы GRASS
local     специфические программы сайта GRASS
...       архитектурно зависимые программы GRASS

    next_step/  файлы, используемые GISGEN для отслеживания статуса
компиляции. Используются GISGEN для перезапуска
(после ошибки) компиляции с того места, где она прекратилась.

    utils/      содержит скрипт 'setup' и все вспомогательные скрипты
и файлы, используемые 'setup'

ОБЩИЙ ОБЗОР ЭТАПОВ КОМПИЛЯЦИИ

 (1)  Создайте файл содержащий информацию по местонахождению make,
и другую специфическую информацию об этой программе.

 (2) Отредактируйте файлы, содержащие список файлов, которые должны быть
скомпилированы

 (3) Запустите скрип компилирования GRASS

 (4) Запустите скрипт, создающий ссылки

 (5) Отредактируйте конфигурационные файлы драйверов

 (6) Скомпилируйте тестовые программы GRASS.

 (7) Скомпилируйте гибридные программы и программы, относящиеся к GRASS.

ЭТАПЫ КОМПИЛЯЦИИ (ПОДРОБНО)

(1) Создайте;makefile

GRASS должен быть скомпилирован с отображением различных:

флагов компиляции и загрузки

системных библиотек

каталогов для установки

местонахождение баз данных по умолчанию

Запустите "utils/setup" и ответьте на вопросы. Запускаемый скрипт, который производит компиляцию находится в каталоге (по умолчанию) /usr/local/bin.

Просмотрите вновь созданный файл на предмет ошибок. Ниже приведено краткое описание для переменных:

ARCH            = ключевое имя, указывающее на архитектуру машины, на которой
производится компиляция GRASS.
GISBASE         = Название каталога, в котором будет находится скомпилированный GRASS
UNIX_BIN        = Название каталога, в котором будут храниться программа запуска GRASS
и gmake

DEFAULT_DATABASE= Название каталога, в котором будут расположены базы GRASS
DEFAULT_LOCATION= Базы GRASS, которые устанавливаются по умолчанию

COMPILE_FLAGS   = Флаги компиляции
LDFLAGS         = Флаги загрузки

TERMLIB         = Системные библиотеки, включающие движение курсора на низком уровне
CURSES          = Системная библиотека, поддерживающая управление курсором
MATHLIB         = Системная математическая библиотека
LIBRULE         = Методы библиотек архивирования и случайных чисел

USE_TERMIO      = Использовать ли библиотеку termio, если она есть
USE_MTIO        = Использовать ли библиотеку mtio, если она есть
CAN_CLEAR       = Флаг, указывающий на возможность очистки экрана терминала
DIGITFLAGS      = Флаги установки пользователя и приоритетов программы v.digit

(2) Отредактируйте файлы, содержащие список путей и имен файлов программ, специфичных для этой машины

Каталог lists/ содержит файлы со списком каталогов, которые будут компилироваться. Имена каталогов задаются относительно каталога src исходных текстов GRASS. Файл lists/GRASS содержит список всех базовых программ GRASS, которые собираются на всех сайтах. Файлы lists/local и lists/$ARCH.

    -----------------------------------------------------------------
$ARCH - это название архитектуры, которое вы задали при запуске скрипта
utils/setup.  Вы можете узнать его, запустив:
gmake4.2 -sh | grep ARCH
-----------------------------------------------------------------

Файла lists/$ARCH может и не быть, но вы можете создать его самостоятельно, добавив в него список тех программ, которые вы бы хотели собрать именно для своей машины. Это список, который позволяет собрать из исходных текстов, подключенных через NFS, несколько разных наборов готовых программ для разных архитектур. Все машины, использующие одни и те же исходные тексты, подключенные через NFS, откомпилируют каталоги, заданные в lists/local. Все списках могут быть и строки комментариев - они задаются символом # в начале строки. Файл lists/local содержит список всех драйверов дигитайзеров, графических устройств, графопостроителей и т.п.. Все машинно-зависимые устройства закомментированы - вам надо раскомментировать только те, которые есть у вас. Вы также можете перенести драйвера графики в соответствующий файл lists/$ARCH.

(3) Запустите программу сборки GRASS

Скрипт GISGEN управляет процессом компиляции. Если все идет удачно, то вы можете просто дать команду GISGEN и подождать. Весь процесс сборки занимает, около получаса на быстрых машинах и до 8 часов на медленных.

GISGEN берет имена каталогов, заданные в файлах lists/GRASS lists/$ARCH и lists/local, и запускает gmake4.2 в каждом каталоге. На экран выдаются сообщения как от GISGEN, так и от программы make. Ошибка на любом шаге сборки остановит компиляцию. В случае ошибки вы можете:

  1 - Исправить ошибку компиляции, подправив код в каталоге, который привел к
ошибке.  После внесения изменений, войдите в этот каталог и запустите
GISGEN. Компиляция продолжится с каталога, в котором была ошибка
и продолжится далее по списку.

  2 - Перезапустить GISGEN.  Если ошибка связана с уже откомпилированным кодом,
или с опциями сборки, заданными в шаге 1, то вы должны удалить
файл следующий_шаг/$ARCH (или следующий_шаг/следующий_шаг ,если имя
архитектуры не было задано в шаге 2). Теперь вы можете
Перезапустить GISGEN.

  3 - Пропустить каталог с ошибкой. В этом случае, вам надо просмотреть
содержимое файлов list/GRASS lists/$ARCH и lists/local для определения имени
каталога,следующего за ошибочным.  Откройте файл
next_step/$ARCH, который содержит имя каталога с ошибкой. Замените это имя
на имя следующего за ошибочным каталога и перезапустите GISGEN

После окончания процесса сборки, GISGEN поместит слово DONE в файл next_step и выведет на экран фразу "DONE generating GIS binary code".

(4) Запустите скрипт линковки GRASS

GISGEN производит процесс компиляции таким образом, что программы GRASS находятся в своих каталогах, оставаясь недоступными пользователю. Многие команды пользователя при этом работают с одной программой под названием "front.end". Для каждой настоящей программы GRASS должны быть созданы ссылки на эту программу. Это делается ПОСЛЕ окончания работы GISGEN. Для того, чтобы создать (или обновить) ссылки во всех пользовательских программах, запустите скрипт MAKELINKS.

(5) Отредактируйте файлы конфигурации драйверов

Вашей откомпилированной системе могут потребоваться различные драйвера графических устройств, графопостроителей, дигитайзеров и т.п. Для более подробных инструкций читайте Руководство по установке GRASS.

ЗАМЕЧАНИЕ: Если у вас возникли проблемы при сборке графического драйвера, то зайдите в каталог $GIS/src/display/devices и соберите необходимые драйвера вручную, при помощи gmake4.2.

(6) Сборка предварительных и альфа-версий программ GRASS.

Программы GRASS делятся на 3 категории:

MAIN - Программы, собранные на шаге 3. Они все проверены временем, и их можно назвать надежными.

ALPHA - Альфа-программы, которые, скорее всего, перейдут в категорию MAIN в следующем выпуске программы.

CONTRIB - На многих сайтах имеется большое количество специализированных GRASS-программ, которые служат разным целям, но они еще не откорректированы и не проверены настолько хорошо, чтобы войти в категорию альфа-программ.

ALPHA-программы находятся в каталоге src.alpha. Вы, как установщик, можете зайти в каталоги этих программ и собрать те, которые вам необходимы. В каталогах, в которых есть файлы Gmakefile, просто дайте команду: gmake4.2

CONTRIB-программы находятся в каталоге src.contrib. Состояние этих программ варьируется. Некоторые программы можно собрать при помощи gmake4.2; другие можно использовать в качестве шаблона при написании новых программ.

(7) Сборка программ, связанных с GRASS, а также гибридных программ.

Сообщество пользователей GRASS обнаружило, что некоторые известные программы могут использоваться в связке с GRASS. Эти программы находятся в каталоге src.related. Собирайте эти программы в соответствии с инструкциями (или их отсутствием) в отдельных каталогах.

Гибридные программы используют как свойства GRASS, так и свойства одной или нескольких "связанных" программ. Они находятся в каталоге src.garden. Им требуется успешная сборка "связанных" программ. И, обычно, компилируются при помощи gmake4.2 и включают в себя файлы Gmakefile.

Остальная часть процесса сборки может занять некоторое время. Если вы уже установили готовые программы GRASS binaries, то вам лучше сделать резервную копию вашей системы (или, как минимум, работающих собранных программ) чтобы не повредить их процессом компиляции.

Удачи! Вы можете чувствовать себя спокойно - если у вас не получится собрать программы, воспользутесь уже собранными.

Приложение D: Если вы хотите переделать какую-либо часть GRASS, сначала прочтите это!

GRASS был разработан, как программа для некоммерческого использования. Поэтому многие коммерческие разработчики были против этого проекта, но потом извлекли из него свою выгоду, взяв из него самое лучшее.;Благодаря этой системе, другие;GIS получили толчок в развитии. Некоторые компании основали свой бизнес на создании сайтов, посвященных;GRASS, и дополнительных приложений и баз данных.;

На данный момент USA/CERL больше не поддерживает бесплатную версию GRASS и пользователи, в свою очередь, используют то, что есть.;

Существует коммерческая версия GRASS:http://www.las.com/grassland, сделанная на основе бесплатной компанией Logiciels et Applications Scientifiques (L.A.S) Inc. Монреаль. Позже они выполнили версии GRASSLAND для Sun, Linux и Windows NT. LAS пытается возродить сайт с бесплатной версией, как источник идей для дальнейших разработок.

Приложение E: Пример некоторых важных файлов Linux GRASS.

Это приложение содержит примеры некоторых файлов GRASS. В действительности, здесь приведены несколько вариантов одного файла. Но, так или иначе, это самый важный файл для конфигурирования! Позднее здесь будут приведены примеры конфигурационных файлов баз данных (напр. DEFAULT_WIND) и прочие.

В Руководстве по установке (параграфы 10-11) вы сможете найти значение файла [header] в директории $GIS/src/CMD/header. В руководстве предпочтение отдается системам Sun, потому что они были использованы при разработке GRASS4. Ниже приводятся примеры для linux;

Первая версия:

CC                  = gcc
ARCH                =

GISBASE             = /user/grass4.1
UNIX_BIN            = /user/grass4.1/bin

DEFAULT_DATABASE    = /user/grass4.1/data
DEFAULT_LOCATION    = china

COMPILE_FLAGS       = -O2
LDFLAGS             = -s

XCFLAGS             = -D_NO_PROTO -DXM_1_1_BC
XLDFLAGS            =
XINCPATH            =
XMINCPATH           =
XLIBPATH            =
XTLIBPATH           = -L/usr/lib
XMLIBPATH           = -L/usr/lib
XLIB                = -lX11
XTLIB               = -lXt
XMLIB               = -lXm
XEXTRALIBS          =

TERMLIB             =
CURSES              = -lcurses $(TERMLIB)
MATHLIB             = -lm

#                   LIBRULE = ar ruv $@ $?
#                   LIBRULE = ar ruv $@ $?; ranlib $@
#                   LIBRULE = ar ruv $@ $?; ar ts $@
#                   LIBRULE = ar rc $@ `lorder $(OBJ) | tsort`
LIBRULE             = ar ruv $@ $?

USE_TERMIO          = -DUSE_TERMIO
USE_MTIO            = -DUSE_MTIO
USE_FTIME           = -DUSE_FTIME
DIGITFLAGS          = -DUSE_SETREUID -DUSE_SETPRIORITY
VECTLIBFLAGS        =
GETHOSTNAME         = -DGETHOSTNAME_OK

Вторая версия:
#CC                  = gcc
#CC                  = gcc -ggdb -traditional
CC                  = gcc -traditional
#CC                  = gcc -static

ARCH                = linux

GISBASE             = /usr2/local/grass/grass4.1
UNIX_BIN            = /usr/local/bin

DEFAULT_DATABASE    = /usr2/local/grass
DEFAULT_LOCATION    = grass4.1

COMPILE_FLAGS       =
#COMPILE_FLAGS       = -O
LDFLAGS             = -s

XCFLAGS             = -D_NO_PROTO
XLDFLAGS            =
XINCPATH            = -I$GISBASE/xgrass
#XINCPATH            =
XMINCPATH           =
XLIBPATH            = -L/usr/lib
XTLIBPATH           = -L/usr/lib
XMLIBPATH           = -L/usr/lib
XLIB                = -lX11
XTLIB               = -lXt
XMLIB               = -lXm
XEXTRALIBS          =

TERMLIB             =
CURSES              = -lcurses $(TERMLIB)
MATHLIB             = -lm

#                   LIBRULE = ar ruv $@ $?
#                   LIBRULE = ar ruv $@ $?; ranlib $@

#                   LIBRULE = ar ruv $@ $?; ar ts $@
#                   LIBRULE = ar rc $@ `lorder $(OBJ) | tsort`
LIBRULE             = ar ruv $@ $?; ranlib $@

USE_TERMIO          = -DUSE_TERMIO
USE_MTIO            = -DUSE_MTIO
USE_FTIME           = -DUSE_FTIME
DIGITFLAGS          = -DUSE_SETREUID -DUSE_SETPRIORITY
VECTLIBFLAGS        =
GETHOSTNAME         = -DGETHOSTNAME_OK

Третья версия:

#CC                  = gcc -traditional -ggdb
CC                  = gcc -traditional -m486
#CC                  = gcc
ARCH                = linux

GISBASE             = /usr/local/grass/grass4.1
UNIX_BIN            = /usr/local/bin

DEFAULT_DATABASE    = /usr/local/grass
DEFAULT_LOCATION    = grass4.1

COMPILE_FLAGS       = -O2
LDFLAGS             = -s

XCFLAGS             = -D_NO_PROTO -DXM_1_1_BC
XLDFLAGS            =
XINCPATH            =
XMINCPATH           =
XLIBPATH            = -L/usr/lib
XTLIBPATH           = -L/usr/lib
XMLIBPATH           = -L/usr/lib
XLIB                = -lX11
XTLIB               = -lXt
XMLIB               = -lXm
XEXTRALIBS          = -lXmu

TERMLIB             =
CURSES              = -lcurses $(TERMLIB)
MATHLIB             = -lm

#                   LIBRULE = ar ruv $@ $?
#                   LIBRULE = ar ruv $@ $?; ranlib $@
#                   LIBRULE = ar ruv $@ $?; ar ts $@
#                   LIBRULE = ar rc $@ `lorder $(OBJ) | tsort`
LIBRULE             = ar ruv $@ $?; ranlib $@

#USE_TERMIO          = #-DUSE_TERMIO
USE_TERMIO          = -DUSE_TERMIO
USE_MTIO            = -DUSE_MTIO
USE_FTIME           = -DUSE_FTIME
DIGITFLAGS          = -DUSE_SETREUID -DUSE_SETPRIORITY
VECTLIBFLAGS        =
GETHOSTNAME         = -DGETHOSTNAME_OK

И еще одна версия:

CC                  = cc
ARCH                = linux

GISBASE             = /usr/local/grass4.15/linux
UNIX_BIN            = /usr/local/grass4.15/linux

DEFAULT_DATABASE    = /data/grassdata
DEFAULT_LOCATION    =

# -fwritable-strings - for ps.map only
#COMPILE_FLAGS       = -O -m486 -fwritable-strings
COMPILE_FLAGS       = -O -m486
LDFLAGS             = -s

XCFLAGS             = -D_NO_PROTO
XLDFLAGS            =
XINCPATH            =
XMINCPATH           =
XLIBPATH            = -L/usr/X11R6/lib
XTLIBPATH           = -L/usr/lib
XMLIBPATH           = -L/usr/lib
XLIB                = -lX11
XTLIB               = -lXt
XMLIB               = -lXm
XEXTRALIBS          =

TERMLIB             =
CURSES              = -lcurses $(TERMLIB)
MATHLIB             = -lm

#                   LIBRULE = ar ruv $@ $?
#                   LIBRULE = ar ruv $@ $?; ranlib $@
#                   LIBRULE = ar ruv $@ $?; ar ts $@
#                   LIBRULE = ar rc $@ `lorder $(OBJ) | tsort`
LIBRULE             = ar ruv $@ $?

USE_TERMIO          = -DUSE_TERMIO
USE_MTIO            = -DUSE_MTIO
USE_FTIME           = -DUSE_FTIME
DIGITFLAGS          = -DUSE_SETREUID -DUSE_SETPRIORITY
VECTLIBFLAGS        = -DPORTABLE_3
GETHOSTNAME         = -DGETHOSTNAME_OK