Ich habe eine GeoJSON-Datei, die eine Aufschlüsselung eines bestimmten geografischen Gebiets in ca. enthält. 7000 Zellen. Ich möchte a) öffnen Sie dieses geoJSON b) ändern Sie einige Daten (siehe Code unten) und c) schreiben Sie dieses modifizierte geoJSON auf die Festplatte. Nun, mein Problem ist, dass es, da es viele Zellen gibt, fast eine Minute dauert. Sehen Sie irgendeine Möglichkeit, die Geschwindigkeit dieser Funktion zu verbessern? Vielen Dank!Python - Erhöhen lesen/ändern/schreiben Geschwindigkeit?
def writeGeoJSON(param1, param2, inputdf):
with open('ingeo.geojson') as f:
data = json.load(f)
for feature in data['features']:
currentfeature = inputdf[(inputdf['SId']==feature['properties']['cellId']) & (inputdf['param1']==param1) & (inputdf['param2']==param2)]
if (len(currentfeature) > 0):
feature['properties'].update({"style": {"opacity": currentfeature.Opacity.item()}})
else:
feature['properties'].update({"style": {"opacity": 0}})
end = time.time()
with open('outgeo.geojson', 'w') as outfile:
json.dump(data, outfile)
Vielleicht berechnen 'inputdf [(inputdf [ 'param1'] == param1) & (inputdf ['param2'] == param2)] außerhalb der Schleife. –
Zuerst, [profile] (http://stackoverflow.com/a/582337/3005167) Ihre Funktion, um herauszufinden, ob der Engpass in I/O oder Verarbeitung ist. Alles andere ist nur Angeln im Dunkeln – kazemakase
@Alex Excellent! Ich habe denselben Punkt in meiner Antwort erwähnt. Ich habe es in der Minute bemerkt, als die Frage gestellt wurde ... Ich habe 9 Minuten gebraucht, um diese Frage von meinem Handy aus zu beantworten! xD – varun