【发布时间】:2014-03-27 16:36:08
【问题描述】:
我正在尝试在 django 中转换几何列,这是我的模型
class Network(models.Model):
name = models.CharField(max_length=50, blank=True)
alias = models.CharField(max_length=100, blank=True)
geometry = models.GeometryField(srid=3857, null=True, blank=True)
bbox = models.GeometryField(srid=3857, null=True, blank=True)
objects = models.GeoManager()
class Meta:
db_table = u'tbl_network'
def __unicode__(self):
return '%s' % self.name
我正在尝试转换 bbox 列,但 GeoQuerySet 会自动转换 geometry 列
Network.objects.transform(srid=3857).values('geometry','bbox')
上述django查询的SQL查询输出
SELECT ST_Transform("tbl_network"."geometry", 3857), "tbl_network"."bbox" FROM "tbl_network"
所以我尝试了不同的方式,现在我排除了 geometry 列
Network.objects.transform(srid=3857).values('bbox')
上述django查询的SQL查询输出
SELECT "tbl_network"."bbox" FROM "tbl_network"
现在GeoQuerySet 完全忽略了变换函数。
所以我的问题是:如何转换模型的特定列?
我收到了这个 django 论坛的回复,但我不明白多个几何列的问题是什么
“我知道第一个查询有效,第二个查询失败 转换。我认为这个问题可能与你有 2 同一个 Postgis 表中的几何列。
它们都列在 Postgis 的 geometry_columns 视图中吗? 通常只有 1 可以是默认值。在这种情况下几何,所以 Geodjango/Postgis 将其识别为空间列。但是当它 get's to bbox 它无法识别它并且不知道 FROM 是什么 (当前) srid 是所以转换不起作用。
一种选择是返回数据,然后在您完成后对其进行转换 将空间对象转换为 python 变量。 "
谁能解释一下这个回复?
【问题讨论】:
标签: django geospatial django-queryset geodjango