Pull to refresh

Карта промыслов Костромской губернии

Level of difficultyEasy
Reading time5 min
Views2.2K

Привет, Хабр! Я историк, работаю над историко-географическими базами данных в российском генеалогическом сервисе familio.org. В этой статье расскажу, как мы сделали карту исторических промыслов Костромской губернии для фестиваля семейной истории в Кинешме. Надеюсь, что материал будет интересен не только любителям исторической географии, но и тем, кто интересуется визуализацией своих данных на карте.

Карту можно посмотреть (и при желании скачать в формате kml) на Google картах.
Карту можно посмотреть (и при желании скачать в формате kml) на Google картах.

Наша команда собирает, обрабатывает и публикует в электронном виде исторические данные, которые полезны для генеалогического поиска. Особое место среди них занимают списки населённых мест (прим. «населённое место» — это то же самое, что и «населённый пункт», но до 1920-х годов преимущественно использовался первый термин). Эти списки в большинстве случаев издавались в губерниях, из-за чего у них значительно варьируется формат и содержимое.

К примеру, есть замечательный список населённых мест по Витебской губернии 1906 года, в котором для каждого населённого пункта указано к какому церковному приходу тот относился — а это ключевая информация для генеалогического поиска, т.к. в церквях велись все записи о рождениях, браках и смертях.

Во многих случаях списки населённых мест составлялись по результатам земских социально-экономических исследований (прим. земство — дореволюционный орган местного самоуправления). К одному из таких изданий относится и список населённых мест Костромской губернии 1907 года, в нём содержатся сведения о местных промыслах. Оригинал справочника, вернее, его скан, с которого начинается вся работа, выглядит следующим образом.

Этот текст из справочника мы распознаём в формате таблицы, приводим к единому формату нашей базы данных, а потом связываем с существующей базой населённых пунктов, в основу которой положены современные реестры ОКТМО и АГКГН (они покрывают примерно до двух третей от общего количества исторически существовавших на территории России населённых пунктов в течение последних двух-трёх веков). Связывание записей с н/п — процедура довольно трудоёмкая, т.к. многие населённые пункты, упоминаемые в дореволюционных документах, ныне уже не существуют, но используя данные о расстояниях (прим. одна из наиболее часто встречающихся характеристик в подобных изданиях — расстояние от деревни до города, волостного правления и т.д.) большую часть подобных лакун удаётся реконструировать и нанести отсутствующие метки на карту. Этим у нас занимаются специально подготовленные люди, которые умеют работать со старыми картами, например, с ресурсом etomesto.ru. Сильно помогают и деревни с уникальными названиями, например, Выхино в Российской империи было только одно.

В результате этого кропотливого труда у нас получается набор таблиц с деревнями, их характеристиками и связями с вышестоящими уровнями (волостями и уездами), а также с населёнными пунктами из базы.
В результате этого кропотливого труда у нас получается набор таблиц с деревнями, их характеристиками и связями с вышестоящими уровнями (волостями и уездами), а также с населёнными пунктами из базы.

Теперь у нас есть данные, с которыми можно работать в табличных, текстовых и ГИС-редакторах. Для начала просто устроим перекрёстную проверку и посмотрим насколько хорошо были привязаны деревни к базе населённых пунктов. Для этого открываем QGIS, добавляем osm-подложку, и загружаем через CTRL+SHIFT+T единую таблицу с координатами и вышестоящими уровнями. Потом кликаем правой мышкой на слой и отрываем Properties этого слоя, где указываем Symbology как Categorized, где последовательно выбираем разные атрибуты (уезд, волость, дистанцию и прочее).

Так выглядит карта, если метки деревень автоматически раскрасить в цвета уездов. Если какая-то метка «улетает» далеко от своих цветовых собратьев, то, скорее всего, эта связь установлена ошибочно и нуждается в ревизии в базе данных.
Так выглядит карта, если метки деревень автоматически раскрасить в цвета уездов. Если какая-то метка «улетает» далеко от своих цветовых собратьев, то, скорее всего, эта связь установлена ошибочно и нуждается в ревизии в базе данных.

Теперь нужно стандартизировать промыслы. Костромская губерния наряду с соседней Ярославской была одной из самых развитых губерний в плане промыслов, огромное количество местных крестьян уходило на заработки в столицу и другие города. Сводная таблица показывает, что уникальных значений в колонке с промыслами под 2000 объектов, причем во многих случаях сокращения неодинаковые и зачастую в ячейке перечислено несколько промыслов таким образом. Нам, конечно, нужен только самый популярный, но терять информацию жалко, поэтому надо развернуть все промыслы построчно. Делается это следующим образом: заменяем запятую с пробелом на разделитель "|", притягиваем через такой же разделитель уникальный идентификатор записи (у нас в этом качестве используется uuid-4), а после в текстовом редакторе при помощи регулярных выражений заменяем все разделители на перенос строки. Далее в экселе в каждой строке формулой дублируем идентификаторы до следующего встречного идентификатора.

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

Теперь предстоит унифицировать эти значения, и когда они все развёрнуты построчно, то сделать это уже гораздо проще. Сортируем по алфавиту получившиеся уникальные значения и приводим к единому значению («пл.», «плот.», «плотн.» → «плотники»). Перед сортировкой не забываем сохранить оригинальный порядок в отдельную табличку, так как нам интересен именно самый распространенный промысел, т. е. первый в списке для каждой деревни. В результате всех этих операций получается набор в виде 11 607 населённых пунктов с координатами, на которые приходится 111 доминирующих там промыслов: от ассенизаторов до штукатуров.

Деревни Костромской губернии, раскрашенные в цвет самого распространенного в тех местах промысла
Деревни Костромской губернии, раскрашенные в цвет самого распространенного в тех местах промысла

Карта уже становится достаточно интересной: видны большие кластеры фабричных рабочих на юго-западе (современная Ивановская область), маляров в окрестностях Галича, а также портных около Неи. Но для удобства восприятия хорошо бы как-то закрасить и объединить промежуточные области. Для этого отлично подходит диаграмма Вороного, её можно найти в QGIS в разделе Vector → Geometry Tools → Voronoi Polygons. Получившейся диаграмме присваиваем атрибуты деревень через Vector → Data Management Tools → Join Attributes by Location.

Обрезаем получившийся результат через Vector → Geoprocessing Tools → Intersection по примерной границе Костромской губернии.

А после объединяем отдельные полигоны через Vector → Geoprocessing Tools → Dissolve, указав в качестве критерия поле с промыслом. При использовании диаграммы Вороного часто получаются довольно «рваные» границы с резкими углами, поэтому мы генерируем гексагональную сетку через Vector → Research Tools → Create Grid с шагом в километр, а потом присваиваем ей атрибуты с диаграммы Вороного через Vector → Data Management Tools → Join Attributes by Location.

Получившуюся карту уже вполне можно показывать, но этот момент до фестиваля остаётся всего-ничего времени, а хочется как-нибудь быстро сделать доступную онлайн карту, чтобы слушатели могли прямо во время презентации её посмотреть и приблизить интересующие их места. Вариантов тут не очень много, основных два: Google карты и Яндекс карты. Яндекс, к сожалению, отпадает сразу, т.к. такие большие объекты импортировать нельзя.

Остаются Google карты, в которых также выяснятся, что импортировать kml файл размером больше 5 МБ нельзя.

А у нас как раз получилась карта немногим больше 5 МБ, обидно! Начинаем смотреть начинку kml файла в поисках того, что можно пустить под нож и обнаруживаем излишне длинные координаты в 12–13 символов после запятой (в нашем случае 5 символов после запятой хватит с запасом). Возвращаемся в QGIS и экспортируем kml ещё раз с ограничением символов после запятой. Получается 3 МБ, файл успешно импортируется, и после небольшой раскраски карта наконец готова!

Карту можно посмотреть (и при желании скачать в формате kml) по ссылке.
Карту можно посмотреть (и при желании скачать в формате kml) по ссылке.

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

Большое «море» плотников в Галичском уезде и окрестностях. Уходили в основном на заработок в Санкт-Петербург, где заработали себе хорошую репутацию.
Большое «море» плотников в Галичском уезде и окрестностях. Уходили в основном на заработок в Санкт-Петербург, где заработали себе хорошую репутацию.
Профессиональные нищие в деревеньке Ивановской области. И такое бывало.
Профессиональные нищие в деревеньке Ивановской области. И такое бывало.
Серпозубы (пришлось гуглить, кто такие) в окрестностях Сусанино — путешествуют и предлагают заточить сельхозинвентарь
Серпозубы (пришлось гуглить, кто такие) в окрестностях Сусанино — путешествуют и предлагают заточить сельхозинвентарь
Ассенизаторы в окрестностях Костромы (интересно, сохранила ли местная история рассказы о славном промысловом прошлом).
Ассенизаторы в окрестностях Костромы (интересно, сохранила ли местная история рассказы о славном промысловом прошлом).
Кошатный промысел в селе Холм (заготавливают кошачий мех для городских модниц).
Кошатный промысел в селе Холм (заготавливают кошачий мех для городских модниц).
Профессиональные изготовители кренделей из деревни Рылово.
Профессиональные изготовители кренделей из деревни Рылово.

Думаю, что читатель, дошедший до этого места, и сам найдёт на карте интересные места.

Спасибо за чтение!

Tags:
Hubs:
Total votes 15: ↑14 and ↓1+19
Comments13

Articles