Могу ли я создать 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