2017-08-23 5 views
0

Ich habe ein wenig Probleme, da ich neu in der Programmierung bin. Ich schreibe gerade ein Python-Skript und bin ein bisschen festgefahren. Das Ziel besteht darin, einige räumliche Informationen, die aus SQL abgerufen werden, in ein Format zu parsen, das für mein py-Skript auf der ganzen Linie verwendbar ist.Parsen einer räumlichen SQL-Spalte in Python

Ich konnte CAST durch eine SQL-Abfrage und fetchall mit dem Obdc-Modul. Sobald ich jedoch die Daten abgeholt habe, wird es für mich ein Trick. Hier ist ein Beispiel für einen Druck aus dem fetchall:

[(u'POLYGON ((7014.186279296875 6602.99658203125 1612.5, 7015.984375 6600.416015625 1612.5))',), (u'POLYGON ((6730.962646484375 6715.2490234375 1522.5, 6730.0869140625 6714.13916015625 1522.5))',)] 

Ich bin nicht ganz sicher, was ich bin immer hier ist es wie eine Liste von Tupeln ist. Ich habe versucht, in eine Liste zu konvertieren, aber da muss etwas fehlen.

Hier wird das verwendbare Format Ich suche:

[[7014.186279296875, 6602.99658203125, 1612.5], [7015.984375, 6600.416015625, 1612.5]] 

[[6730.962646484375, 6715.2490234375, 1522.5], [6730.0869140625, 6714.13916015625, 1522.5]] 

Irgendwelche Ideen, wie ich dies erreichen kann? Vielleicht gibt es einen besseren Weg zu CAST in SQL oder ein Modul in Python, das einfacher zu benutzen wäre, anstatt einfach eine cursor.fetchall() zu machen und zu parsen? Oder irgendeine Parsing-Hilfe wäre nützlich. Vielen Dank.

Antwort

0

Wenn Sie Parsing tun möchten, sollte das geradlinig sein. Zum Beispiel haben Sie folgenden Code zur Verfügung gestellt würde das Ding tun:

Ergebnis wird enthalten, was Sie brauchen. Wenn das Parsen keine Option ist, fügen Sie etwas Code ein, damit ich sehen kann, wie Sie Daten abrufen.

+0

Dank @PerunSS. Ihr Code funktioniert gut, außer dass die Zeichenfolgen in der Liste floating und der Unicode entfernt werden müssen. Der Code bis zu diesem Punkt ist nicht so komplex. Ich benutze import odbc, und die Abfrage = "SELECT TOP 2 CAST ([ggem_wert] AS varchar (max)) VON [Atlas_STP]. [Dbo]. [Geom_geometry_sqlgeometry]", dann holen Sie alle. – erok54

+0

@ erok54 Konvertierung in Zeichenfolge hinzugefügt und später float. Ich gehe davon aus, dass Sie mit T-SQL arbeiten, und ich bin nicht so gut mit T-SQL, aber wenn Sie Daten aus der Datenbank auslesen können, kann ich vielleicht etwas ausarbeiten. – PerunSS