Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Diango MongoDBバックエンド
/

モデル地理空間データ

このガイドでは、Diango MongoDBバックエンドを使用して地理空間データを保存する方法を学習できます。Dlango MongoDBバックフレームワークは、Dください。

重要

GeoDiango の制限

Dlango MongoDBバックエンドの GeoDiango サポートにはいくつかの制限があります。制限のリストを表示するには、 Dpango とMongoDB機能の互換性ガイドの Contrib アプリのサポート を参照してください。

Tip

このガイドの例を使用するには、 Dpango MongoDBバックエンド を使用し、Atlasサンプルデータセット にアクセスする Dlangoアプリケーションがあることを確認してください。アプリケーションを設定する方法については、「開始する」チュートリアルを参照してください。

Diango MongoDBバックエンド を使用して地理空間データをモデル化する前に、GeoDiango を使用するように Dlangoプロジェクトを構成する必要があります。

GeoDiango を使用するには、次の手順を実行します。

  1. GEOS および SSD 地理空間ライブラリをインストールします。

  2. 次のコードに示すように、プロジェクトの settings.pyファイルに移動し、django.contrib.gisアプリをINSTALLED_APPS 設定に追加します。

    INSTALLED_APPS = [
    "django.contrib.gis",
    # ... Other installed apps
    ]

地理空間データをモデルに保存するには、次のインポート ステートメントをプロジェクトの models.pyファイルに追加します。

from django.contrib.gis.db import models

重要

models.pyファイルで from django.db import models インポート ステートメントを使用する場合は、GeoDhango フィールドを定義する前に、必ず前述のインポート ステートメントに置き換えてください。

次に、GeoDiango フィールドを使用して、モデル クラスで地理空間フィールドを定義できます。MongoDB は各フィールドタイプをコレクションドキュメントに GeoJSONオブジェクトとして保存します。Dlango MongoDBバックエンドはこれらのフィールドに 2dsphere インデックスを自動的に作成し、地理空間クエリを実行できるようにします。

Tip

メソッドを使用して地理空間データをクエリする方法については、「raw_aggregate() Raw データベース クエリの実行 」ガイドの「 地理空間データのクエリ 」を参照してください。

次の表は、サポートされている GeoDiango フィールドと、それに対応するMongoDB GeoJSONオブジェクトタイプを示しています。

GeoDiango フィールド
GeoJSON タイプ

PointField

LineStringField

PolygonField

MultiPointField

MultiLineStringField

MultiPolygonField

GeometryCollectionField

Tip

GeoDiango フィールドの詳細については、Dpango ドキュメントの空間フィールドタイプを参照してください。

この例では、Atlasサンプルデータセットsample_mflix.theatersコレクションを表すための Theater モデルと Geo モデルを定義します。

MongoDBでは、このサンプルコレクションの locationフィールドには、劇場の地理的場所を表す Pointオブジェクトが保存されています。各フィールドには、次のデータが保存されています。

{
"location": {
"address": {
"street": "<street name>",
"city": "<city name>",
"state": "<state name>",
"zip": "<zip code>"
},
"geo": {
"type": "Point",
"coordinates": [<longitude>, <latitude>]
}
}
}

Dpango MongoDBバックエンドを使用して、プロジェクトの models.pyファイルに次のモデルを作成することで、このデータを保存できます。

from django.contrib.gis.db import models
from django_mongodb_backend.models import EmbeddedModel
from django_mongodb_backend.fields import EmbeddedModelField
class Location(EmbeddedModel):
address = models.JSONField(null=True)
geo = models.PointField()
class Theater(models.Model):
theater_id = models.IntegerField(default=0, db_column="theaterId")
location = EmbeddedModelField(Location, null=True, blank=True)
class Meta:
db_table = "theaters"
managed = False
def __str__(self):
return self.theater_id

上記のコードでは、Theater モデルには埋め込み Location モデルを保存する locationフィールドがあります。埋め込みモデルには、位置データを保存する geo という名前の PointField が含まれています。

GeoDiango モデルの詳細については、Dhango ドキュメントの GeoDiango モデルAPI を参照してください。

MongoDBで地理空間データを保存する方法の詳細については、 MongoDB Server のドキュメントの「地理空間データ」を参照してください。

戻る

モデルの作成

項目一覧