Очень маленькая ГИС
Оригинал: A very tiny GIS
Автор: Боб Месибов (Bob Mesibov)
Дата публикации: 5 мая 2013 г.
Перевод: А. Жбанов
Дата перевода: 10 ноября 2013 г.
quickplot
- это быстрый интерактивный инструмент для двумерного рисования. Все,
что ему требуется для работы - это текстовый файл со списком координат X
и Y. Если эти координаты представляют собой долготу и широту,
выраженные в десятичных градусах, то quickplot начинает работать как простая ГИС, обладающая при этом некоторыми удивительными возможностями.
В этой статье объясняется, как я приспособил quickplot для отображения карт Австралии. По большей части я работаю с картами с помощью qgis, и Google Maps или Google Earth, но quickplot очень удобен для быстрого создания и масштабирования простых карт. При размере исполняемого файла в 453 килобайта quickplot является самой маленькой и быстрой известной мне ГИС.
Создаем базовую карту
Я использую quickplot 0.8.15 из репозитория моего Debian Squeeze. Пользователям Debian Wheezy доступна более новая версия 0.10.3. quickplot может работать из командной строки наряду с GUI, поэтому я внес в скрипт запуска несколько основных опций:
#!/bin/bash
quickplot \
--canvas-color "#ffffff" \
--geometry=800x800+10+80 \
--grid-color "#888888" \
--no-lines \
--point-size "1" \
--grid-line-width "1" \
--same-scale \
~/Spatial/Quickplot_data/australia.txt
Здесь команда quickplot берет широту и долготу точек из файла australia.txt (чуть позже я расскажу о нем подробнее). Кроме него я выбрал еще семь опций:
- установил белый фон карты (canvas-color);
- сделал окно карты квадратом со стороной 800 пикселов и поместил его в желаемое место на экране (geometry);
- выбрал светло-серый цвет для координатной сетки (grid-color);
- запретил соединять координатные точки линиями(no-lines);
- установил размер каждой координатной точки в 1 пиксел (point-size);
- установил ширину линий координатной сетки в 1 пиксел (grid-line-width);
- отобразил все в едином масштабе (same-scale).
И после этих простейших настроек я просто щелкаю пункт меню quickplot для запуска этого скрипта, и моя базовая карта мгновенно возникает на дисплее в окне quickplot (первый снимок экрана):
Разбираемся с отображением
Базовая карта Австралии на первом снимке экрана состоит примерно из
80 000 (!) точек. Координаты точек перечислены в виде простого списка в
файле australia.txt, вот фрагмент этого файла:
...
146.5884 -43.5408
146.5804 -43.5371
146.5739 -43.5344
146.5577 -43.5284
146.5427 -43.5243
146.5407 -43.5241
146.5373 -43.525
146.5322 -43.5307
146.5295 -43.5307
146.5212 -43.5297
146.5194 -43.5272
146.5147 -43.524
146.5123 -43.5239
...
Я получил эти точки путем обработки свободно доступного файла с
контуром австралийского побережья. После его конвертации в формат KML с
помощью qgis я воспользовался средствами GNU/Linux для
работы с текстом, чтобы сократить KML-файл до разделенного символами
табуляции списка пар "широта-долгота".
Заметьте, что quickplot не только очень
быстро отрисовывает 80 000 точек, но также отображает снабженную метками
координатную сетку меридианов и параллелей. Для этого он использует
диапазон значений долготы и широты из файла australia.txt.
Для того, чтобы увеличить масштаб карты, я растягиваю прямоугольник
правой кнопкой мыши (второй снимок экрана), а затем отпускаю кнопку:
quickplot перерисовывает карту так, чтобы в окне
находилось содержимое прямоугольника, а также пересчитывает и отображает
новые метки координатной сетки (третий снимок экрана):
Я могу увеличивать масштаб многократно и таким образом просматривать
все меньшие и меньшие области. Для возвращения к предыдущему значению
масштаба я растягиваю правой кнопкой мыши прямоугольник, который
заканчивается за пределами одной из сторон окна, а затем отпускаю
кнопку. Если же я растяну прямоугольник за пределы двух сторон окна, то
вернусь к исходному (не увеличенному) отображению карты.
Добавляем и настраиваем слои
Начиная с этого момента, я использую графический интерфейс для вызова
диалоговых окон, но для этого можно использовать также простые
сочетания клавиш. Например, если нажать "о", откроется диалог "Открыть
файл" (четвертый снимок экрана):
В этом диалоговом окне я открываю файл Geijera_parvifolia.txt.
Это простой текстовый файл с перечислением в виде пар "широта-долгота"
мест, в которых встречается красивое деревце с местным названием "wilga" (Geijera parvifolia). После того как я выбираю этот файл и щелкаю "OK", quickplot открывает новую вкладку со схемой ареала произрастания этого вида. Но мне нужно, чтобы эти точки наложились поверх моей базовой карты, поэтому я закрываю новую вкладку.
Вернувшись на вкладку с базовой картой я нажимаю "g" для того, чтобы
вызвать диалог с вкладкой "Выбор полей для отображения" ('Select Fields
to Plot') и здесь нам становится ясна логика quickplot
(пятый снимок экрана). Первое поле ("x") в файле данных соответствует на
чертеже координатной оси 0 (долготе), а второе ("y") - оси 1 (широте).
Обраттите внимание на то, как эти поля соединены для файла australia.txt .
Я таким же образом устанавливаю переключатели для файла данных по ареалу нашего растения и quickplot теперь отображает все как мне требуется:
Далее я нажимаю "p" для вызова диалога черчения (седьмой снимок экрана):
Здесь я щелкаю по кнопке "Настроить чертеж" ('Configure Plot') для
файла с данными по вилге, затем выбираю размер маркера равным 5 пикселам
и синий цвет для этого слоя. Кроме того, я поменял цвет контура
береговой линиии Австралии на черный. И вот я получаю то, чего хочу
(восьмой снимок экрана):
Функциональность ГИС
Я могу добавить и настроить столько слоев, сколько мне понадобится,
любой из них я смогу удалить или отключить, как в обычной ГИС. Я могу
увеличивать масштаб по своему желанию и исследовать нужные фрагменты
карт (девятый снимок экрана), координатная сетка подскажет мне, где я
нахожусь:
В данном случае я вывел на экран места обитания двух видов квинслендских
многоножек, ареалы которых не пересекаются. Курсор находится между
ближайшими точками обитания этих видов, при этом quickplot
выдает широту и долготу курсора в строке состояния в левой нижней части
окна. Чтобы сохранить текущий фрагмент карты в файл формата PNG, я
просто нажимаю "i" и ввожу имя для сохраняемого файла.
Для столь крошечной программы quickplot впечатляюще
быстро загружает и отображает большое количество точек. Его в конце
1990-х годов создал и до сих пор поддерживает разработчик Ланс Арсенолт
(Lance Arsenault). Все версии quickplot свободно доступны на условиях GNU General Public Licence.
Об авторе
Я пенсионер и живу в Австралии, в городе Пенгуин,
штат Тасмания. Я люблю мастерить и предпочитаю работать с клавиатурой, а
не мышью. http://rus-linux.net/MyLDP/soft/tiny-GIS.html
|