Extrahieren von Daten aus der CSV-Datei (Fusionstabelle und kml-Workaround)

8

In Xamarin Google Maps für Android mit C # können Sie Polygone auf der Grundlage dieses Tutorials erstellen:

%Vor%

Allerdings habe ich eine CSV-Datei von meiner Fusion Table Layer aus Google Maps heruntergeladen, da ich denke, dass dies die einfachste Möglichkeit ist, mit Polygon- / Polylinendaten zu arbeiten. Die Ausgabe sieht folgendermaßen aus:

%Vor%

Ich habe eine KML-Datei in Google Maps Fusion Table Layer hochgeladen und anschließend die Karte erstellt . Ich ging dann File>Download>CSV und es gab mir das obige Beispiel.

Ich habe diese CSV-Datei zu meinem Assets-Ordner meiner Xamarin Android Google Map App hinzugefügt und meine Frage wäre, weil LatLng zwei Doppelgänger als Eingabe benötigt, gibt es eine Möglichkeit, die obigen Daten aus der CSV-Datei einzugeben in diese Methode und wenn ja wie?

Nicht sicher, wie read the above csv und dann die <coordinates> extrahieren und dann diese Koordinaten als neue LatLng im obigen Beispielcode hinzufügen?

Wenn Sie jedoch bemerken, dass die Koordinaten in lat und lng aufgeteilt sind, dann wird das nächste latlng durch ein Leerzeichen -5.657018,57.3352 -5.656396,57.334463 getrennt.

Sudo-Code (dies kann oder muss nicht xamarin oder android-Erfahrung erfordern und kann nur C # / Linq erfordern) :

%Vor%

Da Fusionstablebenen in Xamarin Android mit Google Maps API v2 nicht verwendet werden können, kann dies eine schnelle und einfache Problemumgehung für diejenigen darstellen, die Maps in Regionen aufteilen müssen.

    
Garrith Graham 31.07.2016, 16:12
quelle

3 Antworten

1

Wenn ich es richtig verstanden habe, lautet die Frage, wie man die obige CSV-Datei analysiert.

Jede Zeile (außer der ersten mit Kopfzeilen) kann mit der folgenden Klasse dargestellt werden:

%Vor%

Beachten Sie die Koordinaten Inner und Outer . Sie werden im XML-Code durch die Elemente outerBoundaryIs (erforderlich) und innerBoundaryIs (optional) dargestellt.

Eine Randnotiz: Die Zeile Highland in Ihrem Beitrag ist nicht korrekt - Sie scheinen einen Teil der Zeile abgeschnitten zu haben, was zu falschem XML ( <outerBoundaryIs>...</innerBoundaryIs> ) führt.

Hier ist der Code, der das Parsen durchführt:

%Vor%

Ich denke, der Code ist selbsterklärend. Die einzigen zu erwähnenden Details sind:

%Vor%

Hier verwenden wir die string.Split Überladung , die dies erlaubt us to gibt die maximale Anzahl der zurückzugebenden Teilstrings an und vermeidet so die Verarbeitung der Kommas innerhalb des XML-Tokens.

und:

%Vor%

entfernt die Anführungszeichen vom XML-Token.

Schließlich eine Beispielverwendung für Ihren Fall:

%Vor%

UPDATE: Um Xamarin glücklich zu machen (wie in den Kommentaren erwähnt), ersetzen Sie den Aufruf File.ReadLines durch einen Aufruf an den folgenden Helfer:

%Vor%     
Ivan Stoev 09.08.2016, 16:44
quelle
0
%Vor%     
DmitryZyr 03.08.2016 20:47
quelle
0

Ich bin mir nicht sicher, ob Sie Ihre Fragen verstehen, aber ich denke, das kann helfen:

Sie müssen die CSV-Datei zeilenweise lesen und für jede Zeile das dritte Argument extrahieren, das Zitat entfernen und das Ergebnis mit einem XMLReader lesen, um die gewünschte Zeile (Koordinate) zu extrahieren. Nachdem Sie das Ergebnis auf Leerraum aufgeteilt haben, erhalten Sie die Liste von LatLng und Sie teilen jede LatLng auf ",", dann haben Sie alle Informationen, die Sie brauchen.

%Vor%     
Quentin 03.08.2016 08:19
quelle

Tags und Links