Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Разработка геоприложений на языке Python

Покупка
Артикул: 712481.01.99
Доступ онлайн
849 ₽
В корзину
Написание геопространственных программ предполагает решение таких задач, как группирование данных по географическому положению, хранение и анализ больших массивов информации, выполнение сложных расчетов и построение красочных интерактивных карт. Книга предоставляет обзор главных геопространственных понятий, источников геоданных и наборов инструментов для геообработки. Рассмотрены приемы хранения и доступа к пространственным данным. Показано создание собственного интерфейса со скользящей картой в рамках веб-приложения. Подробно описано создание редактора геоданных на основе географического модуля GeoDjango для веб-платформы Djaogo. Издание адресовано опытным разработчикам на языке Python, которые хотели бы освоить концепции геопрограммирования, методы получения и работы с геоданными, решать пространственные задачи и конструировать сложные картографические приложения.
Вестра, Э. Разработка геоприложений на языке Python / Э. Вестра ; пер. с англ. А.В. Логунова. - Москва : ДМК Пресс, 2017. - 446 с. - ISBN 978-5-97060-437-3. - Текст : электронный. - URL: https://znanium.com/catalog/product/1028127 (дата обращения: 28.03.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Эрик Вестра

Разработка геоприложений  

на языке Python

Erik Westra

Python Geospatial  
Development

Develop sophisticated mapping applications 
from scratch using Python 3 tools  
for geospatial development

Third Edition

 
       BIRMINGHAM – MUMBAI

Эрик Вестра

Разработка геоприложений 
на языке Python

Разработка сложных  
картографических приложений с нуля  
с использованием геоинструментальных 
средств Python 3

Третье издание 

Москва, 2017

УДК 528.92:004.9Python
ББК 26.17с
В38

Вестра Э.
В38
Разработка геоприложений на языке Python / пер. с англ. А. В. Логунова. – 
М.: ДМК Пресс, 2017. – 446 с.: ил.

ISBN 978-5-97060-437-3

Написание геопространственных программ предполагает решение таких задач, как группирование данных по географическому положению, хранение и анализ больших массивов информации, 
выполнение сложных расчетов и построение красочных интерактивных карт.
Книга предоставляет обзор главных геопространственных понятий, источников геоданных и 
наборов инструментов для геообработки. Рассмотрены приемы хранения и доступа к пространственным данным. Показано создание собственного интерфейса со скользящей картой в рамках 
веб-приложения. Подробно описано создание редактора геоданных на основе географического 
модуля GeoDjango для веб-платформы Django.
Издание адресовано опытным разработчикам на языке Python, которые хотели бы освоить 
концепции геопрограммирования, методы получения и работы с геоданными, решать пространственные задачи и конструировать сложные картографические приложения.

УДК 528.92:004.9Python
ББК 26.17с

Copyright © Packt Publishing 2016. First published in the English language under the title 
‘Python Geospatial Development – Third Edition – (9781785288937)’

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой 
бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность 
технических ошибок все равно существует, издательство не может гарантировать абсолютную 
точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги.

ISBN 978-1-78528-893-7 (анг.)
Copyright © 2016 Packt Publishing
ISBN 978-5-97060-437-3 (рус.)
© Оформление, издание, перевод, ДМК Пресс, 2017

Содержание

Об авторе ...................................................................... 11

О рецензенте ................................................................. 12

Предисловие ................................................................. 13

Глава 1. Разработка геопрограмм на Python ........................ 27
Python ......................................................................................................................................................27

Python 3 ..............................................................................................................................................29

Разработка геопространственных программ ..............................................................................30
Сферы применения геоприложений .............................................................................................33

Анализ геоданных ...........................................................................................................................33
Визуализация геоданных .............................................................................................................35
Создание геопространственных мэшапов ..............................................................................37

Последние достижения ......................................................................................................................38
Заключение ............................................................................................................................................41

Глава 2. Геоинформационные системы ............................... 42
Ключевые понятия ГИС ....................................................................................................................42

Географическое положение .........................................................................................................42
Расстояние.........................................................................................................................................46
Единицы измерения.......................................................................................................................48
Картографические проекции ......................................................................................................50
Системы координат ........................................................................................................................56
Геодезические датумы ...................................................................................................................59
Географические фигуры  ..............................................................................................................60

Форматы данных ГИС .......................................................................................................................62
Работа с данными ГИС вручную ....................................................................................................64

Получение данных ..........................................................................................................................65
Инсталляция библиотеки GDAL ..............................................................................................65

Заключение ............................................................................................................................................74

Глава 3. Библиотеки Python для геопрограммирования ......... 75
Чтение и запись геоданных ..............................................................................................................75

Пакет GDAL/OGR .........................................................................................................................75
Инсталляция пакета GDAL/OGR ............................................................................................76
Концепция библиотеки GDAL ..................................................................................................76
Пример использования .................................................................................................................82
Концепция библиотеки OGR .....................................................................................................85

 Содержание

Пример использования .................................................................................................................86
Документация по GDAL/OGR ..................................................................................................88

Работа с проекциями ..........................................................................................................................89

Библиотека pyproj ..........................................................................................................................89
Инсталляция библиотеки ............................................................................................................89
Концепция библиотеки ................................................................................................................91
Пример использования .................................................................................................................93
Документация ..................................................................................................................................94

Геоанализ и геообработка  .................................................................................................................95

Библиотека Shapely ........................................................................................................................95
Инсталляция библиотеки ............................................................................................................95
Концепция библиотеки ................................................................................................................97
Пример использования .................................................................................................................99
Документация ...............................................................................................................................100

Визуализация геоданных ...............................................................................................................101

Библиотека Mapnik .....................................................................................................................101
Инсталляция библиотеки .........................................................................................................102
Концепция библиотеки .............................................................................................................103
Пример использования ..............................................................................................................105
Документация ...............................................................................................................................107

Заключение .........................................................................................................................................107

Глава 4. Источники геоданных ......................................... 109
Источники геоданных в векторном формате ..........................................................................110

Геоданные проекта OpenStreetMap .......................................................................................110
База данных TIGER ....................................................................................................................113
Геоданные веб-сайта Natural Earth ........................................................................................117
Географическая база данных GSHHG ..................................................................................119
Набор данных границ стран мира ..........................................................................................121

Источники геоданных в растровом формате ...........................................................................122

Геоданные проекта Landsat .......................................................................................................123
Геоданные веб-сайта Natural Earth ........................................................................................127
Геоданные проекта GLOBE  .....................................................................................................130
Национальный набор данных рельефа ................................................................................132

Источники геоданных других типов ..........................................................................................136

База данных сервера географических названий GEOnet ..............................................136
Данные информационной системы географических названий США.......................138

Выбор источника геоданных .........................................................................................................140
Заключение .........................................................................................................................................140

Глава 5. Решение задач с геоданными на Python ................. 142
Необходимые условия .....................................................................................................................142
Общие задачи с использованием геоданных ...........................................................................143

Содержание  7

Задача: вычисление ограничительной рамки  
для всех стран мира .....................................................................................................................143
Задача: вычисление границы между Таиландом и Мьянмой .......................................145
Задача: анализ высот на основе цифровой карты местности .......................................147

Смена датумов и проекций ............................................................................................................153

Задача: смена проекции для совмещения файлов фигур с географическими 
и UTM-координатами ................................................................................................................153
Задача: перевод из одного датума в другой для совмещения свежих данных  
TIGER со старыми ......................................................................................................................157

Выполнение геопространственных расчетов ..........................................................................160

Задача: идентификация национальных парков внутри и в окрестностях  
городских агломераций..............................................................................................................161

Конвертирование и стандартизация единиц геометрии и расстояния ..........................166

Задача: вычисление длины границы между Тайландом и Мьянмой .........................166
Задача: нахождение точки в 132.7 км к западу от г. Шошоун, шт. Калифорния .......173

Упражнения ........................................................................................................................................174
Заключение .........................................................................................................................................176

Глава 6. Пространственные базы данных ........................... 177
СУБД с поддержкой пространственных данных ...................................................................177
Пространственные индексы ..........................................................................................................178
Знакомство с PostGIS......................................................................................................................181

Инсталляция СУБД PostgreSQL ...........................................................................................183
Инсталляция расширения PostGIS .......................................................................................184
Установка адаптера psycopg2 ...................................................................................................185

Настройка СУБД ..............................................................................................................................186

Создание учетной записи пользователя Postgres .............................................................186
Создание базы данных ...............................................................................................................187
Разрешение доступа к базе данных .......................................................................................187
Включить поддержку пространственных данных  ...........................................................187

Использование расширения PostGIS ........................................................................................187

Документация по PostGIS ........................................................................................................191
Продвинутый функционал PostGIS .....................................................................................191

Наиболее успешные практические приемы .............................................................................192

Рекомендуем: используйте базу данных для отслеживания  
пространственных привязок ....................................................................................................192
Рекомендуем: используйте для данных приемлемую пространственную  
привязку ..........................................................................................................................................194
Рекомендуем: избегайте динамических трансформаций внутри запроса ...............196
Рекомендуем: не создавайте геометрии внутри запроса ................................................197
Рекомендуем: грамотно используйте пространственные индексы ............................198
Рекомендуем: учитывайте пределы оптимизатора запросов своей СУБД .............198

Заключение .........................................................................................................................................201

 Содержание

Глава 7. Генерирование карт при помощи Python  
и библиотеки Mapnik ...................................................... 202
Введение в библиотеку Mapnik ....................................................................................................202
Создание образца карты .................................................................................................................209
Понятия библиотеки Mapnik ........................................................................................................214

Источники данных ......................................................................................................................214
Правила, фильтры и стили .......................................................................................................217
Символизаторы ............................................................................................................................220
Карты и слои ..................................................................................................................................229
Визуализация карты ...................................................................................................................230

Заключение .........................................................................................................................................232

Глава 8. Работа с пространственными данными .................. 234
Описание приложения DISTAL ..................................................................................................234
Проектирование и конструирование базы данных ...............................................................238
Скачивание и импорт данных .......................................................................................................242

Набор данных границ стран мира ..........................................................................................242
Географическая база данных береговых линий GSHHG ...............................................243
Географические названия США .............................................................................................244
Географические названия остальных мест ..........................................................................246

Реализация приложения DISTAL ...............................................................................................249

Сценарий «выбрать страну» ....................................................................................................251
Сценарий «выбрать область»  .................................................................................................253
Сценарий «показать результаты»  .........................................................................................263
Использование приложения DISTAL ..................................................................................268

Заключение .........................................................................................................................................269

Глава 9. Совершенствование приложения DISTAL ................ 270
Обработка линии антимеридиана ...............................................................................................270
Решение проблемы масштабирования ......................................................................................276
Производительность ........................................................................................................................280

Поиск проблемы ...........................................................................................................................280
Улучшение производительности ............................................................................................282
Использование сегментов береговых линий ......................................................................291
Анализ повышения производительности ............................................................................292

Заключение .........................................................................................................................................293

Глава 10. Инструменты для разработки  
геопространственных веб-приложений ............................. 294
Инструментарий и методика для геопространственных веб-приложений ..................294

Веб-приложения ..........................................................................................................................295
Веб-службы ....................................................................................................................................300

Содержание  9

Стэк «скользящей карты».........................................................................................................305
Геопространственные веб-протоколы ...................................................................................306

Анализ трех конкретных инструментов  ...................................................................................308

Протокол TMS ..............................................................................................................................308
Библиотека OpenLayers .............................................................................................................313
Модуль GeoDjango ......................................................................................................................317

Заключение .........................................................................................................................................325

Глава 11. Собираем все вместе – полнофункциональная  
картографическая система ............................................. 326
О системе ShapeEditor.....................................................................................................................326
Проектирование системы ShapeEditor ......................................................................................330

Импорт файла фигур ..................................................................................................................330
Выбор геообъекта .........................................................................................................................332
Правка геообъекта .......................................................................................................................334
Экспорт файла фигур .................................................................................................................334

Необходимые компоненты ............................................................................................................334
Настройка базы данных ..................................................................................................................335
Настройка проекта ShapeEditor ...................................................................................................335
Определение приложений ShapeEditor ....................................................................................337
Создание общего приложения shared ........................................................................................337
Определение моделей данных ......................................................................................................339

Объект Shapefile ...........................................................................................................................339
Объект Attribute ...........................................................................................................................340
Объект Feature ..............................................................................................................................340
Объект AttributeValue ................................................................................................................341
Файл models.py  ............................................................................................................................341

Знакомство с подсистемой администрирования ...................................................................344
Заключение .........................................................................................................................................350

Глава 12. ShapeEditor – импорт и экспорт файлов фигур ...... 351
Реализация режима просмотра списка файлов фигур ........................................................351
Импорт файлов фигур .....................................................................................................................355

Форма для импорта файлов фигур ........................................................................................355
Извлечение выгруженного файла фигур из архива ........................................................358
Импорт содержимого файла фигур .......................................................................................361
Очистка ...........................................................................................................................................368
Экспорт файлов фигур ..............................................................................................................369

Заключение .........................................................................................................................................376

Глава 13. ShapeEditor – выбор и правка геообъектов  ........... 377
Выбор геообъекта для правки .......................................................................................................378

Реализация сервера сборных цифровых карт ....................................................................378

 Содержание

Отображение карты при помощи библиотеки OpenLayers ..........................................398
Перехват нажатий кнопкой мыши .........................................................................................404
Реализация режима просмотра «Найти геообъект» ........................................................406

Правка геообъектов ..........................................................................................................................412
Добавление геообъектов .................................................................................................................418
Удаление геообъектов ......................................................................................................................421
Удаление файлов фигур ..................................................................................................................423
Использование системы ShapeEditor ........................................................................................424
Дальнейшие усовершенствования и улучшения ...................................................................424
Заключение .........................................................................................................................................425

Глоссарий сокращений и основных терминов  .................... 427
Сокращения ........................................................................................................................................427
Термины ...............................................................................................................................................430

Предметный указатель ................................................... 436

Об авторе

Эрик Вестра уже больше 25 лет является профессиональным разработчиком программного обеспечения, который в течение последнего десятилетия работает почти исключительно с Python. Первоначальный интерес Эрика к проектированию 
графического интерфейса пользователя привел к разработке одной из самых продвинутых систем срочной курьерской доставки, используемых службами и компаниями курьерской доставки по всему миру. В последние годы Эрик участвует 
в разработке и реализации систем по подбору поставщиков для потребителей товаров и услуг по целому ряду регионов с широкой географией и с использованием 
разных систем обмена мгновенными сообщениями и платежных систем. Эта работа включает в себя создание геокодеров в реальном масштабе времени и режимов 
просмотра постоянно меняющихся данных географических карт. Эрик проживает 
в Новой Зеландии и работает на компании, расположенные по всему миру.
Кроме того, он является автором выпущенных в издательстве Packt книг «Геоанализ на Python» и «Создание картографических приложений» на основе QGIS, 
а также предстоящей публикации «Модульное программирование на языке Python».

Я хотел бы поблагодарить Рут за ее великолепие, а моих дочерей – за 
их терпение. Без вас ничего из этого не было бы возможным.

О рецензенте

Лу Може получил образование в области информатики очень давно в Университете штата Мичиган, где учился использовать программное обеспечение для разработки циклотрона. Затем он в течение 34 лет проработал в компании IBM и потом 
продолжил карьеру, работая на несколько консалтинговых фирм, включая долгосрочное сотрудничество с железнодорожной отраслью индустрии. В настоящее 
время он консультирует компанию Keyhole Software, расположенную в Ливуд, шт. 
Канзас. Прошлой весной для этой компании он создал программный инструмент 
MockOlaр для каркасного прототипирования на основе операций перетаскивания. Лу программирует на C++, Java и более новых языках и в настоящее время 
интересуется микросервисами, Docker, Node.js, NoSQL, геопространственными 
системами, функциональным программированием, мобильными и одностраничными веб-приложениями – любым новым языком или платформой. Лу иногда 
ведет блог, посвященный программным технологиям. Он является соавтором 
трех книг по информатике, написал два учебных руководства по XML для IBM 
DeveloperWorks и учебное руководство по LDAP для журнала WebSphere. Кроме 
того, Лу является соавтором нескольких сертификационных тестов по J2EE для 
IBM, а также рецензентом ряда других издателей.

Предисловие

С ростом популярности картографических веб-сайтов и пространственно ориентированных устройств и приложений методы разработки геопространственного 
программного обеспечения образовали быстро развивающуюся область информатики – геоинформатику. Будучи разработчиком на Python, вы не можете позволить себе отстать от новейших тенденций. В сегодняшнем информированном 
о местоположении мире каждый разработчик на Python может извлечь выгоду из 
понимания концепций и методики разработки геопространственных приложений.
Работа с геопространственными данными бывает непростой, потому что она связана с математическими моделями земной поверхности. Но поскольку Python – это 
мощный язык программирования с большим количеством высокоуровневых программных инструментов, он идеально подходит для разработки геопространственных приложений. Эта книга познакомит вас с инструментами языка Python, которые требуются для разработки геопространственных приложений. Она проведет 
вас по ключевым геопространственным понятиям, таким как географическое положение, расстояние, единицы измерения, картографические проекции, геодезические датумы и форматы геопространственных данных. Затем мы займемся изучением ряда программных библиотек Python и воспользуемся ими и общедоступными 
геопространственными данными для решения самых разнообразных задач. Книга 
предоставляет углубленный анализ методов хранения пространственных данных 
в базе данных и приемов использования пространственных баз данных в качестве 
инструментов для решения широкого диапазона геопространственных задач.
В ней подробно рассматриваются методы генерирования карт при помощи 
инструмента визуализации цифровых карт – программной библиотеки Mapnik. 
Кроме того, книга поможет вам создать высокотехнологичное геопространственное веб-приложение с функционалом редактирования карты на основе географического модуля GeoDjango для веб-платформы Django, программной библиотеки Mapnik и геопространственного расширения PostGIS для СУБД PostgreSQL. 
К концу книги вы научитесь интегрировать пространственный функционал в свои 
собственные приложения и создавать полнофункциональные картографические 
приложения с нуля.
Эта книга представляет собой практическое руководство, которое научит вас 
приемам получения доступа к геоданным, управления ими и их визуализации, используя широкий диапазон инструментов Python для разработки геоинформационных систем (ГИС).

О чем эта книга рассказывает

Глава 1 «Разработка геопрограмм на Python» предлагает обзор языка программирования Python и концепций, лежащих в основе процесса разработки геопро
 Предисловие

странственного приложения. Кроме того, будут затронуты основные прецеденты 
использования разработок геопространственных приложений, последние достижения и тенденции ближайшего будущего в данной области.
Глава 2 «Геоинформационные системы» посвящена ознакомлению с базовыми 
понятиями, включая географическое положение, расстояние, единицы измерения, картографические проекции, географические фигуры, геодезические датумы 
и форматы геоданных, и затем обсуждению процесса работы с геоданными в ручном режиме.
Глава 3 «Библиотеки Python для геопрограммирования» разбирает основные 
биб лиотеки Python, предназначенные для разработки геоприложений, в том числе функционал библиотек, способы их установки, важные понятия, необходимые 
для понимания работы библиотек, и способы их применения.
Глава 4 «Источники геоданных» посвящена исследованию главных общедоступных источников геоданных, характеристике имеющейся в распоряжении информации, используемым форматам данных и приемам импортирования данных после их скачивания.
Глава 5 «Решение задач с геоданными на Python» посвящена применению ранее 
представленных библиотек для выполнения различных задач с использованием 
геоданных, включая смену картографических проекций, импорт и экспорт данных, конвертирование и стандартизацию единиц геометрий и расстояний, выполнение геопространственных расчетов.
Глава 6 «Пространственные базы данных» вводит понятия, лежащие в основе 
пространственных баз данных, и затем подробно рассматривает расширение PostGIS для СУБД PostgreSQL с поддержкой пространственных данных, способы его 
установки и использования из программы на Python.
Глава 7 «Генерирование карт при помощи Python и библиотеки Mapnik» предлагает подробный анализ инструмента картографирования Mapnik и приемов его 
применения для генерирования разнообразных карт.
Глава 8 «Работа с пространственными данными» познакомит с процессом проектирования и реализации полнофункционального геоприложения под названием DISTAL, используя общедоступные геоданные, хранящиеся в пространственной базе данных.
Глава 9 «Совершенствование приложения DISTAL» посвящена развитию функционала приложения из предыдущей главы для решения ряда задач, связанных 
с удобством использования и производительностью.
Глава 10 «Инструменты для разработки геопространственных веб-приложений» 
исследует понятия платформ веб-приложений, веб-служб, библиотек пользовательского интерфейса на JavaScript и скользящих карт. Данная глава познакомит 
с рядом стандартных веб-протоколов, используемых в геопространственных приложениях, и закончится обзором инструментария, при помощи которого в трех 
заключительных главах книги будет создано полнофункциональное картографическое приложение. 
Глава 11 «Собираем все вместе – полнофункциональная картографическая система» знакомит с полноценным и высокотехнологичным веб-приложением 

Для кого эта книга  15

ShapeEditor, созданным с использованием геопространственного расширения 
PostGIS, библиотеки Mapnik и географического модуля GeoDjango. Работа начинается с проектирования законченного приложения и затем продолжается созданием моделей базы данных приложения ShapeEditor.
Глава 12 «ShapeEditor – импорт и экспорт файлов фигур» продолжает реализацию системы ShapeEditor, концентрируясь на отображении списка импортированных файлов фигур и подпрограммах импорта и экспорта файлов фигур через 
веб-браузер.
Глава 13 «ShapeEditor – выбор и правка геообъектов» завершает реализацию системы ShapeEditor добавлением подпрограмм, которые предлагают пользователю 
функционал для выбора и редактирования геообъектов внутри импортированного файла фигур. Он включает в себя создание специального сервера сборных 
цифровых карт и использование картографической библиотеки OpenLayers на 
JavaScript для визуализации геоданных на экране компьютера и взаимодействия 
с ними.

Что требуется для этой книги

Третье издание данной книги было расширено с целью поддержки Python 3, хотя, 
если хотите, вы можете продолжить пользоваться Python 2. Вам также понадобятся следующие инструменты и библиотеки, которые следует скачать и установить; 
подробные инструкции даны в соответствующих разделах книги:
 
 программный пакет GDAL/OGR;
 
 динамическая библиотека GEOS;
 
 библиотека Python Shapely;
 
 динамическая библиотека Proj;
 
 библиотека Python pyproj;
 
 СУБД PostgreSQL + программа администрирования pgAdmin III;
 
 геопространственное расширение PostGIS для СУБД PostgreSQL; 
 
 адаптер СУБД PostgreSQL psycopg2 для Python;
 
 динамическая библиотека Mapnik;
 
 веб-платформа Django;
 
 географический модуль GeoDjango для веб-платформы Django;
 
 картографическая библиотека OpenLayers на JavaScript.

Для кого эта книга

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

 Предисловие

Условные обозначения

В этой книге вы найдете ряд текстовых стилей, которые выделяют различные виды 
информации. Вот некоторые примеры этих стилей и объяснение их значения.
Фрагменты программного кода в тексте показаны следующим образом: «Набор 
данных gdal.Dataset представляет файл, который содержит данные в растровом 
формате».
Блок кода выглядит следующим образом:

import pyproj

lat1,long1 = (37.8101274,-122.4104622) 
lat2,long2 = (37.80237485,-122.405832766082)

geod = pyproj.Geod(ellps="WGS84")
angle1,angle2,distance = geod.inv(long1, lat1, long2, lat2)

print("Расстояние равно {:0.2f} метров".format(distance))

Когда требуется привлечь ваше внимание к конкретной части блока кода, соответствующие строки или элементы выделяются полужирным шрифтом:

for value in values:
    if value != band.GetNoDataValue():
        try:
            histogram[value] += 1 
        except KeyError:
            histogram[value] = 1

Любой ввод команды из командной строки или вывод результатов их вычисления оформляется следующим образом:

% python3 calcBoundingBoxes.py
Afghanistan (AFG) lat=29.4061..38.4721, long=60.5042..74.9157 
Albania (ALB) lat=39.6447..42.6619, long=19.2825..21.0542 
Algeria (DZA) lat=18.9764..37.0914, long=-8.6672..11.9865

Новые термины и важные слова показаны полужирным шрифтом. Слова, которые вы видите на экране, например в меню или диалоговых окнах, выглядят 
в тексте следующим образом: «Нажмите на гиперссылке Download Domestic 
Names, чтобы скачать национальные географические названия».
 Предупреждения или важные примечания появляются в этом поле. 

 Подсказки и приемы появляются тут.

 Дополнения к тексту оригинала книги.

Доступ онлайн
849 ₽
В корзину