Geodjango/postgres 类似于空间索引的外键关系

Geodjango/postgres ForeignKey relationship like a spatial index

我实际上正在寻找最好和最简单的方法来使用 4 个表创建空间索引,其中数据结构已经到位。

如 picture 所示,层已叠加且完美贴合。空间操作可以完成查询中的工作,但对于在 geodjango 上进行大量地理处理的 web GIS,它可能过于繁重而不适合友好使用。因此,添加 ForeignKey 关系可能会更快。

结构是:

命名不规范,所有ID和FID都是字符串,如:

许多动态地理处理将通过此结构进行。这就是为什么外键关系可能是最好的选择。最后,它是一个与字段一起工作的空间索引。但是要怎么做呢?

我可以将 L1 与 L2 关联为规则,例如:where L2_FK LIKE selected_L1_ID%" 而不是 where L2_FK == selected_L1_ID%?

感谢

亚历克斯

我们已经使用了这种形式的空间索引数据而没有遇到仅使用一个 model/table 和 django-mptt 的问题:

from django.contrib.gis.db import models
from django.utils.translation import ugettext_lazy as _
from mptt.models import MPTTModel, TreeForeignKey


class Region(MPTTModel):
    class Level:
        L1 = 1
        L2 = 2
        L3 = 3
        L4 = 4
        L5 = 5

        choices = (
            (L1, _("L1")),
            (L2, _("L2")),
            (L3, _("L3")),
            (L4, _("L4")),
            (L5, _("L5")),
        )

    parent = TreeForeignKey('self', null=True, blank=True,
                               related_name='children')
    layer = models.IntegerField(_('layer'), choices=Level.choices,
                                db_index=True)
    code = models.CharField(_("name"), db_index=True, max_length=100)
    geom = models.MultiPolygonField(_('polygon'))

    def __str__(self):
        return self.code

(在导入数据时,我们已经手动将所有子节点的geom联合到父节点)