2016-05-09 22 views
1

Ich verwende GeoDjango, um ein Formular anzuzeigen, wo ein Benutzer einen Bereich auf einer Karte auswählen und benennen kann.GeoDjango Polygon Field ParseException

Ich habe folgendes Modell

import django.contrib.gis.db.models as models  
class Area(models.Model): 
    name = models.CharField(max_length=25) 
    area_target = models.PolygonField(default='POLYGON EMPTY') 

Und diese Form

from django.contrib.gis import forms 
class AreaForm(forms.Form): 
    name = forms.CharField(max_length=160) 
    area_target = forms.PolygonField(srid=4326, required=False, widget=forms.OSMWidget(attrs={'map_width': 600, 'map_height': 500})) 

Das Formular korrekt angezeigt wird, und ich kann eine Fläche mit der Karte Widget auswählen, aber ich bekomme die folgende Fehlermeldung, wenn Ich reiche das Formular ein:

GEOS_ERROR: ParseException: Expected 'Z', 'M', 'ZM', 'EMPTY' or '(' but encountered : ')'

GEOS_ERROR: ParseException: Expected 'Z', 'M', 'ZM', 'EMPTY' or '(' but encountered : ')'

Error creating geometry from value 'SRID=900913;POLYGON()' (Error encountered checking Geometry returned from GEOS C function "GEOSWKTReader_read_r".)

So wird das Polygon gezeichnet: Polygon drawn with OSM Widget

Wie Sie in der Debug-Ausgabe sehen können, gibt es keine Werte für die Kanten des Polygons.

Ich benutze Django 1.9.4, eine postgres 9.5.1.0 DB mit Postgis-Erweiterung und Geos 3.5 als Geometrie-Backend.

Kann mir jemand sagen, was los ist?

+0

Sie haben nicht gezeigt, wie Sie ein Area-Objekt erstellen. – e4c5

+0

Das Flächenobjekt sollte durch Zeichnen eines Polygons erstellt werden. Ich habe einen Screenshot hinzugefügt ... – user2393256

+0

Bitte öffnen Sie die JavaScript-Konsole und zeigen Sie, wenn Fehler angezeigt werden – e4c5

Antwort

1

POLYGON(()) ist ungültig und wird eine ParseException auslösen, wie gezeigt.

Versuchen Sie POLYGON EMPTY, um eine leere Polygongeometrie zu erstellen.

Ich bin nicht mit GeoDjango vertraut, aber vielleicht ist auch NULL/None eine Option.

+0

Danke, aber das hat das Problem nicht gelöst ... – user2393256