【问题标题】:GeoDjango Polygon Field ParseExceptionGeoDjango 多边形字段 ParseException
【发布时间】:2016-09-03 23:38:45
【问题描述】:

我正在使用 GeoDjango 显示一个表单,用户可以在该表单中选择地图上的一个区域并为其命名。

我有以下型号

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')

还有这个表格

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}))

表单显示正确,我可以使用地图小部件选择一个区域,但我在提交表单时收到以下错误消息:

GEOS_ERROR: ParseException: 预期为 'Z'、'M'、'ZM'、'EMPTY' 或 '(' 但遇到:')'

GEOS_ERROR: ParseException: 预期为 'Z'、'M'、'ZM'、'EMPTY' 或 '(' 但遇到:')'

从值“SRID=900913;POLYGON()”创建几何时出错(错误 遇到检查从 GEOS C 函数返回的几何 “GEOSWKTReader_read_r”。)

这是多边形的绘制方式:

正如您在调试输出中看到的那样,多边形的边缘没有值。

我正在使用 Django 1.9.4,一个带有 postgis 扩展和 geos 3.5 作为几何后端的 postgres 9.5.1.0 数据库。

谁能告诉我怎么了?

【问题讨论】:

  • 你还没有展示你是如何创建一个 Area 对象的。
  • 区域对象应该通过绘制多边形来创建。我添加了一个屏幕截图...
  • 请打开 javascript 控制台并显示是否出现任何错误
  • 我在 javascript 控制台中没有收到任何错误。
  • 我觉得这是一个 OSM 问题,而不是 GeoDjango 问题。我能否建议更改其中一个标签以打开街道地图,以便引起该主题专家的注意。

标签: django gis openlayers openstreetmap geodjango


【解决方案1】:

POLYGON(()) 无效WKT,并会抛出 ParseException,如图所示。

尝试POLYGON EMPTY 创建一个空的多边形几何体。

我不熟悉 GeoDjango,但也许 NULL/None 也是一个选项。

【讨论】:

    猜你喜欢
    • 2012-11-01
    • 2020-02-23
    • 2013-11-22
    • 1970-01-01
    • 2012-11-13
    • 2016-09-06
    • 2010-12-03
    • 1970-01-01
    • 2011-10-15
    相关资源
    最近更新 更多