Django CeleryTask возвращает GeoDataFrames приводит к TypeError: Объект типа int64 не является JSON сериализуемым
Я пытаюсь создать веб-приложение, в котором я использую celery для решения долго выполняющегося процесса. Мне нужно передать представлению, вызвавшему задачу, пару GeoDataFrame и значение проекции epsg.
return {'Working_area_final': Working_area_final.to_json(), 'PoI_buffer_small': PoI_buffer_small.to_json(), 'Streets_gdf': Streets_gdf.to_json(), 'PoI_buffer_BIG_exp': PoI_buffer_BIG_exp.to_json(), 'projection': str(proj.to_epsg(), 'ip': ip.to_json()}
Проблема возникает здесь. Я получаю 'TypeError: Object of type int64 is not JSON serializable'. Я могу сказать, что до этой команды мне удается успешно выводить на консоль все, что должно быть передано в качестве результата.
Создал MWE с тем, что вы описали. При сериализации в JSON (на самом деле GEOJSON) не происходит сбоя (как ожидалось). Я предлагаю вам предоставить более подробную информацию о
- как вы используете osmnx
- как вы делаете проекцию CRS
import geopandas as gpd
import osmnx as ox
cities = gpd.read_file(gpd.datasets.get_path('naturalearth_cities'))
p = cities.loc[cities["name"].eq("Vaduz"), "geometry"].values[0].coords[0]
G = ox.graph_from_point(p[::-1], simplify=True)
# get the edges, these will be linestrings
gdf = ox.graph_to_gdfs(G, edges=True)[1]
gdf.to_crs(gdf.estimate_utm_crs()).to_json()