Могу ли я создать Django Rest Framework API с форматом Geojson, не имея модели

У меня есть приложение Django, которое запрашивает данные из внешнего API, и моя цель - преобразовать эти данные, которые возвращаются в формате списка/словаря, в новый REST API с форматом Geojson.

Я наткнулся на django-rest-framework-gis, но не знаю, смогу ли я использовать его, не имея Модели. Но если да, то как?

Я думаю, что лучший способ - использовать библиотеку python geojson

pip install geojson

Если у вас нет модели, как в geodjango, вы должны явно описать геометрию на основе имеющихся у вас данных.

from geojson import Point, Feature, FeatureCollection

data = [
    {
        "id": 1,
        "address": "742 Evergreen Terrace",
        "city": "Springfield",
        "lon": -123.02,
        "lat": 44.04
    },
    {
        "id": 2,
        "address": "111 Spring Terrace",
        "city": "New Mexico",
        "lon": -124.02,
        "lat": 45.04
    }
]


def to_geojson(entries):
    features = []

    for entry in entries:
        point = Point((entry["lon"], entry["lat"]))

        del entry["lon"]
        del entry["lat"]

        feature = Feature(geometry=point, properties=entry)
        features.append(feature)

    return FeatureCollection(features)


if __name__ == '__main__':
    my_geojson = to_geojson(data)

    print(my_geojson)
  • Создайте геометрию точки из lon, lat (может быть и другой тип геометрии)
  • .
  • Создайте объект с созданной геометрией и добавьте словарь в качестве свойств. Обратите внимание, что я удалил записи lon, lat из словаря, чтобы они не отображались в качестве свойств.
  • Создайте коллекцию объектов из нескольких объектов

Результат:

{"features": [{"геометрия": {"координаты": [-123.02, 44.04], "type": "точка"}, "свойства": { "адрес": "742 Evergreen Terrace", "city": "Спрингфилд", "id": 1}, "type": "Feature"}, { "geometry": {"координаты": [-124.02, 45.04], "type": "Point"}, "properties": { "адрес": "111 Spring Terrace", "city": "Нью-Мексико", "id": 2}, "type": "Feature"}], "type": "FeatureCollection"}

.

Дополнительная информация здесь: Документация Библиотека Geojson

Вернуться на верх