AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

モデル地理空間データ

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

重要

GeoDiango の制限

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

Tip

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

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 str(self.theater_id)

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

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

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