это вам не повредит.
В ранние дни существования Интернета я посещал экспериментальный сайт по
созданию карт у Xerox. Когда появились крупные сайты вроде Google Maps, они
стали откровением (к тому же вызывали мысль: «Почему я не подумал об этом и не
заработал миллионы?»). Теперь службы картографии и службы, основанные на
определении местоположения, практически везде, они особенно удобны в мобиль-
ных устройствах.
Здесь пересекается множество терминов: картография, GIS (geographic informa-
tion system — географическая информационная система), GPS (Global Positioning
System — глобальная система позиционирования), анализ геопространства и мно-
гие другие. Блог Geospatial Python (http://bit.ly/geospatial-py) воплощает образ си-
стемы размером с «800-фунтовую гориллу» GDAL/OGR, GEOS и PROJ.4 (про-
екции) и вспомогательные системы, представленные как обезьяны.
Многие из этих служб имеют интерфейсы Python. Поговорим о некоторых из
них, начиная с самых простых форматов.
Форматы
Мир картографии имеет множество форматов: векторный (линии), растровый
(изображения), метаданные (слова) и их комбинации.
Esri, первая географическая система, изобрела формат шейп-файл более 20 лет
назад. Файл формата шейп-файл содержит несколько файлов, содержащих как
минимум следующую информацию:
.shp — информация о фигуре (вектор);
.shx — индекс формы;
.dbf — база данных атрибутов.
Рассмотрим некоторые модули для работы с такими файлами.
pyshp (https://code.google.com/p/pyshp/) — это библиотека для работы с шейп-
файлами, написанная полностью на Python.
shapely (http://toblerity.org/shapely/) решает геометрические вопросы наподобие
«Какие строения в этом городе через 50 лет окажутся в зоне наводнения?».
fiona (https://github.com/Toblerity/Fiona) оборачивает библиотеку OGR, которая
работает с шейп-файлами и другими векторными форматами.
kartograph (http://kartograph.org/) отрисовывает шейп-файлы в карты формата
SVG на сервере или клиенте.
404
Приложение Б. За работой
basemap (http://matplotlib.org/basemap/) наносит двухмерные данные на карты
и использует matplotlib.
cartopy (http://scitools.org.uk/cartopy/docs/latest/) использует matplotlib и shapely
для того, чтобы рисовать карты.
Получим шейп-файл для нашего следующего примера. Посетите страницу http://
bit.ly/cultural-vectors. В разделе Admin 1 — States and Provinces нажмите зеленую кноп-
ку download states and provinces (загрузить штаты и провинции), чтобы загрузить
архив. После загрузки разархивируйте файл, вы должны увидеть такой результат:
ne_110m_admin_1_states_provinces_shp.README.html
ne_110m_admin_1_states_provinces_shp.sbn
ne_110m_admin_1_states_provinces_shp.VERSION.txt
ne_110m_admin_1_states_provinces_shp.sbx
ne_110m_admin_1_states_provinces_shp.dbf
ne_110m_admin_1_states_provinces_shp.shp