imposm.parser: callback Funktion liefert mehrere Listen als Output
Verfasst: Donnerstag 19. November 2015, 14:54
Hallo liebe Community,
ich bin ein Neuling in Python, ja wenn man es genau nimmt und die weniger hilfreichen Grundlagen der Programmierung im Studium außer Acht lässt, bin ich genau genommen ein Programmieranfänger. Nun will es aber meine Masterarbeit, dass ich mich doch dazu zwinge, mich endlich damit zu befassen (Zeit wird es!).
Da ich mit Daten aus OSM arbeite, möchte ich imposm.parser und probiere Sachen aus, um die Funktionsweise zu verstehen. Ich hoffe, es gibt hier den einen oder anderen, der ich mit imposm auskennt.
Ich auf folgendes Problem gestoßen:
Der Code
liefert den Output (gekürzt):
Kann mir jemand erklären, warum ich mehrere Listen als Output erhalte? Ich habe nur mit einer gerechnet. Wenn ich andere .osm Dateien einlese werden auch mehr oder weniger Listen ausgegeben, je nachdem, wie groß die .osm Dateien sind.
Weiterhin: wenn ich in ändere, vertauschen sich die letzten beiden Lokalen Vertexlisten und die Globale Vertexliste hat 0 Items. Scheinbar bezieht sich die globale Vertexliste hier immer auf die letzte lokale?
ich hoffe, mir kann jemand erklären, wo hier der Wurm liegt, oder ob ich imposm.parser total falsch anwende. oder ...
Danke!
Beste Grüße, Michael
ich bin ein Neuling in Python, ja wenn man es genau nimmt und die weniger hilfreichen Grundlagen der Programmierung im Studium außer Acht lässt, bin ich genau genommen ein Programmieranfänger. Nun will es aber meine Masterarbeit, dass ich mich doch dazu zwinge, mich endlich damit zu befassen (Zeit wird es!).
Da ich mit Daten aus OSM arbeite, möchte ich imposm.parser und probiere Sachen aus, um die Funktionsweise zu verstehen. Ich hoffe, es gibt hier den einen oder anderen, der ich mit imposm auskennt.
Ich auf folgendes Problem gestoßen:
Der Code
Code: Alles auswählen
from imposm.parser import OSMParser
def vertices(coords):
global vertexlist
vertexlist = []
for (coordid, lat, lon) in coords:
vertexlist.append(coordid)
print "Liste in der Funktion: ", vertexlist
print "Items: ", len(vertexlist), '\n'
p = OSMParser(concurrency=4, coords_callback=vertices)
p.parse('example.osm')
print "\n", "Globale Vertexliste: ", vertexlist
print "Items: ", len(vertexlist)
Code: Alles auswählen
Lokale Vertexliste: [20911496, 20911497, 20911498, 29509240, 29509277, 96916723, 96916733, 96916757, 96916758, 97043991, 97044155, ...]
Items:512
Lokale Vertexliste: [2075933132, 2075933135, 2075933136, 2075933137, 2075933138, 306261067, 2075933148, 2075933152, 306261064, ...]
Items:512
Lokale Vertexliste: [2234972303, 2234972305, 2234972307, 2234972309, 2234972312, 2234972315, 2234972317, 2234972319, 2234972323, ...]
Items:512
Lokale Vertexliste: [2259542926, 2259542927, 2259542928, 2259542929, 2259542931, 2259542932, 2259542933, 2259542934, 2259542936, ...]
Items:512
Lokale Vertexliste: [2259543426, 2259543427, 2259543428, 2259543429, 2259543430, 2259543431, 2259543432, 2259543433, 2259543434, ...]
Items:512
Lokale Vertexliste: [2260713391, 2260713394, 2260713396, 2260713398, 2260713400, 2260713402, 2260713404, 2260713406, 2260713408, ...]
Items:512
Lokale Vertexliste: [2263280273, 2263280276, 2263280279, 2263280283, 2263280286, 2263280289, 2263280292, 2263280296, 2263280299, ...]
Items: 178
Lokale Vertexliste: []
Items:0
Lokale Vertexliste: [20911500, 96916751, 96916753, 96916755, 96916760, 96916783, 185481547, 185481571, 186143628, 186143641, ...]
Items:227
Globale Vertexliste: [20911500, 96916751, 96916753, 96916755, 96916760, 96916783, 185481547, 185481571, 186143628, 186143641, ...]
Items: 227
Weiterhin: wenn ich
Code: Alles auswählen
concurrency=4
Code: Alles auswählen
concurrency=1
ich hoffe, mir kann jemand erklären, wo hier der Wurm liegt, oder ob ich imposm.parser total falsch anwende. oder ...
Danke!
Beste Grüße, Michael