***** 1 - Эдуард Казаков

advertisement
Python для обеспечения
географических исследований
Открытый экспериментальный курс
В это тревожное время с вами:
Эдуард Казаков
Ассистент кафедры картографии и геоинформатики СПбГУ
ГИС-фрилансер (ВШЭ, комитет по природным ресурсам ЛО, Эрмитаж)
e.kazakov@spbu.ru
Skype: silenteddie
2
Вся необходимая литература, ссылки, презентации, лекции и
практические задачки на самостоятельную работу будут
публиковаться на сайте:
www.ekazakov.info/students/
3
4
Важные замечания:
Курс рассчитан в первую очередь на географов и будет малоинтересен (или
даже вреден) профессиональным программистам и тем, кто себя к ним
относит
Мы не будем сильно заботиться об искусстве написания кода, использовать
хитрые приёмы и уловки, особо экономить память и думать о
быстродействии – мы будем пытаться просто применять инструмент для
своих нужд
В курсе ни слова не будет о системах контроля версий, гитхабах, покрытии
кода тестами и прочих, несомненно важных, вещах.
Простите.
5
Важные замечания:
Будут использоваться порой некрасивые и неэффективные подходы, зато
понятные и воспроизводимые. Мы не готовимся разрабатывать ПО на
продажу.
Некоторые простые вещи будут разбираться довольно подробно.
Все упражнения выносятся на самостоятельную работу.
Предложения, пожелания, вопросы, крики о помощи, а также
возгласы ненависти и угрозы завсегда принимаются.
6
Нет, бумажку не дадим.

7
Что за зверь такой Python и почему мы сюда пришли?
Мультипарадигменный язык программирования, высокого уровня со строгой
динамической типизацией, автоматическим управлением памятью и удобными
высокоуровневыми структурами данных. Поддерживает обработку исключений,
параллельные вычисления и другие классные штуки.
Рожден в 1991 году в голландском институте CWI как расширяемый скриптовый язык
Родитель: Гвидо Ван Россум
8
Что за зверь такой Python и почему мы сюда пришли?
Активнейшим образом развивается и имеет громаднейшую инфраструктуру (фреймворки,
библиотеки, сообщества), которая делает его самым востребованным языком в областях
математики, физики, лингвистики, науках о Земле, биологии, химии, компьютерного
зрения и многих других.
На нём пишут легкие скрипты, полноценные настольные приложения, веб-порталы…
Любые типы ПО.
9
Что за зверь такой Python и почему мы сюда пришли?
На данный момент на Python наворочено очень много всего модного и мощного.
Его можно выполнять на Java-машинах и платформе .Net, можно компилировать в байткод и так далее.
Но прежде всего и изначально (и мы будем работать в такой парадигме) — это
интерпретируемый язык сценариев.
ЧТО ЭТО ЗНАЧИТ?!
10
Есть некоторая специальная программа – интерпретатор. Собственно Python.
Есть последовательность команд, напечатанных пользователем в простом
текстовом файле.
Пользователь запускает Python и говорит ему: а прочитай-ка ту последовательность
команд, которая записана во-о-он в том файле. Да не просто прочитай, а сделай всё,
как там сказано.
Python начинает читать и последовательно всё исполняет.
11
Файл test1.py
2+2
print 3+3
a=3
b=4
print a * b
12
Файл test2.py
print ‘Я дурак и возвожу пятизначное число в пятизначную степень’
print 23454 ** 31245
13
Обратите внимание, что я, для выполнения своей программы, сначала
запускаю Python.exe – интерпретатор, и в качестве аргумента передаю ему
свой файл с кодом.
Он исполняет всё, и выводит то, что его попросили вывести.
СЛЕДСТВИЕ 1: Без установленного интерпретатора Python на компьютере
программа не запустится
СЛЕДСТВИЕ 2: Все ваши программы – просто текст в обычных текстовых
файлах (только с форматом .py), и каждый, при желании, может его
прочесть.
(Это можно обойти через генерацию байт-кода (как у обычных
компилируемых ЯП), но мы не будем этим заниматься).
14
Хорошая новость: интерпретатор Python существует (и, что немаловажно, работает) на
всех современных ОС (даже на урезанных Windows CE на навороченных
холодильниках)
Но его всё равно нужно отдельно устанавливать. Просто передать вашу программу
случайному человеку, наверное, не получится.
15
Что за зверь такой Python и почему мы сюда пришли?
Python очень просто расширяется за счет модулей, библиотек и фреймворков. Причем
использовать их, как правило, очень просто.
Расширения, как правило, это просто наборы дополнительных функций, реализующих
те или иные специфические алгоритмы. Например, чтобы вручную написать отсылку
сообщения по протоколу TCP/IP, вы потратите несколько месяцев (изучить и обеспечить
поддержку протокола, разобраться с кодированием сообщения и т.д.)
А с помощью библиотеки вы пишите:
import internet
sent internet.message(host,message)
# Подключение библиотеки
# Использование встроенной функции
16
Поэтому очень многие простые программы на Python выглядят неприлично кратко:
import matplotlib.pyplot as plt
plt.plot([1, 3, 2, 4])
plt.show()
17
Существует множество пространственных библиотек (для работы с геоданными), на
которые мы посмотрим под конец курса.
Всего число профессионально разрабатываемых и поддерживаемых библиотек
исчисляется в сотнях и первых тысячах.
И в этом заключается главная мощь Python
18
Некоторые примеры того, как я каждый день использую Python в окологеографических задачах
Приходит текстовый файл, содержащий (вне всякого
порядка) данные об измерении скорости ветра на N
метеостанциях (десятки тысяч записей).
В каждой строке имя станции, дата в формате год-месяцчисло и скорость ветра.
Задача: узнать среднюю скорость ветра на каждой
станции по месяцам (12 чисел на одно имя станции).
Задача не решается тривиально с помощью электронных
таблиц типа Excel и тем более вручную
19
За час пишется программа (всего 64 строки кода), читающая файл с измерениями
и сохраняющая файл с результатами
20
21
Некоторые примеры того, как я каждый день использую Python в окологеографических задачах
Необходимо посчитать сложное преобразование
(индексное изображение) многоканального
спутникового снимка, не имея под рукой
настольной
ГИС
или
с
некоторыми
нетривиальными расчетами, там недоступными
(в математических модулях Python доступно
очень многое, от численного интегрирования до
рядов Фурье).
22
23
24
Причем запуск этой программы выглядит так:
Ничего не произошло?
На самом деле python молча открыл указанный в коде geotiff со снимком,
молча всё посчитал, и молча сохранил результат в файл, также указанный в
коде.
Подобные сценарии будут основными в нашей работе. Запускать их мы
будем примерно так.
25
Некоторые примеры того, как я каждый день использую Python в окологеографических задачах
Существует множество всяческих картометрических параметров, которые
интересны с точки зрения комплексной оценки объектов реального мира.
Например, существует понятие извилистости реки, которое напрямую
связывается со степенью её развитости, особенностями генезиса и так
далее.
Один из подходов базируется на понятии энтропии.
Задача: составить сценарий, который проглотит любой векторный файл с
реками (в формате shapefile) и вернет список с коэффициентами
извилистости каждой отдельной реки.
Это не посчитать просто в ГИС, т.к. метод предполагает итеративный анализ
каждого узла полилиний рек, доступа к чему обычно
нет ни в каком виде
26
27
Самые популярные современные геоинформационные системы ( ESRI ArcGIS и
Quantum GIS ) расширяются модулями, которые пишутся на языке Python
28
В чём код писать-то? Помню, был такой Turbo Pascal 7.0 – оно?...
Кроме шуток – но для некрупных задач идеальная среда разработки это…
Блокнот! Хотя, конечно, лучше использовать не обычный встроенный в
систему, а такой, который умеет подсвечивать синтаксис языка.
Например: notepad++ (смотри скриншоты выше)
sublime text 2
29
Конечно, существуют могучие и большие среды разработки.
Самая популярная: Eclipse IDE – но это для огромных проектов.
По опыту, легкие и интересные (а главное бесплатные) среды:
JetBrains PyCharm (community edition)
sPYder
PyScripter
IDE очень индивидуальное дело, к которому
сначала долго привыкаешь, а потом уже не
представляешь работы без него.
30
Итак, что и как устанавливать. Будем работать в Python 2.7.8
https://www.python.org/download/releases/2.7.8/
31
32
4
5
1
3
2
Вообще библиотеки для python устанавливаются через предварительно
установленный setuptools, либо через сборки, доступные на сайте
http://www.lfd.uci.edu/~gohlke/pythonlibs/
Попробуем в следующий раз
33
После установки хорошо бы настроить переменные среды
Переменные среды – это «запомненные» операционной системой пути до папок,
содержащих те или иные приложения.
Например, когда вы набираете в командной строке «ping 195.70.211.131»
операционная система на самом деле просматривает все папки, записанные в
переменные среды, на наличие программы ping.exe
Чтобы ОС понимала команду python, нужно добавить папку C:\Python27 в
переменные среды.
Можно обойтись без этого, и всякий раз вызывать интерпретатор по полному
пути
34
С настроенными переменными средами:
Без этого:
Или
35
Где это настроить:
Свойства компьютера – дополнительные параметры системы – дополнительно –
переменные среды
36
Перезагрузка компьютера
37
Без простых навыков работы с командной строкой будет грустно.
Давайте вспомним основное.
Способы запустить командную строку:
1. Win + R -> cmd.exe
2. Пуск – программы – стандартные – командная строка
3. В Windows 7 и 8 можно открыть Пуск (Или панель Metro) и начать вводить “cmd”
38
Начало строки показывает текущую директорию (C:\users\silent). По умолчанию
командная строка будет искать вызываемые файлы и приложения именно в этой
директории, потом – в переменных средах. Если указывается абсолютный путь –
в деле только он.
Получить список папок и файлов в
текущей директории – команда dir:
39
Переход из текущей директории в другую – команда cd
Три варианта использования:
cd .. – переход на папку выше
Cd <имя директории внутри текущей> - переход в папку внутри текущей
Cd <абсолютный путь до любой директории> переход в любую директорию в
рамках диска
40
Перейти на другой диск – просто набрать его букву с двоеточием
Из любой текущей директории можно вызвать любое приложение (на
любом диске) по абсолютному пути.
41
Если запускаемая программа предполагает наличие параметра (как у
Python – параметр это имя файла который нужно исполнить), то можно
использовать два пути:
Имя файла-параметра (gemi.py) без относительного пути означает, что
python.exe будет его искать только в текущей директории
Здесь текущая директория – это C:\python27
Я запускаю приложение python.exe, которое ищется (и находится) в
текущей директории. И в качестве параметра передаю ему файл по
абсолютному пути.
42
Полезно использовать кнопку tab. Она перебирает все файлы и папки, которые
существуют в данной директории.
Если вы до этого ввели какие-то символы, будут перебираться только те файлы
и папки, которые начинаются на эти символы
43
Задача на неделю простая:
- Установить Python 2.7.8
- Настроить переменные среды и разобраться с командной строкой
- Создать простой сценарий (блокнотом или notepad++) в файле first_step.py :
print ‘Testing python interpreter’
print 100 ** 100
a=5
b=5
print a / b
-Запустить его через командную строку и получить уверенность, что вы
сможете запустить сценарий Python из любого места
- Удостовериться, что вывод работы сценария адекватен.
44
Спасибо за внимание!
e.kazakov@spbu.ru
ekazakov.info/students
45
Download