[파이썬] mongoengine 지리 정보를 위한 `GeoPointField`

MongoDB is a NoSQL database that provides powerful geospatial capabilities. In combination with the mongoengine library, you can easily store and query geographic information in your Python applications.

One of the key features of mongoengine is the GeoPointField. This field allows you to store geographical coordinates as latitude and longitude values.

To use the GeoPointField in your mongoengine models, you first need to install the required dependencies. You can do this by running the following command in your terminal:

pip install mongoengine

Once you have mongoengine installed, you can start using the GeoPointField in your models. Here’s an example of a model that uses the GeoPointField to store the location of a place:

from mongoengine import Document, GeoPointField

class Place(Document):
    name = StringField()
    location = GeoPointField()

In the above example, the Place model has two fields: name and location. The location field is of type GeoPointField, which will store the latitude and longitude coordinates of the place.

Now, you can create instances of the Place model and save them to the database:

place1 = Place(name="New York", location=[40.7128, -74.0060])
place1.save()

place2 = Place(name="London", location=[51.5074, -0.1278])
place2.save()

To query the database based on geographical criteria, you can use the near method provided by mongoengine. This method allows you to find documents that are near a specific location. Here’s an example:

# Find places near a given location (e.g., within 10 kilometers)
nearby_places = Place.objects(location__near=[40.7128, -74.0060], location__max_distance=10000)

for place in nearby_places:
    print(place.name)

In the above code, we use the objects method on the Place model to get a queryset of all places near the given location (New York) within a maximum distance of 10 kilometers. We then iterate over the queryset to print the names of the nearby places.

With the GeoPointField in mongoengine, you can easily work with geospatial data in MongoDB using Python. It provides a convenient way to store and query geographic information in your applications, opening up possibilities for location-based services and analysis.

Remember to always consult the mongoengine documentation for more detailed information and advanced usage of the GeoPointField and other features in mongoengine.