Geodjango 查询几何 returns 指针而不是几何
Geodjango Querying geometry returns pointer instead of geometry
我正在尝试从该模型的查询集中获取单个 MultiPolygon 几何体:
class local_administrative_unit(models.Model):
lau_id = models.IntegerField(primary_key=True)
lau_name = models.CharField(max_length=150)
adm_level_2 = models.ForeignKey('administrative_level_2', on_delete=models.PROTECT)
geom = models.MultiPolygonField(srid=4326)
在 Django 中以这种方式尝试 shell:
local_administrative_unit.objects.get(lau_id=1).geom
返回:
<MultiPolygon object at 0x7fb12af0ab10>
当我将它传递给 Centroid 函数时,它不是我要找的东西:
Centroid(Value(<MultiPolygon object at 0x7fb12af0ac90>))
能否请您告诉我如何获得实际的几何图形以便之后使用它 - 例如计算该多边形的质心?看起来我得到了一个指向我正在寻找的东西的指针,而不是实际的东西。
提前致谢。
与此同时,我找到了我错过的东西。基本上所有的解释都在 GeoDjango Tutorial 中,我之前似乎忽略了这一点。 GeoDjango 在首次访问几何时创建一个 GEOSGeometry 对象,然后可以使用某些属性来执行某些操作。
在上述情况下,这意味着:
foo = local_administrative_unit.objects.get(lau_id=1).geom
print(foo)
<MultiPolygon object at 0x7fb12af0ab10>
foo 将几何对象保存为初始示例中的几何对象,为了以通常可用的形式获得质心,我们可以只使用一些属性:
bar = foo.centroid
bar.wkt
这将计算质心并 return 它然后在 well-known 文本中。
我正在尝试从该模型的查询集中获取单个 MultiPolygon 几何体:
class local_administrative_unit(models.Model):
lau_id = models.IntegerField(primary_key=True)
lau_name = models.CharField(max_length=150)
adm_level_2 = models.ForeignKey('administrative_level_2', on_delete=models.PROTECT)
geom = models.MultiPolygonField(srid=4326)
在 Django 中以这种方式尝试 shell:
local_administrative_unit.objects.get(lau_id=1).geom
返回:
<MultiPolygon object at 0x7fb12af0ab10>
当我将它传递给 Centroid 函数时,它不是我要找的东西:
Centroid(Value(<MultiPolygon object at 0x7fb12af0ac90>))
能否请您告诉我如何获得实际的几何图形以便之后使用它 - 例如计算该多边形的质心?看起来我得到了一个指向我正在寻找的东西的指针,而不是实际的东西。
提前致谢。
与此同时,我找到了我错过的东西。基本上所有的解释都在 GeoDjango Tutorial 中,我之前似乎忽略了这一点。 GeoDjango 在首次访问几何时创建一个 GEOSGeometry 对象,然后可以使用某些属性来执行某些操作。 在上述情况下,这意味着:
foo = local_administrative_unit.objects.get(lau_id=1).geom
print(foo)
<MultiPolygon object at 0x7fb12af0ab10>
foo 将几何对象保存为初始示例中的几何对象,为了以通常可用的形式获得质心,我们可以只使用一些属性:
bar = foo.centroid
bar.wkt
这将计算质心并 return 它然后在 well-known 文本中。