Индекс списка вне диапазона - API Tweepy/Twitter в базе геоданных
Оооочень я работаю над сценарием, который я взял из ArcGIS Blueprints:
http://file.allitebooks.com/20151230/ArcGIS%20Blueprints.pdf
Он должен конвертировать твиты с геолокацией в базу геоданных. У меня уже есть API-интерфейс Twitter Streaming API, и я пытаюсь найти разные способы извлечения х / у, но продолжаю возвращаться к этому сценарию время от времени, надеясь, что мне удастся запустить его без удачи. Я застрял при ошибке "List Index Out of Range". Если кто-то достаточно любезен, чтобы предложить некоторые идеи о том, как я могу справиться с этой ошибкой, я буду всегда благодарен. Если ничто иное, это усилие не воспользовалось моими недостатками в Python и Arcpy, и, надеюсь, в конечном итоге это закроет меня. На данный момент, я уверен, хотел бы получить некоторое преимущество от этого сценария и работы, которую я вложил в него. Спасибо!
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
import arcpy
import sys
import time
consumer_key = 'xxx'
consumer_secret = 'xxx'
token_key = 'xxx'
token_secret = 'xxx'
class StdOutListener(StreamListener):
def __init__(self, start_time, featureClass, time_limit):
super(StdOutListener, self).__init__()
self.time = start_time
self.limit = time_limit
self.featureClass = featureClass
def on_status(self, status):
while (time.time() - self.time) < self.limit:
if status.geo is not None:
dictCoords = status.geo
listCoords = dictCoords['coordinates']
latitude = listCoords[0]
longitude = listCoords[1]
cursor =arcpy.da.InsertCursor(self.featureClass,"SHAPE@XY"))
cursor.insertRow([(longitude,latitude)])
print(str(listCoords[0]) + "," + str(listCoords[1]))
return True
else:
print "No coordinates found"
return True
start_time = time.time()
arcpy.env.workspace = "c:\ArcGIS_Blueprint_Python\data\Twitter\TweetInformation.gdb" "
def main():
try: #new
featureClass = sys.argv[1]
monitorTime = sys.argv[2]
monitorTime = monitorTime * 3600
sr = arcpy.SpatialReference(4326)
arcpy.env.overwriteOutput = True
arcpy.CreateFeatureclass_management(arcpy.env.workspace,
featureClass, "POINT", spatial_reference=sr)
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(token_key, token_secret)
stream = Stream(auth, StdOutListener(start_time, featureClass,
time_limit=monitorTime)) #172800
stream.filter(track=['car'])
except Exception as e:
print(e.message)
if __name__ == '__main__':
main()