Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ / /
Backend do Django MongoDB
/

Dados geoespaciais do modelo

Neste guia, você pode aprender como utilizar o Backend do Django MongoDB para armazenar dados geoespaciais. Django MongoDB Backend suporta o framework da webGeoDjango do do Django, que permite a você trabalhar com dados geoespaciais em seus aplicativos Django.

Importante

Limitações do GeoDjango

O suporte GeoDjango do MongoDB Backend do Django tem várias limitações. Para visualizar uma lista de limitações, consulte Contrib App Support no guia Django and MongoDB Feature Compatibilidade.

Dica

Para usar os exemplos deste guia, verifique se você tem um aplicação Django que usa o Django MongoDB Backend e acessa os conjuntos de dados de amostra do Atlas. Para saber como configurar seu aplicação, consulte o tutorial de Introdução.

Antes de poder usar o Django MongoDB Backend para modelar dados geoespaciais, você deve configurar seu projeto Django para usar o GeoDjango.

Para usar o GeoDjango, execute as seguintes etapas:

  1. Instale as bibliotecas geoespaciais GEOS e GDAL.

  2. Navegue até o arquivo settings.py do seu projeto e adicione o aplicativo django.contrib.gis à configuração INSTALLED_APPS, conforme mostrado no código a seguir:

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

Para armazenar dados geoespaciais em seus modelos, adicione a seguinte declaração de importação ao arquivo models.py do seu projeto:

from django.contrib.gis.db import models

Importante

Se você utilizar a instrução de importação from django.db import models em seu arquivo models.py, certifique-se de substituí-lo pela instrução de importação anterior antes de definir campos GeoDjango.

Então, você pode utilizar os campos GeoDjango para definir campos geoespaciais em suas classes de modelo. O MongoDB armazena cada tipo de campo como um objeto GeoJSON em seus documentos de coleção. O Django MongoDB Backend cria automaticamente 2dsphere índices nesses campos, o que permite executar queries geoespaciais.

Dica

Para saber como executar queries de dados geoespaciais usando o método raw_aggregate(), consulte Consultar dados geoespaciais no guia Executar queries de banco de dados brutos.

A tabela a seguir lista os campos GeoDjango suportados e seus tipos de objeto MongoDB GeoJSON correspondentes:

Campo GeoDjango
GeoJSON Tipo

PointField

LineStringField

PolygonField

MultiPointField

MultiLineStringField

MultiPolygonField

GeometryCollectionField

Dica

Para saber mais sobre os campos GeoDjango, consulte Tipos de campos espaciais na documentação do Django.

Este exemplo define os modelos Theater e Geo para representar a collection sample_mflix.theaters a partir dos conjuntos de dados de amostra do Atlas.

No MongoDB, o campo location desta coleção de amostras armazena um objeto Point que representa a localização geográfica do teatro. Cada campo armazena os seguintes dados:

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

Você pode utilizar o Backend do Django MongoDB para armazenar estes dados criando os seguintes modelos no arquivo models.py do seu projeto:

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

No código anterior, o modelo Theater tem um campo location que armazena um modelo Location incorporado. O modelo embarcado contém um PointField chamado geo que armazena dados de localização.

Para saber mais sobre os modelos GeoDjango, consulte API do Modelo GeoDjango na documentação do Django.

Para saber mais sobre como armazenar dados geoespaciais no MongoDB, consulte Dados geoespaciais na documentação do MongoDB Server.

Voltar

Criar modelos

Nesta página