Docs Menu
Docs Home
/ /
/ / /

Datos geoespaciales del modelo

En esta guía, aprenderá a usar Django MongoDB Backend para almacenar datos geoespaciales. Django MongoDB Backend es compatible con Django. Marco webGeoDjango, que le permite trabajar con datos geoespaciales en sus aplicaciones Django.

Importante

Limitaciones de GeoDjango

La compatibilidad con GeoDjango del backend de Django MongoDB tiene varias limitaciones. Para ver una lista de limitaciones, consulte Compatibilidad de aplicaciones Contrib en la guía de compatibilidad de funciones de Django y MongoDB.

Tip

Para usar los ejemplos de esta guía, asegúrese de tener una aplicación Django que use el backend de Django MongoDB y acceda a los conjuntos de datos de ejemplo de Atlas. Para aprender a configurar su aplicación, consulte el tutorial "Comenzar".

Antes de poder usar Django MongoDB Backend para modelar datos geoespaciales, debe configurar su proyecto Django para usar GeoDjango.

Para utilizar GeoDjango, realice los siguientes pasos:

  1. Instala las librerías geoespaciales GEOS y GDAL.

  2. Navega hasta tu proyecto settings.py archivo y agregue la aplicación django.contrib.gis a la configuración INSTALLED_APPS, como se muestra en el siguiente código:

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

Para almacenar datos geoespaciales en sus modelos, agregue la siguiente declaración de importación al archivo models.py de su proyecto:

from django.contrib.gis.db import models

Importante

Si utiliza la declaración de importación from django.db import models en su archivo models.py, asegúrese de reemplazarla con la declaración de importación anterior antes de definir los campos de GeoDjango.

Luego, puede usar los campos de GeoDjango para definir campos geoespaciales en sus clases de modelo. MongoDB almacena cada tipo de campo como un objeto GeoJSON en los documentos de su colección. El backend de Django MongoDB crea automáticamente índices 2dsphere en estos campos, lo que le permite realizar consultas geoespaciales.

Tip

Para aprender a consultar datos geoespaciales mediante el raw_aggregate() método,consulte Consultar datos geoespaciales en la guía Realizar consultas de bases de datos sin procesar.

La siguiente tabla enumera los campos GeoDjango compatibles y sus tipos de objetos MongoDB GeoJSON correspondientes:

Campo GeoDjango
GeoJSON Tipo

PointField

LineStringField

PolygonField

MultiPointField

MultiLineStringField

MultiPolygonField

GeometryCollectionField

Tip

Para obtener más información sobre los campos GeoDjango, consulta Tipos de campos espaciales en la documentación de Django.

Este ejemplo define los modelos Theater y Geo para representar la colección sample_mflix.theaters de los conjuntos de datos de muestra de Atlas.

En MongoDB, el campo location de esta colección de ejemplo almacena un objeto Point que representa la ubicación geográfica del teatro. Cada campo almacena los siguientes datos:

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

Puede utilizar Django MongoDB Backend para almacenar estos datos creando los siguientes modelos en el archivo models.py de su proyecto:

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)

En el código anterior, el modelo Theater tiene un campo location que almacena un modelo Location incrustado. Este modelo incrustado contiene un PointField llamado geo que almacena datos de ubicación.

Para obtener más información sobre los modelos de GeoDjango, consulte la API de modelos de GeoDjango en la documentación de Django.

Para obtener más información sobre cómo almacenar datos geoespaciales en MongoDB, consulte Datos geoespaciales en la documentación del servidor MongoDB.

Volver

Crear modelos

En esta página