sortiert nach geodjango Breite

8

Ich habe das folgende Modell:

%Vor%

Ich möchte meine Stopps von Norden nach Süden sortieren. Wie mache ich das? Stop.objects.order_by('point') sortiert sie von Westen nach Osten.

danke.

Dies ist mein vollständiges Modell:

%Vor%     
eran 22.05.2016, 22:21
quelle

2 Antworten

4

Da dein Punktfeld Geometrie und nicht Geographie ist, hast du Glück.

%Vor%

Ich verwende hier ST_X anstelle von ST_Y, weil PostGIS die beste der Geodjango-Datenbanken ist, die die Konvention speichern soll lng,lat

Wenn Ihr Punktfeld Geographie gewesen wäre, hätte der obige Funktionsaufruf nicht funktioniert, da ST_X und ST_Y nur verfügbar sind auf Geometriefeldern. Geography-Felder müssen in Geometry umgewandelt werden, bevor Sie diese Funktionen verwenden können.

    
e4c5 27.05.2016, 00:03
quelle
1

Ich habe den gleichen TypeError: Unsaubere Geometrie-Eingabe-Typ: berichtet von eran, und ich war in der Tat mit einem PointField. Ich löste das Problem, indem ich einen ExpressionWrapper hinzufügte, um Django mitzuteilen, welche Art von Ausgabe zu erwarten ist (ein Float anstelle eines Punktes).

Um in PostGIS den Breitengrad zu erhalten, sollten Sie ST_Y verwenden.

%Vor%     
Michael Corey 19.06.2017 19:29
quelle

Tags und Links