Занимаясь data science, мы уделяем большое внимание моделям и алгоритмам, фреймворкам и техникам. Иными словами, теми вещами, которые заставляют нас думать: “Блин, это круто! Как я могу это использовать?”
Однако что-то, чего мне не хватает в нашей работе — это возможности посмотреть на вещи с творческой стороны.
[course id =1056]
Благодаря моему бэкграунду в геоинформационных технологиях, мне посчастливилось когда-то изучить картографию и после регулярно применять ее принципы на протяжении большей части моей карьеры.
То, что я обожаю в картографии — это то, что она часто описывается как искусство, наука и технология создания карт.
Только задумайтесь об этом. Когда в последний раз вы сознательно описывали что-то, над чем вы работаете сначала как искусство и только потом науку и технологию?
На создание карт уходит много работы, и нужен очень проницательный взгляд, чтобы суметь перевести сырые данные во что-то одновременно полезное и красивое. Карты по своей природе предназначены для того, чтобы люди на них смотрели, так что они должны быть красивыми.
Так что я подумал: что я могу привнести в наше data science сообщество, чтобы дать возможность другим попробовать на вкус что такое картография с наименьшими трудозатратами?
[course id =1300]
Planetoids — это высокоуровневый Python API для процедурной генерации интерактивных миров на основе данных из DataFrame из pandas.
Planetoids позволяет вам взять такие данные:
И превратить их в это:
И все это просто с помощью вызова .fit_terraform().
Как это работает?
На данный момент Planetoids может терраформировать планету из двумерных данных с опциональным атрибутом кластера. API все еще очень новый, и его возможности будут расширяться и дальше, но сейчас библиотека при терраформировании нового мира может следующее:
- Генерировать пространство для рендеринга планетоида
- Генерировать экологию, базируясь на статистике входных данных (экологию при желании можно задать и вручную)
- Генерировать области суши с топографическими деталями (контурами) и деталями рельефа (градиентами)
- Генерировать световые эффекты в зависимости от рельефа
У вас, как у пользователя, есть контроль над уровнем детализации в сгенерированном планетоиде, и вы можете выбрать что будет отрисовано в интерактивном графике. Всю документацию по API можно найти здесь.
[read id =1486]
Для имплементации рендеринга планетоидов я использую plotly. В данный момент в трассировке ScatterGeo, которую я использую, не определены z-значения, и она может работать только с векторными данными, так что мне пришлось придумывать другие способы создать иллюзию глубины, примерно как это делается в бумажных картах.
Установка производится просто через pip install planetoids. Кроме того, я создал проект с Travis-CI для автоматического тестирования и Codacy для автоматического ревью кода и аналитики, чтобы другим заинтересованным в этом проекте было проще присоединиться. Я также создал список возможных задач для всех, кто захочет помочь мне расширить проект.
Это все еще альфа-версия проекта, так что возможно, что какие-то аспекты API будут изменены в следующих релизах по мере добавления и усовершенствования функций.
Онлайн есть несколько интерактивных демо-ноутбуков, чтобы помочь вам начать работу. Я в нетерпении увидеть что другим удастся создать с помощью этой библиотеки, и я буду очень рад, если вы добавите получившиеся демо в репозиторий, чтобы продемонстрировать варианты использования API.
Я надеюсь, что вы получите столько же удовольствия, работая с библиотекой, сколько получил его я, работая над созданием Planetoids. Удачного терраформирования!
Текст: Terraform Planets with the Planetoid API Package in Python
Перевод: Ухарова Елена