Учебник ГИС и геопространственные данные для начинающих
Курс уровня технического университета о том, как компьютер хранит, считает и показывает географию. Мы начинаем с базы — что такое ГИС и зачем она логистике, экологии, урбанистике и навигации, — и разбираем фундаментальное деление данных на векторные (точки, линии, полигоны) и растровые (сетки пикселей). Дальше идёт самое важное и самое недооценённое: системы координат (широта и долгота, геоид, эллипсоид, WGS84) и проекции — почему сферу нельзя развернуть на плоскость без искажений и как с этим живут. Затем — геометрия на стандартной библиотеке Python: расстояние на сфере по формуле гаверсинуса, проверка «точка внутри полигона» методом трассировки луча, площадь полигона по формуле шнуровки, центроид, bounding box, проекция Меркатора. Все эти алгоритмы вы запустите прямо в браузере. После геометрии — пространственные отношения и анализ (ближайший объект, объекты в радиусе, overlay, spatial join), растровый анализ (рельеф, уклон, индекс NDVI), геокодирование, плотность и тепловые карты, маршрутизация на графе дорог, визуализация карт, открытые данные (OpenStreetMap, Sentinel/Landsat, Росреестр), дистанционное зондирование и пространственная база PostGIS. Промышленный стек (geopandas, shapely, folium, rasterio, QGIS) мы показываем как код для чтения, а ядро каждой темы — исполнимым на чистом Python. Формулы даны в математической записи, реализации проверены.
Курс «ГИС и геопространственные данные» состоит из 8 разделов и 28 уроков: Что такое ГИС и геоданные, Системы координат и проекции, Форматы геоданных, Расстояния и геометрия, Пространственные отношения и анализ, Растровый анализ и спутники, Геокодирование, маршруты и карты и PostGIS, стек и реальные задачи. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Что такое ГИС и геоданные
- Что такое ГИС и где она работает
ГИС — система для хранения, анализа и визуализации данных, привязанных к месту на Земле. Где это применяется и почему карта — это база данных.
- Векторные и растровые данные
Два фундаментальных способа описать мир в ГИС: вектор (точки, линии, полигоны) и растр (сетка пикселей). Когда и что выбирать.
- Геометрия + атрибуты: модель данных
Почему каждый геообъект — это пара «геометрия и таблица свойств», и как этот принцип связывает ГИС с обычными базами данных.
- Что такое ГИС и где она работает
2 Системы координат и проекции
- Широта, долгота и форма Земли
Как координаты описывают точку на сфере, чем геоид отличается от эллипсоида и что такое WGS84 — общая система координат GPS и всего мира.
- Проекции: почему сферу нельзя развернуть
Любая плоская карта искажает реальность. Почему апельсиновую корку нельзя расправить и какие искажения выбирают картографы.
- Проекция Меркатора: формула и код
Выводим и реализуем прямую проекцию Меркатора: перевод широты-долготы в метры на плоскости. Формула, граница применимости, проверка на Москве.
- UTM и выбор проекции под задачу
Система UTM делит Землю на зоны, в каждой искажения минимальны. Как выбрать проекцию: метры для измерений, градусы для хранения.
- Широта, долгота и форма Земли
3 Форматы геоданных
- GeoJSON: геоданные в виде JSON
GeoJSON — текстовый формат на основе JSON для векторных данных. Разбираем структуру Feature и FeatureCollection и читаем файл исполнимым кодом.
- Shapefile и другие векторные форматы
Shapefile — ветеран ГИС из нескольких файлов. Чем он хорош, чем неудобен, и какие современные форматы (GeoPackage) идут на смену.
- GeoTIFF и растровые форматы
GeoTIFF — это картинка TIFF с геопривязкой. Что такое каналы, геотрансформ и почему спутниковые снимки приходят именно в этом формате.
- GeoJSON: геоданные в виде JSON
4 Расстояния и геометрия
- Гаверсинус: расстояние на сфере
Почему расстояние между городами нельзя считать по теореме Пифагора и как формула гаверсинуса даёт правильный ответ по большому кругу.
- Точка в полигоне: метод трассировки луча
Как проверить, попала ли точка внутрь района, методом ray casting: считаем пересечения луча с границей. Реализация на чистом Python.
- Площадь полигона: формула шнуровки
Формула шнуровки (Гаусса) считает площадь любого простого многоугольника по координатам вершин. Реализуем и проверяем на квадрате и треугольнике.
- Центроид и bounding box
Две базовые операции: центроид (геометрический центр полигона) для подписи на карте и bounding box — быстрый прямоугольный фильтр для ускорения запросов.
- Гаверсинус: расстояние на сфере
5 Пространственные отношения и анализ
- Пространственные отношения: содержит, пересекает
Пространственные предикаты описывают, как две геометрии связаны: содержит, пересекает, касается, не пересекается. Модель DE-9IM и буферы.
- Ближайший объект и объекты в радиусе
Два самых частых запроса: найти ближайший объект и все объекты в радиусе. Реализуем на гаверсинусе и обсуждаем, как ускорить пространственным индексом.
- Overlay: пересечение слоёв и буферы
Overlay-анализ накладывает слои друг на друга: пересечение, объединение, разность. Буферные зоны и реальные сценарии вроде «дома в зоне шума».
- Spatial join: соединение по положению
Spatial join присоединяет атрибуты одного слоя к другому по их пространственному отношению — например, какому району принадлежит каждая точка-инцидент.
- Пространственные отношения: содержит, пересекает
6 Растровый анализ и спутники
- DEM: цифровая модель рельефа
DEM — это растр высот. Как из него получить профиль, найти минимум и максимум высоты и почему рельеф удобно хранить именно сеткой.
- Уклон: производная рельефа
Уклон показывает крутизну склона. Считаем его из DEM как градиент высоты и переводим в градусы. Зачем уклон нужен для дорог, стока и эрозии.
- NDVI: индекс растительности
NDVI измеряет «зелёность» по спутниковым каналам Red и NIR. Формула, диапазон значений и расчёт по растру — как со спутника видят здоровье растений.
- Плотность и тепловые карты
Как из россыпи точек получить карту плотности: сетка-подсчёт и ядерная оценка (KDE). Считаем плотность точек по ячейкам на чистом Python.
- DEM: цифровая модель рельефа
7 Геокодирование, маршруты и карты
- Геокодирование: адрес в координаты
Геокодирование переводит «ул. Тверская, 1» в широту и долготу, обратное — наоборот. Как это работает, зачем нормализация адреса и где грабли.
- Маршрутизация: кратчайший путь по дорогам
Дорожная сеть — это граф: перекрёстки-вершины, улицы-рёбра с весом. Алгоритм Дейкстры находит кратчайший путь. Реализация на чистом Python.
- Визуализация карт: тайлы, matplotlib, folium
Как геоданные показывают на экране: тайловые карты, статичные карты в matplotlib и интерактивные в folium. Обзор инструментов и принципов.
- Открытые геоданные: OSM, спутники, Росреестр
Где брать геоданные бесплатно: OpenStreetMap для векторных слоёв, Sentinel и Landsat для спутниковых снимков, Росреестр для кадастра.
- Геокодирование: адрес в координаты
8 PostGIS, стек и реальные задачи
- PostGIS: пространственная база данных
PostGIS превращает PostgreSQL в полноценную ГИС-базу: геометрический тип, пространственные функции и индексы. Связь с обычным SQL.
- Реальные задачи и стек инструментов
Сквозной практикум: расстояние между городами, точки в районе, площадь региона и план простой карты. Обзор стека: QGIS, geopandas, rasterio.
- PostGIS: пространственная база данных