Более

Как добавить строку на карту CartoDB?

Как добавить строку на карту CartoDB?


Согласно руководству CartoDB о том, как добавлять и редактировать геометрию с помощью редактора CartoDB, когда мы нажимаем Добавить функцию, у нас должно появиться всплывающее окно с тремя вариантами:

  • Добавить точку
  • Добавить строку
  • Добавить многоугольник

Но когда я нажимаю на нее, я получаю только Добавить точку вариант. Два других варианта переместились в другое место? Или есть другой способ добавить строчку?


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

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


Как добавить строку на карту CartoDB? - Географические информационные системы

Вы можете заглянуть на эти ресурсы, если хотите согреться с CARTO

Дополнительные вопросы и устранение неполадок

  • Отправить по электронной почте [email protected].
  • На некоторые вопросы уже можно было ответить на GIS Stack Exchange carto tag.

СОДЕРЖАНИЕ

Учетные записи настроены

  • Инструктор предоставит вам пользователя и пароль для доступа к вашей учетной записи.
  • Войдите в свою учетную запись geostatXX, перейдя на https://geostatXX.carto.com.

Основы¶

Как указано в главе 2, существует несколько основных структур данных, которые используются в географической науке о данных: географические таблицы (которые обычно сопоставляются с моделями данных объекта), растры или поверхности (которые обычно сопоставляются с полевой моделью данных), и пространственные сети (которые обычно соответствуют модели данных графа). Мы обсуждаем их по очереди в этом разделе.

Географические таблицы¶

Географические объекты обычно соответствуют тому, что мы назвали географическая таблица. Географические таблицы можно рассматривать как вкладку в электронной таблице, в одном из столбцов которой записана геометрическая информация. Эта структура данных представляет отдельный географический объект в виде строки таблицы, каждый столбец в таблице записывает информацию об объекте, его атрибутах или характеристиках, как мы увидим ниже. Обычно в этой таблице есть специальный столбец, в котором записываются геометрия объекта. Компьютерные системы, использующие эту структуру данных, предназначены для добавления географии в реляционная база данных, например PostgreSQL (через его расширение PostGIS) или sqlite (через его расширение Spaceite). Однако, помимо этого, во многих языках науки о данных (таких как R, Julia и Python) есть пакеты, которые также принимают эту структуру данных (например, sf, ArchGDAL и geopandas), и они быстро становятся основной структурой данных для объектно-ориентированные географические данные.

Однако прежде чем продолжить, полезно упомянуть небольшое пояснение по терминологии. В этой книге, независимо от используемой структуры данных, мы будем называть измерение наблюдения как характерная черта. Это согласуется с другими работами в области науки о данных и машинного обучения. Тогда один набор измерений представляет собой образец. Для таблиц это означает, что функция - это столбец, а образец - это строка. Однако исторически специалисты по географической информации использовали слово «объект» для обозначения отдельного наблюдения, поскольку «объект» в картографии - это объект на карте, а «атрибут» - для описания характеристик этого наблюдения. В другом месте характерная черта можно назвать Переменная, а образец называется записью. Итак, последовательная терминология важна: для этой книги характерная черта - одна измеряемая характеристика, относящаяся к наблюдению (столбец), а образец - это один набор измерений (ряд).

Чтобы понять структуру географических таблиц, будет полезно ознакомиться с набором данных countries_clean.gpkg, включенным в эту книгу, который описывает страны мира. Чтобы прочитать эти данные, мы можем использовать метод read_file () в геопандах: ^ [Обычно мы будем использовать две изогнутые скобки (например, method_name ()) для обозначения функция, и будет опускать их (например, пакет) при ссылке на объект или пакет.]

И мы можем изучить верхнюю часть таблицы с помощью метода .head ():

АДМИНИСТРАТОР геометрия
0 Индонезия МУЛЬТИПОЛИГОН (((13102705.696 463877.598, 13102.
1 Малайзия МУЛЬТИПОЛИГОН (((13102705.696 463877.598, 13101.
2 Чили МУЛЬТИПОЛИГОН (((-7737827.685-1979875.500, -77.
3 Боливия ПОЛИГОН ((-7737827,685 -1979875,500, -7737828.
4 Перу МУЛЬТИПОЛИГОН (((-7737827.685-1979875.500, -77.

Каждая строка этой таблицы представляет собой отдельную страну. У каждой страны есть только две особенности: административное название страны и геометрия границы страны. Название страны кодируется в столбце ADMIN с использованием типа Python str, который используется для хранения текстовых данных. Геометрия границы страны хранится в столбце геометрии и кодируется с помощью специального класса в Python, который используется для представления геометрических объектов. Как и в случае с другими табличными структурами данных в Python, каждая строка и столбец имеют индекс, который однозначно их идентифицирует и выделяется жирным шрифтом в левой части таблицы. Эта географическая таблица является экземпляром объекта geopandas.GeoDataFrame, который используется во всей экосистеме Python для представления географических данных.

В географических таблицах географическая информация хранится в виде дополнительного столбца. Но как кодируется эта информация? Чтобы увидеть, мы можем проверить тип объекта в первой строке:

В геопандах (а также в других пакетах, представляющих географические данные) столбец геометрии имеет особые свойства, которых нет у «обычного» столбца, такого как ADMIN. Например, когда мы строим фрейм данных, столбец геометрии используется в качестве основной формы для использования на графике:

Изменять геометрию нужно осторожно: поскольку столбец геометрии особенный, есть специальные функции для настройки геометрии. Например, если мы хотим представить каждую страну, используя ее центроид, точку в середине фигуры, то мы должны убедиться, что новый столбец геометрии был правильно установлен с помощью метода set_geometry (). Это может быть полезно, если вы хотите работать с двумя разными геометрическими представлениями одного и того же базового образца.

Составим карту границы и центра тяжести страны. Во-первых, чтобы вычислить центроид, мы можем использовать свойство gt_polygons.geometry.centroid. Это дает нам точку, которая минимизирует среднее расстояние от всех других точек на границе формы. Сохранение этого обратно в столбец, называемый центроидом:

Теперь у нас есть дополнительная функция:

АДМИНИСТРАТОР геометрия центроид
0 Индонезия МУЛЬТИПОЛИГОН (((13102705.696 463877.598, 13102. ТОЧКА (13055431,810 -248921,141)
1 Малайзия МУЛЬТИПОЛИГОН (((13102705.696 463877.598, 13101. ТОЧКА (12211696.493 422897.505)
2 Чили МУЛЬТИПОЛИГОН (((-7737827.685-1979875.500, -77. ТОЧКА (-7959811,948-4915458.802)
3 Боливия ПОЛИГОН ((-7737827,685-1979875,500, -7737828. ТОЧКА (-7200010,945 -1894653,148)
4 Перу МУЛЬТИПОЛИГОН (((-7737827.685-1979875.500, -77. ТОЧКА (-8277554,831 -1032942,536)

Несмотря на то, что центроид является геометрией, в настоящее время он не установлен в качестве геометрии для нашей таблицы. Мы можем переключиться на столбец центроида, используя метод set_geometry (). Наконец, мы можем построить центроид и границу каждой страны, переключив столбец геометрии с помощью set_geometry:

Обратите внимание, как мы можем создать карту, вызвав .plot () в GeoDataFrame. Мы можем тематически раскрасить каждую функцию на основе столбца, передав имя этого столбца методу построения графика (как мы поступаем с ADMIN в этом случае).

Таким образом, как теперь должно быть ясно, почти любой тип географического объекта может быть представлен в одном (или нескольких) столбцах геометрии. Мысль о количестве различных форм или геометрий, которые можно было бы нарисовать, быстро поражает воображение. К счастью, Открытый геопространственный консорциум (OGC) определил набор «абстрактных» типов, которые можно использовать для определения любого вида геометрии. Эта спецификация, кодифицированная в ISO 19125-1 - спецификация «простых функций» - определяет формальные отношения между этими типами: точка - это нульмерное местоположение с координатами x и y, LineString - это путь, состоящий из набора дополнительных элементов. чем одна точка, а полигон - это поверхность, имеющая по крайней мере одну строку LineString, которая начинается и заканчивается с одной и той же координатой. Все эти типы также имеют несколько вариантов, которые указывают на набор нескольких геометрических фигур одного и того же типа. Так, например, Боливия представлена ​​одним многоугольником:

АДМИНИСТРАТОР геометрия центроид
3 Боливия ПОЛИГОН ((-7737827,685 -1979875,500, -7737828. ТОЧКА (-7200010,945 -1894653,148)

в то время как Индонезия - это мультиполигон, содержащий множество полигонов для каждого отдельного острова в стране:

АДМИНИСТРАТОР геометрия центроид
0 Индонезия МУЛЬТИПОЛИГОН (((13102705.696 463877.598, 13102. ТОЧКА (13055431,810 -248921,141)

Во многих случаях географические таблицы будут иметь геометрию одного типа, записи будут все быть, например, Point или LineString. Однако формального требования о том, чтобы географическая таблица имеет геометрию, имеющую один и тот же тип.

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

Поскольку мы читали его с помощью pandas, таблица загружается как DataFrame без явного пространственного измерения:

Если мы проверим таблицу, мы обнаружим, что столбца геометрии нет:

ID пользователя долгота широта выбранная дата photo / video_page_url Икс у
0 10727420 @ N00 139.700499 35.674000 2010-04-09 17:26:25.0 http://www.flickr.com/photos/[email protected]/4545. 1.555139e + 07 4.255856e + 06
1 8819274 @ N04 139.766521 35.709095 2007-02-10 16:08:40.0 http://www.flickr.com/photos/[email protected]/26503. 1.555874e + 07 4,260667e + 06
2 62068690 @ N00 139.765632 35.694482 2008-12-21 15:45:31.0 http://www.flickr.com/photos/[email protected]/3125. 1.555864e + 07 4.258664e + 06
3 49503094041 @ N01 139.784391 35.548589 2011-11-11 05:48:54.0 http://www.flickr.com/photos/[email protected]/6. 1.556073e + 07 4.238684e + 06
4 40443199 @ N00 139.768753 35.671521 2006-04-06 16:42:49.0 http://www.flickr.com/photos/[email protected]/2482. 1.555899e + 07 4.255517e + 06

В этом формате предоставляется множество наборов точечных данных. Чтобы максимально использовать их, их удобно преобразовать в таблицы GeoDataFrame. Этот процесс состоит из двух этапов:

Превратите координаты в геометрию:

Создайте объект GeoDataFrame:

И теперь gt_points выглядит и ощущается точно так же, как и страна, которую мы видели раньше, с той разницей, что в столбце геометрии хранятся геометрии POINT:

ID пользователя долгота широта выбранная дата photo / video_page_url Икс у геометрия
0 10727420 @ N00 139.700499 35.674000 2010-04-09 17:26:25.0 http://www.flickr.com/photos/[email protected]/4545. 1.555139e + 07 4.255856e + 06 ТОЧКА (139.70050 35.67400)
1 8819274 @ N04 139.766521 35.709095 2007-02-10 16:08:40.0 http://www.flickr.com/photos/[email protected]/26503. 1.555874e + 07 4,260667e + 06 ТОЧКА (139.76652 35.70909)
2 62068690 @ N00 139.765632 35.694482 2008-12-21 15:45:31.0 http://www.flickr.com/photos/[email protected]/3125. 1.555864e + 07 4.258664e + 06 ТОЧКА (139.76563 35.69448)
3 49503094041 @ N01 139.784391 35.548589 2011-11-11 05:48:54.0 http://www.flickr.com/photos/[email protected]/6. 1.556073e + 07 4.238684e + 06 ТОЧКА (139,78439 35,54859)
4 40443199 @ N00 139.768753 35.671521 2006-04-06 16:42:49.0 http://www.flickr.com/photos/[email protected]/2482. 1.555899e + 07 4.255517e + 06 ТОЧКА (139,76875 35,67152)

Поверхности¶

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

Чтобы изучить, как Python представляет поверхности, мы будем использовать отрывок для бразильского города Сан-Паулу из глобального набора данных о населении. Этот набор данных регистрирует подсчет населения в ячейках одинаковых размеров, равномерно покрывающих поверхность Земли. Наш отрывок доступен в виде файла GeoTIF, разновидности формата изображения TIF, который включает географическую информацию. Мы можем использовать метод open_rasterio () из пакета xarray для чтения в GeoTIF:

Это считывает данные в объект DataArray:

xarray - это пакет для работы с многомерными помеченными массивами. Давайте разберемся с этим: мы можем использовать массивы не только с двумя измерениями, как в таблице со строками и столбцами, но и с произвольным количеством из них, каждое из этих измерений «отслеживается» индексом, который упрощает и упрощает управление. В xarray эти индексы называются координатами, и их можно получить из нашего DataArray с помощью атрибута coords:

Интересно, что на нашей поверхности есть три размеры: x, y и диапазон. Первый для отслеживания широты и долготы, которые покрывает каждая ячейка в нашей сетке населения. Третий имеет единственное значение (1) и в данном контексте не очень полезен. Но легко представить контексты, в которых было бы полезно третье измерение. Например, оптическое цветное изображение может иметь три полосы: красный, синий и зеленый. Более мощные датчики могут улавливать дополнительные диапазоны, такие как ближний инфракрасный (NIR) или даже радиодиапазоны. Или же поверхность, измеряемая во времени, например геокубы, которые мы обсуждали в главе 2, будет иметь полосы для каждого момента времени, в который измеряется поле. Таким образом, географическая поверхность будет иметь два измерения, фиксирующие расположение ячеек (x и y), и по крайней мере одну полосу, которая записывает другие измерения, относящиеся к нашим данным.

Объект xarray.DataArray содержит дополнительную информацию о значениях, хранящихся в атрибуте attrs:

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

Таким образом, наш DataArray имеет три измерения:

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

Таким образом, получившийся объект представляет собой двумерный массив. Подобно географическим таблицам, мы можем быстро отобразить значения в нашем наборе данных:

Это дает нам первый обзор распределения населения в регионе Сан-Паулу. Однако, если мы посмотрим дальше, мы увидим, что карта включает отрицательные значения! Как это могло произойти? Как оказалось, отсутствующие данные традиционно хранятся на поверхностях не как отдельный класс (например, NaN), а с невозможным значением. Если мы вернемся к распечатке attrs выше, мы увидим, как атрибут nodatavals указывает отсутствующие данные, записанные с -200. Имея это в виду, мы можем использовать метод where () для выбора только значений, которые нет -200:

jupyter nbconvert –to notebook –execute captions.ipynb cp ../book/infrastructure/logo/favicon.ico tmp_book / favicon.ico jupyter-book build tmp_book –builder latex sed -e 's / section / chapter / g' -e 's / subsction / section / g' -e 's / subsubsection / subsction / g' tmp_book / _build / latex / python.tex & gt tmp_book / _build / latex / python_1.tex jupyter nbconvert –to notebook –Выполнить latex.ipynb cp Infrastructure / crc / Krantz_AuthoredBook_v1.18 / Krantz_AuthoredBook_v1.18 / krantz.cls tmp_book / _build / latex / krantz.cls cp tmp_book / *. Tex tmp_book / _build / latex /. cp tmp_book / _build / latex / part1.tex tmp_book / _build / latex / part1.md pandoc tmp_book / _build / latex / part1.md -o tmp_book / _build / latex / part1.tex cp tmp_book / _build / latex / part2.tex tmp_book / _build / latex / part2.md pandoc tmp_book / _build / latex / part2.md -o tmp_book / _build / latex / part2.tex cp tmp_book / _build / latex / part3.tex tmp_book / _build / latex / part3.md pandoc tmp_book / _build / latex / part3.md -o tmp_book / _build / latex / part3.tex Цветовая шкала теперь выглядит более разумной и указывает настоящий подсчитывает, а не включает отсутствующие значения заполнителей данных.

Пространственные графики¶

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

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

Для иллюстрации мы будем полагаться на библиотеку osmnx, которая может запрашивать данные из OpenStreetMap. Например, мы извлекаем уличный график парка Ёёги рядом с нашими предыдущими данными из Токио:

Приведенный выше фрагмент кода отправляет запрос на сервер OpenStreetMap для получения данных. Обратите внимание, что ячейка выше требует подключение к Интернету для работы. Если вы работаете над книгой без возможность подключения, кешированная версия графика доступна в папке данных и может быть прочитана как:

Как только данные возвращаются в osmnx, они обрабатываются в графическом представлении Python:

Мы можем быстро проверить структуру графика с помощью метода plot_graph:

Результирующий объект графа на самом деле является MultiDiGraph из networkx, библиотеки графов, написанной на Python. График здесь хранится как набор из 106 узлов (перекрестков):

и 287 ребер (улиц), которые их соединяют:

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

Характеристики лезвия:

Или как разные компоненты графика соотносятся друг с другом. Например, какие еще узлы напрямую подключены к узлу 1520546819?

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


Проект: #EUreferendum & # 8211, неделя 3, мнение

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

Неделя 3 = воскресенье 29 мая - суббота 4 июня.

Каково было мнение в Твиттере о предстоящем референдуме ЕС в Великобритании на третьей неделе? На неделе 1 и неделе 2 было похоже, что & # 8220leave & # 8221 выигрывал & # 8230

Неделя 3 представляет собой продолжение тенденции: те, кто выражает свое мнение таким образом, чтобы вызвать мой критерий «покинуть», по-прежнему превосходят количество тех, кто, похоже, хочет «остаться» 8221:

  • Оставить = 3291 твит на 3 неделе (3429 твитов на 2 неделе и 2566 на 1 неделе)
  • Остаток = 1258 твитов на 3-й неделе (1103 твита на 2-й неделе и 727 твитов на 1-й неделе)

Однако еженедельно это демонстрирует снижение количества твитов & # 8220leave & # 8221 на 4% по сравнению со 2-й неделей, но по-прежнему на 28% больше на 1-й неделе & # 8220Remain & # 8221 твитов увеличилось на 14% по сравнению с Неделя 2 и 73% по сравнению с неделей 1.

Может ли это быть признаком того, что более спокойное «оставшееся» большинство начинает выражать свое мнение по мере того, как гипербола становится экстремальной, а время сужается, для того, что считается самым важным решением для поколений?

См. Ниже временную карту крутящего момента вместе с лежащей в основе пространственной тепловой картой, демонстрирующей приблизительную географию дискуссии. Из 4549 твитов мне удалось привязать 2011 с помощью встроенных инструментов пространственной привязки CartoDB & # 8217 (44%).

Очевидно: это не сделано для того, чтобы каким-либо образом предсказать результат референдума.


Как добавить строку на карту CartoDB? - Географические информационные системы

Первоначально написано 9 августа 2014 г.
Последнее обновление: 15 февраля 2016 г.

Я (Крис Хенрик) имею профессиональное образование в области картографии и географических информационных систем. Совсем недавно я консультировал по интерфейсной веб-разработке, визуализации данных и интерактивному веб-картированию. Я помогаю соорганизатором нью-йоркского отделения Maptime, группы волонтеров, которые любят бесплатно преподавать картографические технологии широкой публике.

О чем этот учебник?

Отображение данных в интерактивном режиме в Интернете с помощью бесплатного программного обеспечения CartoDB с открытым исходным кодом.

В первую очередь люди, которые плохо знакомы с созданием интерактивных карт, которые живут в сети. Если у вас есть опыт работы с ГИС или картографией, часть этого руководства может быть обзорной, так что, пожалуйста, ознакомьтесь со мной.

Вы можете просмотреть слайды презентации, которую я обычно провожу в этом руководстве. Используйте клавиши ◀ ▶ для перехода между слайдами.

Вот несколько примеров того, как люди использовали CartoDB для создания интерактивных карт:

CartoDB - это программное обеспечение как услуга (SaaS) для визуализации и анализа геопространственных данных в Интернете. Это, пожалуй, самый удобный метод создания интерактивных карт в Интернете с вашими собственными данными. CartoDB обеспечивает высокую картографическую настройку с помощью интуитивно понятного пользовательского интерфейса, а также расширенный анализ геопространственных данных с использованием SQL (язык структурированных запросов) и Post-GIS.

До CartoDB и другого программного обеспечения для веб-картографии с открытым исходным кодом, такого как Tile Mill, создание веб-карт требовало запуска вашего собственного веб-сервера и установки как серверного программного обеспечения, так и программного обеспечения базы данных. Это должно быть чрезвычайно сложно если вы не были опытным программистом / веб-разработчиком. Самое замечательное в CartoDB то, что он обрабатывает все серверные вещи за вас! Например, каждый раз, когда вы импортируете данные в CartoDB, эти данные автоматически сохраняются в базе данных, имеющей геопространственный возможности.

Геопространственный? Подождите, что это.

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

Примеры типов геометрии:

Список почтовых адресов, которые затем можно привязанный (сопоставлены) с отдельными парами координат (точек) широты и долготы, например, расположение всех государственных школ в Нью-Йорке:

Такие объекты, как реки и ручьи или дорожные сети, могут быть сохранены и представлены в виде линий:

Границы районов Нью-Йорка (или другие административные государственные границы, такие как штаты, провинции и страны) могут быть сохранены и представлены в виде многоугольников:

Вышеуказанные типы данных используются для рендеринга фрагменты карты как те, которые вы видите на OpenStreetMap, Google Maps, Bing, Map Quest и т. д. Например, это фрагменты карты от разных поставщиков для одного и того же района Сан-Франциско:

Фрагменты карты - это изображения размером 256 x 256 пикселей, которые выровнены в виде сетки. Они разбиты таким образом, чтобы сделать масштабирование и панорамирование плавными и плавными для пользователя веб-карты. Визуализируются только изображения внутри и снаружи области карты, на которую смотрит пользователь. Серверу предлагается отрендерить соседние плитки и тайник их так, чтобы при панорамировании в новую область взаимодействие выглядело безупречно.

Для целей этого урока фрагменты карты образуют наши Базовая карта что мы можем наложить пользовательские данные на вершине. Более того, мы можем анализировать наши геопространственные данные с CartoDB. Обе эти способности - вот где самое интересное :)

Анализ геопространственных данных с помощью PostGIS

PostGIS (вместе с PostgreSQL) - это технология баз данных с открытым исходным кодом, которая позволяет выполнять геопространственный анализ данных в CartoDB. Зачем нам использовать это по сравнению с другими типами программного обеспечения ГИС?

  • Воспроизводимый: Вы можете создать сценарий рабочего процесса, который отлично подходит для того, чтобы оставить след в вашей работе.
  • Он основан на SQL: Если вы уже знаете SQL, это простой способ начать анализ ГИС.
  • Вы можете запрашивать данные динамически: Если у вас есть сервер, который может обрабатывать запросы PostGIS и возвращать JSON, вы можете выполнять динамические пространственные запросы в своих приложениях. например «Найди все точки рядом со мной».

В этом руководстве мы рассмотрим некоторые основные PostGIS, хотя, если вам интересно, вы можете найти здесь еще одно вводное руководство по использованию PostGIS в CartoDB. В Академии карт CartoDB также есть множество отличных руководств.

Введение в панель управления CartoDB

  1. Создайте бесплатную учетную запись и войдите в CartoDB. После входа в систему и просмотра панели управления щелкните опцию «Библиотека данных» (в правом верхнем углу панели). Перейдите на страницу 5, выберите набор данных «Населенные места», а затем нажмите «Подключить набор данных» в верхней части панели управления. В вашу учетную запись будет импортирован набор данных "Населенные места".

После импорта данных взгляните на поле adm0cap в вид таблицы. В этом поле хранятся цифры 0 и 1, что означает, что это место является столицей страны.

Есть два способа проверить ваши данные в CartoDB:

Просмотр таблицы: Отображает имена столбцов и строки, как в электронной таблице. Для этого набора данных каждая строка представляет точку. Но строки могут также представлять другие типы геометрии в зависимости от ваших данных.

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

Просмотр карты: Позволяет просматривать наши данные визуально, например: масштабирование и панорамирование на интерактивной веб-карте. Отсюда мы можем изменить стиль базовой карты, используя Мастер визуализации на боковой панели, чтобы стилизовать наши данные и добавить взаимодействие, такое как всплывающие окна, которые отображают значения из столбцов в нашем табличном представлении.

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

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

Публикация / обмен картой:

Нажав на кнопку «Визуализировать» в правом верхнем углу, мы можем создать Визуализация. Сделайте это и дайте своей визуализации имя, например «Моя первая визуализация».

Когда мы создаем визуализацию, она унаследует стили, которые мы установили из нашего вида карты.

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

Примечание: любые изменения, которые мы вносим в нашу визуализацию (данные или стиль), будут обновляться в реальном времени для всех, кто просматривает нашу визуализацию!

Обратите внимание на разницу между столы а также визуализации просмотров на панели инструментов. В первом перечислены наборы данных, которые вы импортировали в свою учетную запись, во втором перечислены карты, которые вы создали с вашими данными, и вы можете поделиться / опубликовать их в Интернете.

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

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

Импорт графств США, 1979 г. - Настоящий набор данных (в настоящее время находится на странице 5 библиотеки данных)

Давайте посмотрим на эти данные. Щелкните одну из ячеек под столбцом the_geom. Вы должны увидеть что-то вроде:

Так CartoDB хранит геометрию для многополигональный, или группа многоугольников. Каждая из этих координат относится к узел внутри одного многоугольника. Мульти-полигоны полезны для группировки множества географических объектов, таких как острова, которые принадлежат одному политическому образованию, например, штату или провинции.

Теперь переключитесь на Просмотр карты чтобы увидеть, как полигоны накладываются на нашу карту.
В мастере визуализации:

Попробуйте щелкнуть где-нибудь на карте. Обратите внимание на всплывающее окно со следующим сообщением: «Вы не выбрали поля для отображения в информационном окне». Щелкните ссылку выбора полей и обратите внимание, что боковая панель справа перейдет к Информационное окно панель. Здесь вы можете настроить отображение данных во всплывающих окнах или то, что CartoDB вызывает. Информационные окна.
Здесь вы можете:

  • Включите или отключите любой из ваших столбцов, чтобы значения отображались в информационном окне.
  • отредактируйте имя столбца, который будет отображаться в информационном окне (Примечание: это не изменит имя столбца в ваших фактических данных).
  • изменить стиль информационных окон.
  • настраивайте их с помощью HTML и CSS.

Давайте попробуем переключить графический стиль наших данных с помощью Мастера визуализации. Измените стиль с «простого» на «хороплет». Обратите внимание, как наши данные многоугольника автоматически кодируются цветом на основе значений в данных, в данном случае всего населения. Однако здесь есть проблема: отображение населения по округам производит ложное впечатление у зрителя нашей карты. Нам нужно нормализовать данные путем деления количества людей в округе на его географический район.

К счастью, в наших данных это значение уже включено в столбец pop_sqkm. Чтобы показать, как вы можете вычислить это самостоятельно, мы сделаем следующее в Панель SQL:

Это пример использования технологии с открытым исходным кодом. PostGIS для пространственного анализа наших данных. С помощью PostGIS мы можем вычислять такие значения, как расстояние и площадь, где разные наборы пространственных данных пересекаются друг с другом, а также экспортировать наши данные в разные форматы данных, такие как GeoJSON или же Шейп-файл.

Создание тематической точечной карты

Импортируйте набор исторических данных Tornado 1950–2013 гг. (В настоящее время находится на странице 3 библиотеки данных).

Изучите данные. Поскольку эти данные были сохранены в формате CSV, все наши типы данных хранятся как струны (строка - это тип данных для хранения текста, например предложение или слово). Чтобы использовать числовой а также Дата значения в этих данных, нам нужно преобразовать следующие столбцы в соответствующие типы данных, щелкнув небольшую морковку рядом с именем столбца, а затем щелкнув «Изменить тип данных».
Итак, теперь мы:

  • преобразовать тип данных столбца повреждений в номер.
  • преобразовать тип данных столбца даты в Дата. Правильные типы данных важны для пространственного анализа. Если PostGIS считает, что наш тип данных - это строки, тогда как на самом деле они числа или даты, наш анализ не сработает!

Now in the map view use the Visualization Wizard to show our data's damage value in different methods such as Bubble Map, Intensity, Density Map, etc.

Take a look at the Filters panel, show how filters are translated into SQL by viewing the SQL Panel after applying a filter.

Back in the "Map View" try adding labels to our map. Notice how the CartoCSS panel is updated. If we'd like, we can customize our map styles using CartoCSS. This gives us more fine tuning of our map's style than we can get with the Visualization Wizard.

Animating Geospatial Data with Torque

Use the same tornado data from above.

Try out the Torque option in the Visualization Wizard by selecting the date column as the temporal value to animate.

Counting Points in Polygons

Let's combine both the Counties and Tornadoes datasets into a new visualization. Order the layers so that the tornado data is on top of the county data. This is interesting but what if we wanted to style our counties by the number of tornados each has within its borders?

We can use PostGIS to count the number of tornadoes per county. Create a new column called tornadoes_by_county in the us_counties table and give it a numeric data type.

Then in the SQL Panel run the following query (this assumes your tornado data table is named tornadoes )

In the visualization wizard for the us_counties layer try changing the category to choropleth and using the column tornadoes_by_county to style the map.

That's it folks, hope you had fun! Увидеть Resources section below for further learning.


Intro to Mapping with CartoDB

About a year ago, I posted a brief tutorial on ESRI’s StoryMaps, a lightweight ArcGIS web mapping platform. This time around, I want to share a similar tutorial on the CartoDB platform. Whereas StoryMaps is a very minimal mapping platform designed to let users craft a narrative around a simple dataset, CartoDB provides a more robust set of mapping tools to display multiple datasets, increase customizability, and in general, do more with your data.

I first started playing with CartoDB earlier this year while working on a project aimed at visualizing the impacts of the CUNY Grad Center across NY and the world. You can view one of the maps for this project, created by Steve Romalewski: Where Are GC Students Teaching.

CartoDB is a web-based open source mapping platform, which can be installed on your own server, or used as a cloud-based mapping service through CartoDB.com. CartoDB.com offers different price tiers, including a free tier for lightweight mapping with small datasets.

For this tutorial, we will be using the free tier service to create a really simple map that will teach you the basics of importing data, applying different visualizations, using filters, and creating data interactivity.

Tutorial Data

GIS data and mappable datasets are widely available across the web. If you are dealing with New York, one great resource is the NYC Department of City Planning Bytes of the Big Apple website, which contains downloadable datasets related to administrative and planning boundaries. If you want to incorporate US Census Data, the easiest way to get recent data is by using the TIGER datasets, although they aren’t available for every geography and time period. In this tutorial, we will be using a dataset that I pulled from the NYPD Stop, Question and Frisk (aka Stop and Frisk) database.

To simplify the data import process, I created a slightly modified dataset based on the 2014 SQF data by converting the geocoordinates embedded in the files (based on the NY-Long Island state plane system) to a format that CartoDB natively understands (for details on this process, see note 1 below).

Most datasets will have metadata associated with them. This data is no different. You can download the metadata descriptors for this dataset here: NYPD Stop Question Frisk Database File specifications

The first sheet in the file specification spreadsheet describes each column in the dataset. The second sheet contains the database code values used within each column (e.g., Y=Yes, N=No).

Sign-up on CartoDB.com

The first thing you will need to do is to create an account on CartoDB.com.

Once you’ve verified your account, log in and you should be taken to your personal CartoDB dashboard, where you can watch their snazzy screencast showing you how to get started. Below the video is a place to import your first dataset, which is where we begin with the next step.

Import Data

Once you’re logged in to CartoDB.com, click the “Create your first table” button near the bottom of the page and select the .zip file containing the NYPD SQF data that you just downloaded.

Play with the Data

The best way to learn CartoDB is by playing around and seeing what you can do! Click on the “MAP VIEW” tab at the top of the page to visualize the data.

Click the “Wizards” button on the toolbar along the right edge of the screen (the paintbrush). Try out the different types of maps, play with the options, select different columns to display, etc. Refer to the metadata file specifications linked above to gain a better understanding of what each data column represents and what the codes mean (the second tab in the spreadsheet).

Change the Visualization

Now that you’ve explored the data a bit, let’s set the visualization so that we’re on the same page. Select “Heatmap” from the visualization wizard. In marker size, select 𔄞”, opacity 𔄘.5”, not animated, and resolution 𔄚”. These settings give a nice balance between data resolution while maintaining a meaningful heatmap effect.

Filter the Data

With large datasets, it’s often helpful to filter the data so that you get a more precise understanding of different phenomena. In CartoDB, you have two options. You can filter data using SQL queries (the SQL button on the toolbar), or the more basic filter tool (the “filters” button at the bottom of the toolbar).

Click the “filters” button. In the dropdown menu, select the “arstmade” (Was an arrest made?) column. This will display a card that allows you to turn on or off datapoints corresponding to different values. If you uncheck the “Y” value, the map only displays SQFs where the person was NOT arrested (only “N” values are displayed). Notice that a huge majority of the SQFs resulted in no arrest.

Next, click the “+” button below the first filter to add a second filter column. Select “forceuse” (reason for the use of force) for the second filter. Uncheck the “null” values (no reason given, we’ll assume this means no force was used see note 2 below). There should only be a fraction of the original points left. But it’s a bit interesting that there are still quite a few incidents where force was used, yet no arrest was made. Also notice how a lot of those seem to be clustered around the central parts of the Bronx…

Make the Map Interactive

Next we will add info windows to the data that pop up when you hover the mouse over a datapoint or click on it.
First, we need to change the map type to one that shows discrete data points. Go back to the wizard tab, select “Category”, then set the following options: Column=”detailCM” (suspected crime code) Marker fill=5, 0.4 Marker stroke=0,1 “Y”/”N”=colors of your choice.

Next, go to the “infowindow” tool item, then click the “Hover” tab. Pick one or more columns to display when the mouse hovers over a data point. I chose “crimesusp”, “contrabn”, “arstmade”. Now move your mouse over a data point on the map and it should display a window with the selected items. You can do the same for the “Click” tab, except those will display when the data point is clicked. Hover is good for quick data, while click is more appropriate for detailed information. I added “forceuse”, “explnstp”, and “frisked” columns for the click window.
In both the Hover and Click tabs, you can rearrange the displayed items by dragging them up and down the list.

Add a Legend and Publish

The next thing we will do is add a legend to the map so that people viewing it know what the map symbols represent. Click on the “legends” tool item, then select “custom” from the drop-down menu. This will allow us to customize the category names since the default crime codes aren’t very reader-friendly. Referring back to the metadata spreadsheet, we can fill in descriptors for each of the top crime codes reported as justification for the SQF incidents. For example, 󈬄” is the code for “CPW”, or criminal posession of a weapon, which is the top reason for SQFs. Click on the 󈬄” in the first row and change the text to something human-readable, like “Criminal Posession of a Weapon”. Do the same for the rest of the items.

Finally, click on the “Visualize” button at the top of the page. This gets it ready to be published. You should see a new “Options” button in the bottom left corner, where you can turn on or off various features such as the search box and title element. There are also buttons along the top of the map that let you add elements such as text boxes or annotations, and preview what your map will look like when viewed on a mobile device.

Now that your map is pretty, it’s ready to share! You can use the “Share” button in the upper right corner to generate a link to send, or you can embed the map within another website by using the embed code. Note that the embed uses iframes, which can’t be used on some WordPress sites for security reasons, but in these cases, I suggest using a static image of the map and linking that to the CartoDB page for your map (like I’ve done below).

Click the map to explore the data

Next Steps

Now that you’ve created your first CartoDB map, there are plenty of other things you can do with it, such as adding additional data layers to your existing map, or duplicating the map and highlighting different aspects of the data using the other map types. If you are familiar with SQL, you can also use the SQL tool to do some basic data manipulation, perform joins, and do some basic calculations and analyses with your data sets. CartoDB also allows you to fine-tune customize the appearance of your maps using a special version of CSS with selectors that link to your data, however I will leave it to you to play with this on your own.
You can also do things like geocoding in CartoDB, which allows you to convert street addresses into points on a map, but the free account limits the number of items you are allowed to process. You could, however, geocode data in another program like Google’s Fusion Tables or QGIS, then import it into CartoDB for the visualization.
While CartoDB is a great tool for visualizing data, it’s not really meant to be a fully featured GIS system. When you are ready to move on to more advanced GIS techniques like buffering, intersects, raster analysis, or spatial statistics, I suggest checking out the open source QGIS package.

Note 1: Converting the NYPD’s stop-and-frisk data to a format usable in CartoDB

I used the free and open source QGIS package to import the raw CSV data from the NYPD website. Start by opening the Layer > Add Layer > Add Delimited Text Layer… Menu. Browse for your downlaoded data. You might need to unzip the datafile before selecting it in QGIS. Next, select the x- and y-coordinate fields from the dropdown menus (see screenshot) in the case of the SQF dataset, these are “xcoord” and “ycoord”, respectively.


Click “OK”, then close the warning box (this is because a bunch of data doesn’t have x-y coordinates associated with them). Then you will need to select the coordinate system that corresponds to your data. In this case, it appeared that the x- and y-coordinates were in the state plane system, so I made a guess that they used the New York-Long Island State Plane system (“NAD_1983_StatePlane_New_York_Long_Island_FIPS_3014_Feet”). Finally, right-click the newly imported layer, select Save As…, select “ESRI Shapefile” or CSV or any other format compatible with CartoDB, click “Browse” to give your file a name and location, then click “OK”. If you save it as an ESRI Shapefile, you’ll need to add all of the files (.dbf, .prj, .qpj, .shp, .shx) to a single .zip file. If you’re on OS X, just select them all in a finder window, right-click, and select “Compress 5 items”. The resulting Archive.zip is the file you will upload to CartoDB.

Note 2: Use of force and Using SQL Queries

In the section where I explain applying filters, I used the “forceuse” column as a proxy for determining whether or not force was used in a particular stop. The dataset actually has several columns that indicate whether or not force was used, but the filter tool built into CartoDB doesn’t really allow us to capture all of the incidents where force was applied using those columns. The problem is that the filter tool always applies an “AND” operator between multiple filters, and not an “OR”. We want to see all the incidents where force was used, which means the use of physical force-hands, OR physical force-weapon drawn, OR physical force-etc. For these types of filters, we need to use the SQL query tool, which allows much finer-grained control over which data gets included in the active dataset.
Click on the “SQL” toolbar item. Where says “Custom SQL query”, replace the existing text with this code snippet:

When you click “Apply query”, you should see a much smaller dataset. These are the incidents where physical force was reported (the pf_hands, pf_wall, pf_etc. columns), but where the justification (forceuse column) was not reported. Notice they’re almost all clustered in a subset of precints in the Bronx, Flatbush, and East Harlem?
If you change the last part of that query, the and forceuse is null portion, to instead read or forceuse is not null , you will have a dataset with all of the incidents where the use of physical force was reported, including those instances where no justification was given.


Anonymous Maps allows you to instantiate a map given SQL and CartoCSS. It also allows you to add interaction capabilities using UTF Grid.. Alternatively, you can get the data for the map (geometry and attributes for each layer) using vector tiles (in which case CartoCSS is not required).

Instantiate

Definition
Params
Response

Attributes Описание
layergroupid The ID for that map, used to compose the URL for the tiles. The final URL is: https://.carto.com/api/v1/map////.png
updated_at The ISO date of the last time the data involved in the query was updated.
metadata Includes information about the layers.
cdn_url URLs to fetch the data using the best CDN for your zone.

Improved response metadata

Originally, you needed to concantenate the layergroupid with the correct domain and the path for the tiles. Now, for convenience, the layergroup includes the final URLs in two formats:

  1. Leaflet’s urlTemplate alike: useful when working with raster tiles or with libraries with an API similar to Leaflet’s one. : useful when working with Mapbox GL or any other library that supports TileJSON.

Example

Response

Map Tile Rendering

Map tiles are used to create the graphic representation of your map in a web browser. Tiles can be requested either as pre-rendered raster tiles (images) or as vector map data to be rendered by the client (browser).

Raster: If a tile is requested as a raster image format, like PNG, the map will be rendered on the server, using the CartoCSS styles defined in the layers of the map. It is necessary that all the layers of a map define CartoCSS styles in order to obtain raster tiles. Raster tiles are made up of 256x256 pixels to avoid graphic quality issues tiles should be used unscaled to represent the zoom level (Z) for which they are requested. In order to render tiles, data will be retrieved from the database (in vector format) on the server-side.

Vector: Tiles can also be requested as MVT (Mapbox Vector Tiles). In this case, only the geospatial vector data, without any styling, is returned. These tiles should be processed in the client-side to render the map. In this case layers do not need to define CartoCSS, as any rendering and styling will be performed on the client side. The vector data of a tile represents real-world geometries by defining the vertices of points, lines or polygons in a tile-specific coordinate system.

Retrieve resources from the layergroup

When you have a layergroup, there are several resources for retrieving layergoup details such as, accessing Mapnik tiles, getting individual layers, accessing defined Attributes, and blending and layer selection.

Raster tiles

These raster tiles are PNG images that represent only the Mapnik layers of a map. See individual layers for details about how to retrieve other layers.

Mapbox Vector Tiles (MVT)

Mapbox Vector Tiles (MVT) are map tiles that transfer geographic vector data to the client-side. Browser performance is fast since you can pan and zoom without having to query the server.

CARTO uses Web Graphics Library (WebGL) to process MVT files on the browser. This is useful since WebGL is compatible with most web browsers, include support for multiple client-side mapping engines, and do not require additional information from the server which makes it more efficient for rendering map tiles. However, you can use any implementation tool for processing MVT files.

The following examples describe how to fetch MVT tiles with a cURL request.

MVT and Windshaft

CARTO uses Windshaft as the map tiler library to render multilayer maps with the Maps API. You can use Windshaft to request MVT using the same layer type that is used for requesting raster tiles (Mapnik layer). Simply change the file format .mvt in the URL.

The following example instantiates an anonymous map with layer options:

Примечание: If no layer type is specified, Mapnik tiles are used by default. To access MVT tiles, specify https://.cartodb.com/api/v1/map/HASH///.mvt as the maps_api_template variable.

Tip: If you are using Named Maps to instantiate a layer, indicate the MVT file format and layer in the response:

For all layers in a Named Map, you must indicate Mapnik as the layer filter:

Layergroup Filter for MVT Tiles

To filter layers using Windshaft, use the following request where layers are numbered:

To request all layers, remove the layergroup filter parameter:

To filter a specific layer:

Example 1: MVT Tiles with Windshaft, CARTO.js, and MapboxGL

1) Import the required libraries:

3) Create Map Object (Mapbox):

4) Define Layer Options (CARTO):

5) Request Tiles (from CARTO) and Set to Map Object (Mapbox):

Примечание: By default, CARTO core functions retrieve URLs for fully rendered tiles. You must replace the default format (.png) with the MVT format (.mvt).

Example 2: MVT Libraries with Windshaft and MapboxGL

When you are not including CARTO.js to implement MVT tiles, you must use the map.setStyle parameter to specify vector map rendering.

1) Import the required libraries:

3) Create Map Object (Mapbox):

Tip: If you are using MapboxGL, see the following resource for additional information.

Individual layers

The MapConfig specification holds the layers definition in a 0-based index. Layers can be requested individually, in different formats, depending on the layer type.

Individual layers can be accessed using that 0-based index. For UTF grid tiles:

In this case, layer as 0 returns the UTF grid tiles/attributes for layer 0, the only layer in the example MapConfig.

If the MapConfig had a Torque layer at index 1 it could be possible to request it with:


How to Use These Tiles Elsewhere

Except otherwise noted, each of these map tile sets are © Stamen Design, under a Creative Commons Attribution (CC BY 3.0) license.

We&rsquod love to see these maps used around the web, so we&rsquove included some brief instructions to help you use them in the mapping system of your choice. These maps are available free of charge. If you use these tiles, you must use this attribution:

Attribution:

And if you do use these maps elsewhere, please post a tweet to @stamen!

"Isn't OSM data provided under the ODbL now?" Yes, but the data used in our Watercolor map tiles pre-dates the license change, so it remains CC BY SA for that tileset until it's refreshed.

JavaScript Libraries

To use these tiles, just include our JavaScript alongside your favorite mapping library:

Then, follow the instructions below for your preferred library:

Leaflet

Or you can use the built-in Stamen layers in the Leaflet-providers library. View the demo.

OpenLayers

OpenLayers is a hefty and featureful mapping library for use with a variety of GIS applications. Our JavaScript library is useful for older version of OpenLayers (version 2 or earlier). View the example.

For newer versions of OpenLayers, use the built-in Stamen layer source. View the demo.

Elsewhere

Instead of using our JavaScript library, you can refer to the tile URLs directly.

Many applications and libraries understand the notion of map URL templates. These are ours:

  • https://stamen-tiles.a.ssl.fastly.net/toner///.png
  • https://stamen-tiles.a.ssl.fastly.net/terrain///.jpg
  • https://stamen-tiles.a.ssl.fastly.net/watercolor///.jpg

Multiple subdomains can be also be used: https://stamen-tiles-.a.ssl.fastly.net

JavaScript can be loaded from https://stamen-maps.a.ssl.fastly.net/js/tile.stamen.js .

If you need protocol-agnostic URLs, use //stamen-tiles-.a.ssl.fastly.net/ , as that endpoint will work for both SSL and non-SSL connections.

Thank you to geocode.earth for powering our search box.

These tiles were developed by Stamen as part of the CityTracking project, supported by the Knight Foundation. Stamen continues to offer and support these map tiles and other open source tools in support of map makers everywhere.


Adding a legend¶

It is possible to enable legend for a geopandas plot by setting legend=True in the plotting parameters. If plotting the figure without a classification scheme you get a color bar as the legend item and it is easy to add a label for the legend using legend_kwds . You can read more about creating a legend via geopandas in here.

If plotting a map using a classification scheme, we get a different kind of ledend that shows the class values. In this case, we can control the position and title of the legend using matplotlib tools. We first need to access the Legend object and then change it’s properties.

You can read more info about adjusting legends in the matplotlig legend guide.


The Future of Web Maps and Mapping Tools

The future of the mapping world is looking interesting. Here are some emerging technologies that would have looked like science fiction only a few years ago:

  • Vector-Only - Using vector maps instead of raster images with D3.js brings a new world of features that are not possible using standard frameworks. MapBox is also moving in this direction, with MapBox GL, based on OpenGL.
  • 3D - Three dimensional terrain and buildings are now showing up in maps, and OpenLayers v3 ships with built-in support for Cesium.
  • GIS and spatial analysis in the web browser - Already possible using Turf. Turf is a JavaScript library that supports spatial and statistics operations, data classification, and GeoJSON data creation, all within the browser.