2017-04-07 6 views
0

geodjangoを使用してアプリを作成しています。
私はそうのようなモデルがあります:私のデータベースに国境を重ねて2つの以上のオブジェクトが存在することができgeodjangoでオブジェクトを重複させる方法は?

class WorldBorder(models.Model): 
    name = models.CharField(max_length=50) 
    mpoly = models.MultiPolygonField() 

を。

一部のオブジェクトの枠線が重なっているかどうかを確認するにはどうすればよいですか?
ボーダーが重なっているオブジェクトのクエリーセットを取得するにはどうすればよいですか?

おかげ

答えて

2

あなたはあなたが達成したいかに応じて、2つのオプション、持っている:


オプション1:あなたが __overlapsルックアップを使用することができます使用の

例:

an_mpoly = WorldBorder.objects.get(name='a_name').mpoly 
overlapping_mpolys = WorldBorder.objects.filter(mpoly__overlaps=an_mpoly) 

今度はoverlapping_mpolysはすべてWorldBorderのオブジェクトを含むクエリセットですmpolyは、name='a_name'WorldBorderオブジェクトのmpolyと重複しています。


オプション2: あなたは object to object重複チェックが必要な場合は、 GEOS API overlaps方法を利用することができます使用の

例:

mpoly_1 = WorldBorder.objects.get(name='name_1').mpoly 
mpoly_2 = WorldBorder.objects.get(name='name_2').mpoly 

if mpoly_1.overlaps(mpoly_2): 
    print("{} and {} are overlapping".format(mpoly_1, mpoly_2)) 

関連する問題