Suite

Comment ajouter une ligne à la carte CartoDB ?

Comment ajouter une ligne à la carte CartoDB ?


Selon le tutoriel CartoDB sur la façon d'ajouter et de modifier des géométries, à l'aide de l'éditeur CartoDB, lorsque nous cliquons Ajouter une fonctionnalité, nous devrions obtenir une fenêtre contextuelle avec trois options :

  • Ajouter un point
  • Ajouter une ligne
  • Ajouter un polygone

Mais quand je clique dessus, je n'obtiens que le Ajouter un point option. Les deux autres options ont-elles été déplacées ailleurs ? Ou existe-t-il un autre moyen d'ajouter une ligne ?


Dans une couche, vous ne pouvez avoir qu'un seul type de géométrie (polygone, ligne ou point). Il semble que vous ayez déjà quelques points dans le tableau et maintenant seule cette option apparaît. Vous pouvez le modifier en supprimant tous les points et en actualisant la page, mais si vous souhaitez inclure différentes géométries dans votre carte, vous devez créer une nouvelle table avec les lignes et l'ajouter à votre table précédente en tant que nouvelle couche.

En utilisant trois couches, vous pourrez avoir les trois géométries disponibles dans une carte.


Comment ajouter une ligne à la carte CartoDB ? - Systèmes d'information géographique

Vous pouvez jeter un œil à ces ressources si vous voulez vous échauffer avec CARTO

Autres questions et dépannage

  • Envoyer à [email protected].
  • Certaines questions pourraient déjà être répondues à Échange de pile SIG étiquette carto.

Contenu

Comptes mis en place

  • L'instructeur vous fournira un utilisateur et un mot de passe pour accéder à votre compte
  • Connectez-vous à votre compte geostatXX en allant sur https://geostatXX.carto.com

Fondamentaux¶

Comme indiqué dans le chapitre 2, il existe quelques structures de données principales qui sont utilisées dans la science des données géographiques : les tables géographiques (qui sont généralement associées à des modèles de données d'objets), les rasters ou les surfaces (qui sont généralement associées à un modèle de données de terrain), et les réseaux spatiaux (qui sont généralement associés à un modèle de données graphique). Nous les discutons successivement tout au long de cette section.

Tables géographiques¶

Les objets géographiques correspondent généralement à ce que nous appelons le tableau géographique. Les tableaux géographiques peuvent être considérés comme un onglet dans une feuille de calcul où l'une des colonnes enregistre des informations géométriques. Cette structure de données représente un seul objet géographique sous la forme d'une ligne d'un tableau. Chaque colonne du tableau enregistre des informations sur l'objet, ses attributs ou ses caractéristiques, comme nous le verrons ci-dessous. Typiquement, il y a une colonne spéciale dans ce tableau qui enregistre le géométrie de l'objet. Les systèmes informatiques qui utilisent cette structure de données sont destinés à ajouter la géographie dans un base de données relationnelle, comme PostgreSQL (via son extension PostGIS) ou sqlite (via son extension spatialite). Au-delà de cela, cependant, de nombreux langages de science des données (tels que R, Julia et Python) ont des packages qui adoptent également cette structure de données (tels que sf , ArchGDAL et geopandas ), et il devient rapidement la principale structure de données pour données géographiques basées sur des objets.

Avant de continuer, cependant, il est utile de mentionner une clarification rapide sur la terminologie. Tout au long de ce livre, quelle que soit la structure de données utilisée, nous désignerons une mesure sur une observation comme un fonctionnalité. Ceci est cohérent avec d'autres travaux en science des données et en apprentissage automatique. Ensuite, un ensemble de mesures est un goûter. Pour les tableaux, cela signifie qu'une caractéristique est une colonne et un échantillon est une ligne. Historiquement, cependant, les scientifiques de l'information géographique ont utilisé le mot « élément » pour désigner une observation individuelle, car un « élément » en cartographie est une entité sur une carte et « attribut » pour décrire les caractéristiques de cette observation. Ailleurs, un fonctionnalité peut être appelé un variable, et un goûter appelé enregistrement. Ainsi, une terminologie cohérente est importante : pour ce livre, un fonctionnalité est un trait mesuré relatif à une observation (une colonne) et un goûter est un ensemble de mesures (une ligne).

Pour comprendre la structure des tableaux géographiques, il sera utile de lire le jeu de données country_clean.gpkg inclus dans ce livre qui décrit les pays du monde. Pour lire ces données, nous pouvons utiliser la méthode read_file() dans geopandas :^[Nous utiliserons généralement deux crochets incurvés (comme method_name() ) pour désigner un une fonction, et les omettra (comme package ) lorsqu'il fait référence à un objet ou un package.]

Et on peut examiner le haut du tableau avec la méthode .head() :

ADMINISTRER géométrie
0 Indonésie MULTIPOLYGONE (((13102705.696 463877.598, 13102.
1 Malaisie MULTIPOLYGONE (((13102705.696 463877.598, 13101.
2 Chili MULTIPOLYGONE (((-7737827.685 -1979875.500, -77.
3 Bolivie POLYGONE ((-7737827.685 -1979875.500, -7737828.
4 Pérou MULTIPOLYGONE (((-7737827.685 -1979875.500, -77.

Chaque ligne de ce tableau correspond à un seul pays. Chaque pays n'a que deux caractéristiques : le nom administratif du pays et la géométrie de la frontière du pays. Le nom du pays est codé dans la colonne ADMIN à l'aide du type Python str, qui est utilisé pour stocker des données textuelles. La géométrie de la frontière du pays est stockée dans la colonne géométrie et est codée à l'aide d'une classe spéciale en Python qui est utilisée pour représenter des objets géométriques. Comme pour les autres structures de données basées sur des tables en Python, chaque ligne et colonne ont un index qui les identifie de manière unique et est affiché en gras sur le côté gauche de la table. Cette table géographique est une instance de l'objet geopandas.GeoDataFrame, utilisé dans tout l'écosystème de Python pour représenter des données géographiques.

Les tableaux géographiques stockent les informations géographiques dans une colonne supplémentaire. Mais comment ces informations sont-elles codées ? Pour voir, on peut vérifier le type de l'objet dans la première ligne :

Dans les géopandas (ainsi que dans d'autres packages représentant des données géographiques), la colonne de géométrie a des caractéristiques spéciales qu'une colonne "normale", telle que ADMIN, n'a pas. Par exemple, lorsque nous traçons le dataframe, la colonne de géométrie est utilisée comme forme principale à utiliser dans le tracé :

La modification des géométries doit être effectuée avec soin : comme la colonne de géométrie est spéciale, il existe des fonctions spéciales pour ajuster la géométrie. Par exemple, si nous voulions représenter chaque pays à l'aide de son centre de gravité, un point au milieu de la forme, alors nous devons nous assurer qu'une nouvelle colonne de géométrie a été correctement définie à l'aide de la méthode set_geometry(). Cela peut être utile lorsque vous souhaitez travailler avec deux représentations géométriques différentes du même échantillon sous-jacent.

Faisons une carte de la frontière et du centre de gravité d'un pays. Premièrement, pour calculer le centroïde, nous pouvons utiliser la propriété gt_polygons.geometry.centroid. Cela nous donne le point qui minimise la distance moyenne de tous les autres points sur la limite de la forme. Stocker cela dans une colonne, appelée centroïde :

Nous avons maintenant une fonctionnalité supplémentaire :

ADMINISTRER géométrie centre de gravité
0 Indonésie MULTIPOLYGONE (((13102705.696 463877.598, 13102. POINT (13055431.810 -248921.141)
1 Malaisie MULTIPOLYGONE (((13102705.696 463877.598, 13101. POINT (12211696.493 422897.505)
2 Chili MULTIPOLYGONE (((-7737827.685 -1979875.500, -77. POINT (-7959811.948 -4915458.802)
3 Bolivie POLYGONE ((-7737827.685 -1979875.500, -7737828. POINT (-7200010.945 -1894653.148)
4 Pérou MULTIPOLYGONE (((-7737827.685 -1979875.500, -77. POINT (-8277554.831 -1032942.536)

Malgré le fait que le centroïde soit une géométrie, il n'est actuellement pas défini comme la géométrie de notre table. Nous pouvons passer à la colonne centroïde en utilisant la méthode set_geometry(). Enfin, nous pouvons tracer le centroïde et la frontière de chaque pays en commutant la colonne géométrie avec set_geometry :

Notez comment nous pouvons créer une carte en appelant .plot() sur un GeoDataFrame . Nous pouvons colorer thématiquement chaque entité en fonction d'une colonne en passant le nom de cette colonne à la méthode plot (comme nous le faisons avec ADMIN dans ce cas).

Ainsi, comme cela devrait maintenant être clair, presque n'importe quel type d'objet géographique peut être représenté dans une (ou plusieurs) colonne(s) géométrique(s). Penser au nombre de différents types de formes ou de géométries que l'on pourrait dessiner rapidement est ahurissant. Heureusement, l'Open Geospatial Consortium (OGC) a défini un ensemble de types « abstraits » qui peuvent être utilisés pour définir n'importe quel type de géométrie. Cette spécification, codifiée dans la norme ISO 19125-1—la spécification des « caractéristiques simples »—définit les relations formelles entre ces types : un point est un emplacement de dimension zéro avec une coordonnée x et y une chaîne de ligne est un chemin composé d'un ensemble de plusieurs qu'un Point , et un Polygone est une surface qui a au moins une LineString qui commence et s'arrête avec la même coordonnée. Tous ces types également ont des variantes Multi qui indiquent une collection de plusieurs géométries du même type. Ainsi, par exemple, la Bolivie est représentée par un seul polygone :

ADMINISTRER géométrie centre de gravité
3 Bolivie POLYGONE ((-7737827.685 -1979875.500, -7737828. POINT (-7200010.945 -1894653.148)

tandis que l'Indonésie est un multipolygone contenant de nombreux polygones pour chaque île individuelle du pays :

ADMINISTRER géométrie centre de gravité
0 Indonésie MULTIPOLYGONE (((13102705.696 463877.598, 13102. POINT (13055431.810 -248921.141)

Dans de nombreux cas, les tables géographiques auront des géométries d'un seul type, les enregistrements seront tout être Point ou LineString , par exemple. Cependant, il n'y a aucune exigence formelle qu'un tableau géographique a des géométries qui ont toutes le même type.

Tout au long de ce livre, nous utiliserons abondamment les tables géographiques, stockant des polygones, mais aussi des points et des lignes. Nous explorerons un peu plus les lignes dans la deuxième partie de ce chapitre mais, pour l'instant, arrêtons-nous un instant sur les points. Comme mentionné ci-dessus, il s'agit du type d'entité le plus simple en ce sens qu'ils n'ont aucune dimension, seulement une paire de coordonnées qui leur sont attachées. Cela signifie que les points peuvent parfois être stockés dans une table non géographique, en utilisant simplement une colonne pour chaque coordonnée. Nous en trouvons un exemple sur le jeu de données de Tokyo que nous utiliserons plus tard. Les données sont stockées sous forme de tableau de valeurs séparées par des virgules, ou .csv :

Comme nous l'avons lu avec pandas , la table est chargée en tant que DataFrame , sans dimension spatiale explicite :

Si nous inspectons la table, nous constatons qu'il n'y a pas de colonne de géométrie :

identifiant d'utilisateur longitude latitude date prise photo/vidéo_page_url X oui
0 [email protected] 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 [email protected] 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 [email protected] 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 [email protected] 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 [email protected] 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

De nombreux ensembles de données ponctuelles sont fournis dans ce format. Pour en tirer le meilleur parti, il est pratique de les convertir en tables GeoDataFrame. Il y a deux étapes impliquées dans ce processus:

Transformez les coordonnées en géométries :

Créez un objet GeoDataFrame :

Et maintenant, gt_points ressemble et se sent exactement comme celui des pays que nous avons vus auparavant, à la différence que la colonne géométrie stocke les géométries POINT :

identifiant d'utilisateur longitude latitude date prise photo/vidéo_page_url X oui géométrie
0 [email protected] 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 POINT (139.70050 35.67400)
1 [email protected] 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 POINT (139.76652 35.70909)
2 [email protected] 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 POINT (139,76563 35,69448)
3 [email protected] 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 POINT (139,78439 35,54859)
4 [email protected] 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 POINT (139.76875 35.67152)

Surfaces¶

Les surfaces sont utilisées pour enregistrer des données à partir d'un modèle de données de terrain. En théorie, un champ est une surface continue et a donc un nombre infini d'emplacements auxquels il pourrait être mesuré. En réalité, cependant, les champs sont mesurés à un échantillon fini d'emplacements qui, pour donner une impression de continuité et mieux se conformer au modèle de champ, sont uniformément structurés dans l'espace. Les surfaces sont ainsi représentées sous forme de grilles où chaque cellule contient un échantillon. Une grille peut également être considérée comme un tableau avec des lignes et des colonnes mais, comme nous l'avons vu dans le chapitre précédent, les deux sont directement liés à l'emplacement géographique. Cela contraste fortement avec les tableaux géographiques, où la géographie est confinée à une seule colonne.

Pour explorer comment Python représente les surfaces, nous utiliserons un extrait pour la ville brésilienne de Sao Paulo d'un ensemble de données sur la population mondiale . Cet ensemble de données enregistre les dénombrements de population dans des cellules de mêmes dimensions couvrant uniformément la surface de la Terre. Notre extrait est disponible sous forme de fichier GeoTIF, une variante du format d'image TIF qui inclut des informations géographiques. Nous pouvons utiliser la méthode open_rasterio() du package xarray pour lire dans le GeoTIF :

Cela lit les données dans un objet DataArray :

xarray est un package pour travailler avec des tableaux étiquetés multidimensionnels. Décompressons ceci : nous pouvons utiliser des tableaux de non seulement deux dimensions comme dans un tableau avec des lignes et des colonnes, mais avec un nombre arbitraire d'entre eux, chacune de ces dimensions est « suivie » par un index qui le rend facile et efficace à manipuler. Dans xarray , ces indices sont appelés coordonnées, et ils peuvent être récupérés à partir de notre DataArray via l'attribut coords :

Fait intéressant, notre surface a Trois dimensions : x , y et bande . Le premier pour suivre la latitude et la longitude couvertes par chaque cellule de notre grille de population. La troisième a une seule valeur (1) et, dans ce contexte, elle n'est pas très utile. Mais il est facile d'imaginer des contextes où une troisième dimension serait utile. Par exemple, une image couleur optique peut avoir trois bandes : rouge, bleue et verte. Des capteurs plus puissants peuvent capter des bandes supplémentaires, telles que le proche infrarouge (NIR) ou même des bandes radio. Ou, une surface mesurée dans le temps, comme les géocubes dont nous avons parlé au chapitre 2, aura des bandes pour chaque point dans le temps auquel le champ est mesuré. Une surface géographique aura donc deux dimensions enregistrant l'emplacement des cellules ( x et y ), et au moins une bande qui enregistre d'autres dimensions relatives à nos données.

Un objet xarray.DataArray contient des informations supplémentaires sur les valeurs stockées sous l'attribut attrs :

Dans ce cas, nous pouvons voir que cela inclut les informations nécessaires pour convertir les pixels du réseau en emplacements sur la surface de la Terre (par exemple, transform , et crs ), la résolution (250 mètres sur 250 mètres) et d'autres métadonnées qui nous permettent de mieux comprendre d'où proviennent les données et comment elles sont stockées.

Ainsi, notre DataArray a trois dimensions :

Une opération courante sera de réduire cela aux deux seuls géographiques. Nous pouvons le faire avec l'opérateur sel, qui nous permet de sélectionner des données par la valeur de leurs coordonnées :

L'objet résultant est donc un tableau à deux dimensions. Semblable aux tables géographiques, nous pouvons rapidement tracer les valeurs dans notre ensemble de données :

Cela nous donne un premier aperçu de la répartition de la population dans la région de Sao Paulo. Cependant, si nous inspectons plus loin, nous pouvons voir que la carte comprend des comptes négatifs ! Comment cela pourrait-il être ? Il s'avère que les données manquantes sont traditionnellement stockées dans des surfaces non pas comme une classe à part (par exemple NaN ) mais avec une valeur impossible. Si nous revenons à l'impression attrs ci-dessus, nous pouvons voir comment l'attribut nodatavals spécifie les données manquantes enregistrées avec -200. Dans cet esprit, nous pouvons utiliser la méthode where() pour sélectionner uniquement les valeurs qui sont ne pas -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/subsection/section/g' -e 's/subsubsection/subsection/g' tmp_book/_build/latex/python.tex > tmp_book/_build/latex/python_1.tex jupyter nbconvert –to notebook –exécuter 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 La barre de couleurs semble maintenant plus sensible et indique réel compte, plutôt que d'inclure les valeurs d'espace réservé de données manquantes.

Graphiques spatiaux¶

Les graphiques spatiaux stockent les connexions entre les objets à travers l'espace. Ces connexions peuvent dériver de la topologie géographique (par exemple, la contiguïté), de la distance ou de dimensions plus sophistiquées telles que les flux d'interaction (par exemple, les déplacements, le commerce, la communication). Par rapport aux tables et surfaces géographiques, les graphiques spatiaux sont assez différents. Premièrement, dans la plupart des cas, ils n'enregistrent pas de mesures sur un phénomène donné, mais se concentrent plutôt sur Connexions, sur le stockage des relations entre objets telles qu'elles sont facilitées (ou entravées en leur absence) par l'espace. Deuxièmement, en raison de cette nature relationnelle, les données sont organisées de manière moins structurée : alors qu'un échantillon peut être connecté à un seul autre échantillon, un autre peut afficher plusieurs liens. Cela contraste fortement avec les tables et les surfaces géographiques, qui ont toutes deux une structure, une forme et une dimensionnalité clairement définies dans lesquelles les données sont organisées. Ces particularités se traduisent par un ensemble différent de structures de données Python. Contrairement aux précédents que nous avons vus, il existe différentes structures de données pour représenter des graphiques spatiaux, chacune optimisée pour des contextes différents. L'un de ces cas est l'intégration de connexions spatiales dans des méthodes statistiques telles que l'analyse de données exploratoire ou la régression. Pour cela, les structures de données les plus courantes sont les matrices de pondérations spatiales, auxquelles nous consacrons le chapitre suivant.

Dans ce chapitre, nous passons brièvement en revue une manière différente de représenter les graphes spatiaux qui est beaucoup plus proche du concept mathématique de graphe. Un graphique est composé de nœuds qui sont liés entre eux par bords. Dans un réseau spatial, nœuds peuvent représenter des lieux géographiques, et donc avoir une localisation spécifique de même, bords peuvent représenter des chemins géographiques entre ces lieux. Les réseaux nécessitent à la fois nœuds et bords analyser leur structure.

À titre d'illustration, nous nous appuierons sur la bibliothèque osmnx, qui peut interroger les données d'OpenStreetMap. Par exemple, nous extrayons le graphique basé sur la rue du parc Yoyogi, près de nos données précédentes de Tokyo :

L'extrait de code ci-dessus envoie la requête au serveur OpenStreetMap pour récupérer les données. Notez que la cellule ci-dessus a besoin connectivité Internet pour travailler. Si vous travaillez sur le livre sans pour autant connectivité, une version mise en cache du graphique est disponible sur le dossier de données et peut être lue comme :

Une fois les données renvoyées à osmnx , elles sont traitées dans la représentation graphique Python :

Nous pouvons avoir une inspection rapide de la structure du graphe avec la méthode plot_graph :

L'objet graphique résultant est en fait un MultiDiGraph de networkx , une bibliothèque de graphiques écrite en Python. Le graphique ici est stocké sous la forme d'une collection de 106 nœuds (intersections de rues) :

et 287 arêtes (rues) qui les relient :

Chacun de ces éléments peut être interrogé pour obtenir plus d'informations telles que l'emplacement et l'ID d'un nœud :

Les caractéristiques d'une arête :

Ou comment les différentes composantes du graphique sont liées les unes aux autres. Par exemple, quels autres nœuds sont directement connectés au nœud 1520546819 ?

Ainsi, les réseaux sont faciles à représenter en Python et constituent l'une des trois principales structures de données en science des données géographiques.


Projet : #EUreferendum – Semaine 3 Opinion

Toi il est préférable de lire ceci avant ce qui suit, pour vous assurer que tout est logique et que vous comprenez comment ce qui suit a été obtenu.

Semaine 3 = du dimanche 29 mai au samedi 4 juin

Quelle a été l'opinion sur Twitter concernant le prochain référendum britannique sur l'UE au cours de la semaine 3 ? Au cours de la semaine 1 et de la semaine 2, il semblait que “leave” gagnait…

La semaine 3 représente une poursuite de la tendance : ceux qui expriment leurs opinions de manière à déclencher mes critères de « partir » sont toujours plus nombreux que ceux qui semblent vouloir « rester » :

  • Congé = 3 291 tweets en semaine 3 (3 429 tweets en semaine 2 et 2 566 en semaine 1)
  • Reste = 1 258 tweets pendant la semaine 3 (1 103 tweets pendant la semaine 2 et 727 pendant la semaine 1)

Cependant, d'une semaine sur l'autre, cela démontre une réduction de 4 % des tweets « partir » par rapport à la semaine 2, mais cela représente toujours une augmentation de 28 % par rapport à la semaine 1. « Les tweets restants » ont augmenté de 14 % par rapport à Semaine 2 et 73 % par rapport à la semaine 1.

Cela pourrait-il être le signe d'une majorité plus calme commençant à exprimer son opinion alors que l'hyperbole devient extrême et que le temps est de plus en plus court, pour ce qui est considéré comme la plus grande décision depuis des générations ?

Voir ci-dessous pour une carte temporelle du couple avec une carte thermique spatiale sous-jacente démontrant la géographie approximative du débat. Sur les 4 549 tweets, j'ai pu géoréférencer 2 011 à l'aide des outils de géoréférencement intégrés de CartoDB (44 %).

Évidemment : il ne s'agit en aucun cas d'essayer de prédire le résultat du référendum.


Comment ajouter une ligne à la carte CartoDB ? - Systèmes d'information géographique

Initialement écrit le 9 août 2014
Dernière mise à jour le 15 février 2016

J'ai (Chris Henrick) une formation professionnelle en cartographie et systèmes d'information géographique. Plus récemment, j'ai été consultant en développement Web front-end, en visualisation de données et en cartographie Web interactive. J'aide à co-organiser le chapitre NYC de Maptime, un groupe de bénévoles qui aiment enseigner la technologie de cartographie au grand public gratuitement.

De quoi parle ce didacticiel ?

Cartographier les données de manière interactive sur le Web à l'aide du logiciel open source gratuit CartoDB.

Principalement des personnes qui débutent dans la création de cartes interactives qui vivent sur le Web. Si vous avez de l'expérience en SIG ou en cartographie, une partie de ce didacticiel peut être une révision, alors n'hésitez pas à me suivre.

Vous pouvez afficher les diapositives de la présentation que je donne généralement avec ce didacticiel. Utilisez les touches ▶ pour naviguer entre les diapositives.

Voici quelques exemples de la façon dont les gens ont utilisé CartoDB pour créer des cartes interactives :

CartoDB est un logiciel en tant que service (SaaS) permettant de visualiser et d'analyser des données géospatiales sur le Web. C'est peut-être la méthode la plus conviviale pour créer des cartes interactives sur le Web avec vos propres données. CartoDB permet une personnalisation cartographique élevée grâce à une interface utilisateur intuitive ainsi qu'une analyse avancée des données géospatiales à l'aide de SQL (Structured Queried Language) et Post-GIS.

Avant CartoDB et d'autres logiciels de cartographie Web open source tels que Tile Mill, la création de cartes Web impliquait de devoir exécuter votre propre serveur Web et d'installer à la fois un logiciel côté serveur et un logiciel de base de données. Cela pourrait être extrêmement difficile à moins que vous ne soyez un programmeur informatique / développeur web back-end expérimenté. Ce qui est bien avec CartoDB, c'est qu'il gère tout le côté serveur pour vous ! Par exemple, chaque fois que vous importez des données dans CartoDB, ces données sont automatiquement stockées dans une base de données qui a géospatial capacités.

Géospatiale ? Attendez, qu'est-ce que c'est.

Données géospatiales fait référence à des données qui ont une composante géométrique basée sur l'emplacement. La plupart des données géospatiales sont en format vectoriel et est stocké sous forme de points, de lignes et de polygones dont les attributs géométriques ont des références à des emplacements physiques dans le monde réel, tels que les coordonnées de latitude et de longitude. Avec un système d'information géographique, les données géospatiales peuvent être utilisées pour représenter des caractéristiques physiques et culturelles. Ces données peuvent ensuite être rendues cartographiques et analysées spatialement pour résoudre les problèmes et modéliser l'environnement.

Exemples de types de géométrie :

Une liste d'adresses, qui peut ensuite être géoréférencé (correspondant) à des paires individuelles de coordonnées latitude longitude (points), par exemple les emplacements de toutes les écoles publiques de New York :

Les entités telles que les rivières et les ruisseaux ou les réseaux routiers peuvent être stockées et représentées sous forme de lignes :

Les limites des arrondissements de la ville de New York (ou d'autres limites administratives gouvernementales telles que les États, les provinces et les pays) peuvent être stockées et représentées sous forme de polygones :

Les types de données ci-dessus sont utilisés pour rendre tuiles de carte comme celles que vous voyez sur OpenStreetMap, Google Maps, Bing, Map Quest, etc. Par exemple, ce sont des tuiles de carte de différents fournisseurs pour la même zone de San Francisco :

Les tuiles de carte sont des images de 256 x 256 pixels alignées selon une grille. Ils sont divisés de cette façon pour que le zoom et le panoramique semblent transparents et fluides par l'utilisateur de la carte Web. Seules les images à l'intérieur et juste à l'extérieur de la zone de carte que l'utilisateur regarde sont rendues. Le serveur est invité à rendre les tuiles voisines et à cache de sorte que lorsque vous vous déplacez vers une nouvelle zone, l'interaction semble transparente.

Pour les besoins de ce didacticiel, les tuiles de carte forment notre fond de carte que nous pouvons superposer données personnalisées au dessus de. Plus encore, nous pouvons analyser nos données géospatiales avec CartoDB. Ces deux capacités sont là où le plaisir entre en jeu :)

Analyser des données géospatiales avec PostGIS

PostSIG (avec PostgreSQL) est la technologie de base de données open source qui permet d'effectuer une analyse géospatiale sur les données dans CartoDB. Pourquoi voudrions-nous l'utiliser par rapport à d'autres types de logiciels SIG ?

  • Réplicable: Vous pouvez scripter votre flux de travail, ce qui est idéal pour laisser une trace de votre travail.
  • Il s'appuie sur SQL: Si vous connaissez déjà SQL, c'est un moyen facile de vous lancer dans l'analyse SIG.
  • Vous pouvez interroger des données dynamiquement: si vous disposez d'un serveur capable de traiter une requête PostGIS et de renvoyer JSON, vous pouvez effectuer des requêtes spatiales dynamiques dans vos applications. par exemple. "Trouvez tous les points près de moi."

Nous couvrirons quelques bases de PostGIS dans ce didacticiel, mais si vous êtes intéressé, vous pouvez trouver un autre didacticiel d'introduction sur l'utilisation de PostGIS dans CartoDB ici. Il existe également de nombreux tutoriels sur la Map Academy de CartoDB.

Introduction au tableau de bord CartoDB

  1. Créez un compte gratuit et connectez-vous à CartoDB. Une fois connecté et visualisé le tableau de bord, cliquez sur l'option Bibliothèque de données (coin supérieur droit du tableau de bord). Accédez à la page 5, sélectionnez le jeu de données Populated Places, puis cliquez sur Connect dataset en haut du tableau de bord. Cela importera l'ensemble de données des lieux peuplés dans votre compte.

Une fois les données importées, jetez un œil au champ adm0cap dans le Vue de tableau. Ce champ stocke les 0 et les 1, ce dernier signifiant que l'endroit est la capitale d'un pays.

Il existe deux manières d'inspecter vos données dans CartoDB :

Vue de tableau: Affiche les noms de colonnes et les lignes un peu comme une feuille de calcul. Pour cet ensemble de données, chaque ligne représente un point. Mais les lignes peuvent également représenter d'autres types de géométrie en fonction de vos données.

  • Jetez un œil à ce qu'il y a dans l'une des cellules de la colonne the_geom, vous devriez voir les coordonnées de latitude et de longitude.

Vue de la carte: Permet d'inspecter nos données visuellement, par exemple : zoom et panoramique sur une carte Web interactive. De là, nous pouvons changer le style de la carte de base, utilisez le Assistant de visualisation dans la barre latérale pour styliser nos données et ajouter des interactions telles que des fenêtres contextuelles qui affichent les valeurs des colonnes de notre vue sous forme de tableau.

Dans l'assistant de visualisation, essayez de changer le style des données en vue catégorie, choisissez la colonne adm0cap et essayez d'attribuer différents types de marqueurs d'image en fonction de la valeur de adm0cap . N'oubliez pas qu'un 1 signifie qu'un lieu est la capitale d'un pays.

Noter: Vous pouvez également télécharger des images personnalisées à utiliser comme marqueurs.

Publication / Partage d'une carte :

En cliquant sur le bouton Visualiser dans le coin supérieur droit, nous pouvons créer un Visualisation. Faites-le et donnez à votre visualisation un nom tel que "Ma première visualisation".

Lorsque nous créons une visualisation, elle héritera des styles que nous avons définis à partir de notre vue cartographique.

Les visualisations fonctionnent en se liant à vos tableaux de données. Notez que si nous revenons à l'inspection de notre table de données importées et modifions les styles à partir d'ici, la visualisation que nous avons faite avec ces données Ne fera pas être mis à jour avec ces styles. Cependant, si vous modifiez les valeurs de ces tableaux, la visualisation correspondante volonté être affecté.

Noter: toutes les modifications que nous apportons à notre visualisation (données ou style) seront mises à jour en temps réel pour toute personne visualisant notre visualisation !

Remarquez les différences entre les les tables et visualisations vues dans votre tableau de bord. Le premier répertorie les jeux de données que vous avez importés sur votre compte, le second répertorie les cartes que vous avez créées avec vos données et peut choisir de partager/publier sur le web.

Noter: Une seule visualisation peut être liée à plusieurs tables sous la forme de couches. C'est un concept clé dans la conception cartographique, et l'ordre des couches est important.

Supprimez l'ensemble de données et la visualisation des lieux peuplés que nous avons précédemment créés, car nous aurons besoin de l'espace de stockage pour passer à la prochaine partie du didacticiel en utilisant un compte gratuit.

Importer les comtés des États-Unis, 1979 - Ensemble de données actuel (actuellement à la page 5 de la bibliothèque de données)

Jetons un coup d'œil à ces données. Cliquez sur l'une des cellules sous la colonne the_geom. Vous devriez voir quelque chose comme :

C'est ainsi que CartoDB stocke la géométrie pour un multi-polygone, ou un groupe de polygones. Chacune de ces coordonnées fait référence à un nœud dans un seul polygone. Les multi-polygones sont utiles pour regrouper de nombreuses entités géographiques, telles que des îles, qui appartiennent à une seule entité politique comme un état ou une province.

Passez maintenant au Vue de la carte pour voir comment les polygones sont superposés sur notre carte.
Dans l'assistant de visualisation :

Essayez de cliquer quelque part sur la carte. Notez qu'une fenêtre contextuelle s'affiche avec le message suivant : "Vous n'avez sélectionné aucun champ à afficher dans la fenêtre d'information." Cliquez sur le lien de sélection des champs et notez que la barre latérale sur la droite naviguera vers le Fenêtre d'informations panneau. C'est ici que vous pouvez configurer les données à afficher dans les pop-ups ou ce que CartoDB appelle Fenêtres d'informations.
Ici, vous pouvez :

  • activez ou désactivez l'une de vos colonnes pour que les valeurs soient affichées dans la fenêtre d'informations.
  • modifier le nom de la colonne à afficher dans la fenêtre d'informations (Remarque: cela ne modifiera pas le nom de la colonne dans vos données réelles).
  • changer le style des fenêtres d'informations.
  • personnalisez-les avec HTML et CSS.

Essayons de changer le style graphique de nos données à l'aide de l'assistant de visualisation. Changez le style de "simple" à "choroplèthe". Remarquez comment nos données de polygones sont automatiquement codées par couleur en fonction des valeurs des données, dans ce cas la population totale. Cependant, il y a un problème ici : la cartographie de la population par comté donne une fausse impression au spectateur de notre carte. Nous devons le faire normaliser les données en divisant le nombre de personnes dans un comté par sa zone géographique.

Heureusement, nos données ont déjà cette valeur incluse dans la colonne pop_sqkm. Pour montrer comment vous pourriez le calculer vous-même, nous ferions ce qui suit dans le Panneau SQL:

Ceci est un exemple d'utilisation de la technologie open source PostSIG pour analyser spatialement nos données. Avec PostGIS, nous pouvons calculer des valeurs telles que la distance et la superficie, où différents jeux de données spatiales se croisent, ainsi qu'exporter nos données vers différents formats de données tels que GeoJSON ou alors Fichier de formes.

Faire une carte de points thématiques

Importez les données historiques Tornado 1950 - 2013 (actuellement à la page 3 de la bibliothèque de données).

Inspectez les données. Étant donné que ces données ont été stockées au format CSV, toutes nos Types de données sont stockés comme chaînes (une chaîne est un type de données pour stocker du texte, comme une phrase ou un mot). Afin d'utiliser le numérique et Date valeurs dans ces données, nous devons convertir les colonnes suivantes en leurs types de données respectifs en cliquant sur la petite carotte à côté du nom de la colonne, puis en cliquant sur « Modifier le type de données. »
Alors maintenant on :

  • convertir le type de données de la colonne Damage en numéro.
  • convertir le type de données de la colonne de date en Date. Il est important d'avoir des types de données corrects pour effectuer une analyse spatiale. If PostGIS thinks our datatype are strings when they're in fact numbers or dates our analysis won't work!

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! Voir le 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

Définition
Params
Response

Attributes La description
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.

Exemple

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:

Note: 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.

Conseil: 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):

Noter: 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):

Conseil: 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.

Watch the video: Comment utiliser OpenStreetMap. PARTIE 1