Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
장고 MongoDB 백엔드
/

지리 공간적 데이터 모델링

이 가이드 에서는 Django MongoDB 백엔드를 사용하여 지리 공간적 데이터를 저장 방법을 학습 수 있습니다. 장고 MongoDB 백엔드는 장고 애플리케이션에서 지리 공간적 데이터로 작업할 수 있는 장고의 GeoD장고 웹 프레임워크지원합니다.

중요

GeoDjango 제한 사항

장고 MongoDB 백엔드의 GeoD장고 지원 에는 몇 가지 제한 사항이 있습니다. 제한 사항 목록을 보려면 장고 및 MongoDB 기능 호환성 가이드에서 Contrib 앱 지원 을 참조하세요.

이 가이드 의 예제 를 사용 하려면 장고 MongoDB 백엔드 를 사용 하고 Atlas 샘플 데이터 세트 에 액세스 하는 장고 애플리케이션 있어야 합니다 . 애플리케이션 설정하다 방법을 학습하려면 시작하기 튜토리얼을 참조하세요.

장고 MongoDB 백엔드를 사용하여 지리 공간적 데이터를 모델링하려면 먼저 GeoD장고를 사용하도록 장고 프로젝트 구성해야 합니다.

GeoD장고를 사용하려면 다음 단계를 수행하세요.

  1. GEOSGDAL 지리 공간적 라이브러리를 설치합니다.

  2. 다음 코드에 표시된 대로 프로젝트의 settings.py 파일 로 이동하여 INSTALLED_APPS 설정에 django.contrib.gis 앱 추가합니다.

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

모델에 지리 공간적 데이터를 저장 하려면 프로젝트의 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 유형

PointField

LineStringField

PolygonField

MultiPointField

MultiLineStringField

MultiPolygonField

GeometryCollectionField

GeoD장고 필드에 대해 자세히 학습 Django 문서에서 공간 필드 유형을 참조하세요.

이 예시 Atlas 샘플 데이터 세트sample_mflix.theaters 컬렉션 나타내는 TheaterGeo 모델을 정의합니다.

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 설명서에서 지리 공간적 데이터 를 참조하세요.

돌아가기

모델 만들기

이 페이지의 내용