我需要在Geodjango中仅保存3D PointField的z值

时间:2018-03-31 19:24:10

标签: django geodjango

我使用具有3个维度的PointField为某些对象提供了位置数据库。但事实证明,一些用户只有对象的z坐标(高程),而不是x和y。 PointField不允许我定义一个只有z坐标的点。

我真的不想将PointField分成两个区域,因为这样对我来说非常方便。如果有一个我可以使用的解决方法,那就太棒了。

In []: Point(x=1,y=2,z=3).z
Out[]: 3.0
In []: Point(z=3).z
Out[]:

1 个答案:

答案 0 :(得分:1)

对于用户而言,具有高程值而不是其位置的Lon / Lat是非常奇怪的,但作为解决方法,如果用户不这样做,为什么不使用X,Y,Z的固定值提供那些?

DEFAULT_X = 0
DEFAULT_Y = 0
DEFAULT_Z = 0

def create_point(x=None, y=None, z=None):
    return Point(
        x=x if x else DEFAULT_X,
        y=y if y else DEFAULT_Y,
        z=z if z else DEFAULT_Z
    )

请注意,您的默认值应该是数据集中不会随机出现的内容,否则您可能会混淆数据。