Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 312

и если вы можете быстро нарисовать красивую карту сайта вашей организации,

это вам не повредит.

В ранние дни существования Интернета я посещал экспериментальный сайт по

созданию карт у 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