개요
이 가이드 에서는 Django MongoDB 백엔드를 사용하여 지리 공간적 데이터를 저장 방법을 학습 수 있습니다. 장고 MongoDB 백엔드는 장고 애플리케이션에서 지리 공간적 데이터로 작업할 수 있는 장고의 GeoD장고 웹 프레임워크지원합니다.
중요
GeoDjango 제한 사항
장고 MongoDB 백엔드의 GeoD장고 지원 에는 몇 가지 제한 사항이 있습니다. 제한 사항 목록을 보려면 장고 및 MongoDB 기능 호환성 가이드에서 Contrib 앱 지원 을 참조하세요.
팁
이 가이드 의 예제 를 사용 하려면 장고 MongoDB 백엔드 를 사용 하고 Atlas 샘플 데이터 세트 에 액세스 하는 장고 애플리케이션 있어야 합니다 . 애플리케이션 설정하다 방법을 학습하려면 시작하기 튜토리얼을 참조하세요.
GeoD장고 구성
장고 MongoDB 백엔드를 사용하여 지리 공간적 데이터를 모델링하려면 먼저 GeoD장고를 사용하도록 장고 프로젝트 구성해야 합니다.
GeoD장고를 사용하려면 다음 단계를 수행하세요.
GeoD장고 모델 만들기
모델에 지리 공간적 데이터를 저장 하려면 프로젝트의 models.py
파일 에 다음 가져오기 성명서 추가합니다.
from django.contrib.gis.db import models
중요
models.py
파일 에서 from django.db import models
가져오기 성명서 사용하는 경우 GeoD장고 필드를 정의하기 전에 앞의 가져오기 성명서 으로 바꿔야 합니다.
그런 다음 GeoD장고 필드를 사용하여 모델 클래스에서 지리 공간적 필드를 정의할 수 있습니다. MongoDB 각 필드 유형을 컬렉션 문서에 GeoJSON
객체 로 저장합니다. Django MongoDB 백엔드는 이러한 필드에 2dsphere
인덱스를 자동으로 생성하여 지리 공간적 쿼리를 수행할 수 있습니다.
팁
raw_aggregate()
메서드를 사용하여 지리 공간적 데이터를 쿼리 방법을 학습하려면 원시 데이터베이스 쿼리 수행 가이드 의 지리 공간적 데이터 쿼리를 참조하세요.
다음 표에는 지원되는 GeoD장고 필드와 해당 MongoDB GeoJSON
객체 유형이 나열되어 있습니다.
GeoD장고 필드 | GeoJSON 유형 |
---|---|
| |
| |
| |
| |
| |
| |
|
팁
GeoD장고 필드에 대해 자세히 학습 Django 문서에서 공간 필드 유형을 참조하세요.
모델 예제
이 예시 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>] } } }
장고 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
가 포함되어 있습니다.
추가 정보
GeoD장고 모델에 대해 자세히 학습 장고 문서에서 GeoD장고 모델 API 참조하세요.
MongoDB 에 지리 공간적 데이터를 저장하는 방법에 대해 자세히 학습하려면 MongoDB Server 설명서에서 지리 공간적 데이터 를 참조하세요.