2

実際には、データの構造がすでに整っている4つのテーブルを持つ空間インデックスを作成する最も簡単で簡単な方法を探しています。Geodjango/postgres空間インデックスのようなForeignKeyの関係

pictureと同じように、レイヤーがオーバーレイされ、完全にフィットします。空間的な操作はクエリで仕事をすることができますが、geodjangoでのジオプロセシングが重いWeb GISの場合、フレンドリーな使い方では重すぎるかもしれません。したがって、ForeignKey関係を追加する方が速く動作する可能性があります。

構造は以下の通りである:

  • L1は
  • L2 L2多くは、多くのL3
  • L3は、すべてのIDとFIDが文字列として、多くのL4

ネーミングが異常である持っている持っている持っています:

  • L1:A、B、C、... B as exemple
  • L2:B01、B02、B03 、... B03 exemple
  • L3:B0301、B0302 、B0303、... B0302 exemple
  • L4:B030201、B030202 、B030203、...

オンザフライジオプロセシングは、この構造によって多く発生します。それがなぜ外国人のキーの関係であるのがそれを行うのが最善だろうか。最後に、フィールドと連携する空間インデックスです。しかし、それを行う方法?

私のようなルールとして、L2とL1を関連付けることができます。ここで、L2_FK LIKE selected_L1_IDの%」を代わりに私たちは、空間的に索引付けされたデータを使用しているL2_FK == selected_L1_ID%

感謝

アレックス

答えて

0

?一つだけのモデル/テーブルと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 

(中にデータのインポートを、我々親ノードにすべての子ノードのギオムの和集合を手動で追加しました)

関連する問題