Как я могу сохранить GeoDataFrame на диск в Python? - PullRequest
2 голосов
/ 15 февраля 2020

У меня есть GeoDataFrame с именем merged, и мне очень трудно сохранить его на диск.
merged получается через l oop:

import pandas as pd
import geopandas as gpd
import osmnx as ox

city=gpd.read_file('C:/folder/city.json')
circ=[]

for i in (0, 1):
    graph = ox.graph_from_polygon(city.geometry[i])
    stat = ox.basic_stats(graph)
    circ.append(stat['circuity_avg'])

circ=pd.Series(circ)
merged=pd.concat([city, circ], axis=1)

I просто хотите сохранить merged в файл, как json файл или другой формат, который сохраняет геометрию, чтобы я мог затем использовать данные в R. Вот методы, которые я пробовал:

1.

merged.to_file('merged.json', driver='GeoJSON')

, что дает

Ошибка атрибута У объекта int нет атрибута encode

Кто-нибудь знает, почему merged классифицируется как 'int', в то время как это GeoDataFrame (это то, что указано, когда я делаю type(merged))?

2.

with open('x.geojson', 'w') as f:
        f.write(merged_short.to_json())

Это создает x.geojson файл в моей среде Jupyter Lab, но он не сохраняет его на диск. Это понятно, так как я не указываю путь для сохранения. Однако я не знаю, как добавить путь.

3.

merged.to_csv("C:/folder/merged.cs")

Это работает, но, поскольку данные сохраняются как CSV, геометрия не сохраняется.

4.

merged.to_json("C:/folder/merged.cs")

Но это дает ValueError: Unknown na method.

Я очень удивлен, что не нашел простого способа сохранить GeoDataFrames в файл на мой компьютер. Есть ли простой способ сохранить GeoDataFrames?

Решение

with open('C:/folder/merged.json', 'w') as f:
        f.write(merged_short.to_json())

То есть мне просто нужно было указать полный путь.

1 Ответ

1 голос
/ 16 февраля 2020

Ваша версия 2 сохранит файл, но в относительном месте. Попробуйте указать абсолютный путь:

with open('C:/folder/x.geojson', 'w') as f:
    f.write(merged_short.to_json())
...