[PYTHON] Créez une carte thermique de tweet avec l'API Google Maps

 2014-09-14 4.23.20.jpg

Vous pouvez créer une carte thermique à l'aide de l'API Google Maps. Cette fois, sur la base des informations de localisation du tweet acquises au hasard, je voudrais exprimer "où est l'utilisateur Twitter actuel" avec heatmap.

Obtenez d'abord le tweet.

import twitter
stream = TwitterStream(auth=OAuth(Diverses clés))
iterator = stream.statuses.sample()
locations = []
for tweet in iterator:
    if len(locations) > 99:
        break
    if not 'geo' in tweet:
        continue
    if tweet['geo'] is not None:
        geo = tweet['geo']['coordinates']
        locations.append(geo)

Expirez ces informations de localisation en tant que csv.

with open('some.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(locations)

Cette fois, j'ai écrit csv directement sans le lire avec JavaScript.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Heatmaps</title>
    <style>
      /* to have the map be displayed as large as possible */
      html, body, #map-canvas {
        height: 100%;
        margin: 0px;
        padding: 0px
      }
    </style>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=visualization"></script>
    <script>
var map, pointarray, heatmap;

// sample data
var sampleData = [
  new google.maps.LatLng(41.869741,-87.721538),
  new google.maps.LatLng(48.19395,-2.125265),
  new google.maps.LatLng(3.580724,98.628154),
  new google.maps.LatLng(4.580501,-74.081261),
  new google.maps.LatLng(-26.882332,26.659449),
  new google.maps.LatLng(-24.654812,25.958468),
  new google.maps.LatLng(29.968636,-95.459855),
  new google.maps.LatLng(48.713171,44.502881),
  new google.maps.LatLng(34.93339,-81.985014),
  new google.maps.LatLng(40.376906,-105.518854),
  new google.maps.LatLng(-2.122002,-79.906566),
  new google.maps.LatLng(40.777568,30.396123),
  new google.maps.LatLng(-29.894143,-50.247492),
  new google.maps.LatLng(40.829574,-96.726031),
  new google.maps.LatLng(44.228229,-76.529446),
  new google.maps.LatLng(-22.791815,-43.363159),
  new google.maps.LatLng(41.012075,28.951118),
  new google.maps.LatLng(43.455311,6.696321),
  new google.maps.LatLng(40.987747,28.878675),
  new google.maps.LatLng(44.511357,-73.062096),
  new google.maps.LatLng(38.581522,-89.925273),
  new google.maps.LatLng(43.301556,5.368706),
  new google.maps.LatLng(38.091917,-3.645525),
  new google.maps.LatLng(36.897981,30.633576),
  new google.maps.LatLng(10.118712,-71.253339),
  new google.maps.LatLng(51.189495,5.528259),
  new google.maps.LatLng(-23.531079,-46.526215),
  new google.maps.LatLng(40.8369,-74.114526),
  new google.maps.LatLng(37.13042,-94.479282),
  new google.maps.LatLng(39.640009,-77.716111),
  new google.maps.LatLng(-13.013756,-38.486381),
  new google.maps.LatLng(-34.201277,-56.342408),
  new google.maps.LatLng(10.919255,-74.80918),
  new google.maps.LatLng(42.69738,-83.245338),
  new google.maps.LatLng(51.453926,-3.180561),
  new google.maps.LatLng(28.658053,77.225473),
  new google.maps.LatLng(43.035312,-76.13877),
  new google.maps.LatLng(26.368914,50.123148),
  new google.maps.LatLng(-31.378565,-64.165087),
  new google.maps.LatLng(35.368463,-81.506347),
  new google.maps.LatLng(33.757625,-84.401357),
  new google.maps.LatLng(40.491088,-3.662337),
  new google.maps.LatLng(33.528219,-85.133143),
  new google.maps.LatLng(41.807787,12.479548),
  new google.maps.LatLng(-37.970056,-57.612154),
  new google.maps.LatLng(51.98949,1.392392),
  new google.maps.LatLng(41.512915,-81.466155),
  new google.maps.LatLng(7.912032,-72.493505),
  new google.maps.LatLng(-23.351162,-51.1873),
  new google.maps.LatLng(36.201708,-81.700396),
  new google.maps.LatLng(43.112279,-83.652649),
  new google.maps.LatLng(51.877076,12.653746),
  new google.maps.LatLng(6.420195,100.416817),
  new google.maps.LatLng(31.325244,37.361949),
  new google.maps.LatLng(48.9481,2.236714),
  new google.maps.LatLng(-27.708866,-53.962288),
  new google.maps.LatLng(42.980997,-87.94887),
  new google.maps.LatLng(40.151149,-104.938639),
  new google.maps.LatLng(32.884038,-97.297599),
  new google.maps.LatLng(58.036561,39.111782),
  new google.maps.LatLng(40.254157,-75.807626),
  new google.maps.LatLng(-34.808521,-56.160179),
  new google.maps.LatLng(41.8369,-87.6844),
  new google.maps.LatLng(10.118712,-71.253339),
  new google.maps.LatLng(30.033776,-89.955507),
  new google.maps.LatLng(38.618279,27.422036),
  new google.maps.LatLng(-22.972435,-43.186386),
  new google.maps.LatLng(-7.647608,111.528889),
  new google.maps.LatLng(14.838083,-91.500155),
  new google.maps.LatLng(43.451903,-83.949347),
  new google.maps.LatLng(52.624694,-1.197507),
  new google.maps.LatLng(36.106227,-5.448284),
  new google.maps.LatLng(34.420831,-119.69819),
  new google.maps.LatLng(39.243791,-82.191701),
  new google.maps.LatLng(43.6177,-73.962748),
  new google.maps.LatLng(38.403184,26.994669),
  new google.maps.LatLng(53.773308,-1.765792),
  new google.maps.LatLng(51.32552,-1.053326),
  new google.maps.LatLng(42.146086,-72.400803),
  new google.maps.LatLng(-34.601558,-58.530852),
  new google.maps.LatLng(52.235012,-7.113571),
  new google.maps.LatLng(46.254375,7.004024),
  new google.maps.LatLng(41.056631,28.865406),
  new google.maps.LatLng(-16.734154,-49.30822),
  new google.maps.LatLng(38.702756,-8.970666),
  new google.maps.LatLng(41.079022,28.924318),
  new google.maps.LatLng(-22.467244,-50.609785),
  new google.maps.LatLng(50.807499,0.294177),
  new google.maps.LatLng(52.296889,4.96612),
  new google.maps.LatLng(-27.684219,-48.483165),
  new google.maps.LatLng(-34.8927,-56.160802),
  new google.maps.LatLng(28.069146,-82.433176),
  new google.maps.LatLng(-23.962148,-46.323084),
  new google.maps.LatLng(32.409653,-90.137747),
  new google.maps.LatLng(-6.1995,106.83294),
  new google.maps.LatLng(33.980423,72.186674),
  new google.maps.LatLng(51.513518,-0.123417),
  new google.maps.LatLng(-27.586342,-48.613531),
  new google.maps.LatLng(24.352714,37.604151),
  new google.maps.LatLng(26.311167,50.222377)
];


function initialize() {
  // the map's options
  var mapOptions = {
    zoom: 2,
    center: new google.maps.LatLng(0, 135),
    mapTypeId: google.maps.MapTypeId.SATELLITE
  };

  // the map and where to place it
  map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

  var pointArray = new google.maps.MVCArray(sampleData);

  // what data for the heatmap and how to display it
  heatmap = new google.maps.visualization.HeatmapLayer({
    data: pointArray,
    radius: 10
  });

  // placing the heatmap on the map
  heatmap.setMap(map);
}

// as soon as the document is ready the map is initialized
google.maps.event.addDomListener(window, 'load', initialize);

    </script>
  </head>

  <body>
    <!-- this is where the map finally is drawn onto -->
    <div id="map-canvas"></div>
  </body>
</html>

Vous pouvez facilement créer une carte thermique comme celle-ci. Vous pouvez le mettre à jour avec heatmap.set, ainsi vous pourrez peut-être transmettre des informations de localisation en temps réel et voir la localisation de l'utilisateur actuel du tweet en un coup d'œil.

References

Recommended Posts

Créez une carte thermique de tweet avec l'API Google Maps
Tweet la météo avec bot
Obtenez des vacances avec l'API Google Agenda
Créer une API REST pour faire fonctionner dynamodb avec le Framework Django REST
Tweetez régulièrement avec l'API Twitter Go language
Tweet les prévisions météo avec le bot Partie 2
Afficher l'API Google Maps avec Rails et affichage des broches
Créez un outil de traduction avec Translate Toolkit
Créez une base de données propre pour les tests avec FastAPI et effectuez le test Unittest de l'API avec pytest
Comment créer un sous-menu avec le plug-in [Blender]
Essayez de créer une application Todo avec le framework Django REST
Transférer vers un Drive partagé avec l'API Google Drive V3
Créer une API avec Django
Appelez l'API avec python3.
Créer un répertoire avec python
Créer un nouveau csv avec des pandas basé sur le csv local
Une note sur l'utilisation de l'API Facebook avec le SDK Python
À propos de l'événement de changement de caméra de l'API Google Maps Android
Probablement le moyen le plus simple de créer un pdf avec Python 3
Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
Tornado - Créons une API Web qui renvoie facilement JSON avec JSON
Créez une API Web capable de fournir des images avec Django
Les débutants de l'API Google Maps et de l'API Twitter ont créé "Tweet Map"
L'histoire de la création d'une base de données à l'aide de l'API Google Analytics
Mettez en place le géocodage inversé en japonais avec l'API Python Google Maps
Créez une API d'intégration sociale pour les applications smartphone avec Django
Un script qui facilite la création de menus riches avec l'API de messagerie LINE
Obtenez le prix d'achat et de vente de la monnaie virtuelle avec l'API de l'échange Zaif et créez un graphique
[Affichage de la carte] Affichez une carte à partir de l'adresse enregistrée par l'utilisateur à l'aide de l'API JavaScript de Google Maps et de l'API de géocodage!
Créez une application qui recherche uniquement à l'aide de l'API de recherche personnalisée Google avec Python 3.3.1 dans Bottle
Créer Awaitable avec l'API Python / C
Créez un alias pour Route53 vers CloudFront avec l'API AWS
[AWS] Créer une API avec API Gateway + Lambda
[Python] Accédez à l'API Google Translation
Créez un sélecteur de couleurs pour la roue chromatique avec Python + Qt (PySide)
Créez un environnement virtuel avec Python!
Créez un modèle pour stocker les informations de l'API Google Livres pour une manipulation et des tests intuitifs
Créer une API REST qui renvoie l'heure actuelle avec Python3 + Falcon
J'ai essayé d'utiliser l'API Google avec Ruby et Python - Faites de la base de données une feuille de calcul et gérez-la avec Google Drive
Accédez à l'API Etherpad-lite avec Python
J'ai aimé le tweet avec python. ..
[LINE Messaging API] Créez un BOT qui se connecte à quelqu'un avec Python
Créez une API en utilisant hug avec mod_wsgi
Créer une API CRUD à l'aide de l'API rapide
Créez un stepper de poisson avec numpy.random
Comment envoyer une requête à l'API DMM (FANZA) avec python
Essayez de créer un article de Qiita avec l'API REST [Préparation environnementale]
Présentation de l'API Google Map avec rails
Créer un téléchargeur de fichiers avec Django
Créez un programme de jugement de compatibilité avec le module aléatoire de python.
Comment créer une API de machine learning sans serveur avec AWS Lambda
Une histoire qui visualise le présent de Qiita avec Qiita API + Elasticsearch + Kibana
Créez un service Twitter BOT avec GAE / P + Tweepy + RIOT API! (Partie 1)
Créez un service Twitter BOT avec GAE / P + Tweepy + RIOT API! (Partie 2)
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
Créer un enregistrement avec des pièces jointes dans KINTONE à l'aide du module de requêtes Python
Créer un décorateur de fonction Python avec Class
Créez automatiquement la documentation de l'API Python avec Sphinx