Geo pandas не работает после импорта файла из другого каталога - PullRequest
1 голос
/ 06 января 2020

Я пытаюсь создать карту в python, используя шейп-файлы, которые я скачал с bbike.org . Вот мой код:

import geopandas as gpd
import os
import sys
import matplotlib.pyplot as plt

bos_files_list = ['buildings.shx', 'landuse.shx', 'natural.shx', 'places.shx', 'points.shx', 'railways.shx', 'roads.shx']
cur_path = os.path.dirname(__file__)

def maps_of_bos(files):
    for x in range(len(files)):
        os.chdir(f'location/of/file')
        f = open(f'{files[x]}', 'r')
        gpd.read_file(f)


z = maps_of_bos(bos_files_list)

z.plot()

plt.show()

Тем не менее, мой вывод ошибок выглядит следующим образом:

Traceback (most recent call last):
  File "test.py", line 16, in <module>
    z = maps_of_bos(bos_files_list)
  File "test.py", line 13, in maps_of_bos
    gpd.read_file(f)

  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/geopandas/io/f
ile.py", line 76, in read_file
    with reader(path_or_bytes, **kwargs) as features:
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/contextlib.py", line 113, in
 __enter__
    return next(self.gen)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/fiona/__init__
.py", line 206, in fp_reader
    dataset = memfile.open()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/fiona/io.py",
line 63, in open
    return Collection(vsi_path, 'w', crs=crs, driver=driver,
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/fiona/collecti
on.py", line 126, in __init__
    raise DriverError("no driver")
fiona.errors.DriverError: no driver

Я относительно новичок в python и не совсем понимаю свою ошибку. Может кто-нибудь, пожалуйста, помогите мне?

1 Ответ

1 голос
/ 06 января 2020

Согласно документам read_file следует указывать путь к файлу, а не объекту.

gpd.read_file(f'{files[x]}')

вам не нужно

f = open(f'{files[x]}', 'r')

...