-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdensitymaps.py
More file actions
71 lines (65 loc) · 2.63 KB
/
densitymaps.py
File metadata and controls
71 lines (65 loc) · 2.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import json,time
import matplotlib.pyplot as plt
import pandas as pd
from datetime import datetime
from modules.geolocations import *
from modules.environment import Environment
environment = Environment()
class DensityMaps():
def __init__(self, censustract):
self.environment = environment
self.censustract = censustract
self.census_tweets = {}
self.months = environment.get_months()
with open(environment.filtered_datapath+censustract+".json", 'r', encoding='utf8') as tweetfile:
for user, tweets in json.loads(tweetfile.read()).items():
for tweet in tweets:
#date = datetime.strptime(tweet["datetime"],"%a %b %d %H:%M:%S +0000 %Y")
#key = self.months[date.month-1]+"-"+str(date.year)
key = tweet["datetime"]
if key not in self.census_tweets:
self.census_tweets[key] = []
self.census_tweets[key].append(tweet)
tweetfile.close()
def generateDataFrame(self):
users = []
latitude = []
longitude = []
for key,tweets in self.census_tweets.items():
for tweet in tweets:
if not tweet.get("user_id") in users:
users.append(tweet.get("user_id"))
latitude.append(tweet.get("location").get("coordinates")[0])
longitude.append(tweet.get("location").get("coordinates")[1])
df = pd.DataFrame(
{'User': users,
'Latitude': latitude,
'Longitude': longitude})
if(len(self.census_tweets)>0):
return df
else:
return False
def generateJSON(self):
maps = {}
for key,tweets in self.census_tweets.items():
objects = []
for tweet in tweets:
curobject = {
"user": tweet.get("user_id"),
"text": tweet.get("text"),
"datetime": tweet.get("datetime"),
"latitude": tweet.get("location").get("coordinates")[0],
"longitude": tweet.get("location").get("coordinates")[1]
}
if not curobject in objects:
objects.append(curobject)
maps[key] = objects
if(len(self.census_tweets)>0):
return maps
else:
return False
def getDensityMap(self):
densityMap = generateDensityMap(self.generateDataFrame())
return densityMap
def getCoordinates(self):
return self.generateJSON()