Ошибка чтения шейп-файла с Geopandas в Python - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь прочитать шейп-файл, используя геопанды, для которых я использовал gp.read_file

import geopandas as gp
fl="M:/rathore/vic_5km/L2_data/L2_data/DAMSELFISH_distributions.shp"
data=gp.read_file(fl)

Я получаю следующую ошибку: TypeError: invalid path: UnparsedPath(path='M:/rathore/vic_5km/L2_data/L2_data/DAMSELFISH_distributions.shp')

Обратный путь к проблеме:

----> 1 data=gp.read_file(fl)

c:\python27\lib\site-packages\geopandas\io\file.pyc in read_file(filename, bbox, **kwargs)
     75 
     76     with fiona_env():
---> 77         with reader(path_or_bytes, **kwargs) as features:
     78 
     79             # In a future Fiona release the crs attribute of features will

c:\python27\lib\site-packages\fiona\fiona\env.pyc in wrapper(*args, **kwargs)
    395     def wrapper(*args, **kwargs):
    396         if local._env:
--> 397             return f(*args, **kwargs)
    398         else:
    399             if isinstance(args[0], str):

c:\python27\lib\site-packages\fiona\__init__.pyc in open(fp, mode, driver, schema, crs, encoding, layer, vfs, enabled_drivers, crs_wkt, **kwargs)
    255         if mode in ('a', 'r'):
    256             c = Collection(path, mode, driver=driver, encoding=encoding,
--> 257                            layer=layer, enabled_drivers=enabled_drivers, **kwargs)
    258         elif mode == 'w':
    259             if schema:

c:\python27\lib\site-packages\fiona\fiona\collection.pyc in __init__(self, path, mode, driver, schema, crs, encoding, layer, vsi, archive, enabled_drivers, crs_wkt, ignore_fields, ignore_geometry, **kwargs)
     54 
     55         if not isinstance(path, (string_types, Path)):
---> 56             raise TypeError("invalid path: %r" % path)
     57         if not isinstance(mode, string_types) or mode not in ('r', 'w', 'a'):
     58             raise TypeError("invalid mode: %r" % mode)

TypeError: invalid path: UnparsedPath(path='M:/rathore/vic_5km/L2_data/L2_data/DAMSELFISH_distributions.shp')

Думаю, с Фионой есть какая-то проблема, но я не очень разбираюсь в этом. Я установил fiona 1.8.6 и geopandas 0.5.0 версию, установленную в моей системе. Я использую Python 2.7

Ответы [ 3 ]

0 голосов
/ 21 июня 2019

Я думаю, что это не имеет ничего общего с версией Фионы и геопанды.Можете ли вы найти путь к файлу через командную строку / терминал и использовать его для чтения файла, как показано ниже

fl="/Users/xxxx/Downloads/Data/DAMSELFISH_distributions.shp"

Надеюсь, это поможет

0 голосов
/ 21 июня 2019

Сначала isinstance(your_path, ((str,), Path)) оценивается как False в fiona\collection.pyc, что странно.

Кроме того, эти строки в модуле fiona / init .py должны позаботиться о том случае, когда ваш путь является pathlib.Path объектом, но, по-видимому, этого не происходит .. Я не уверен, это может быть проблема с Фиона.

Я все еще думаю, что проблема связана с parse_path (path) методом Фионы.

Вот несколько вещей, которые вы должны попробовать:

  1. Если M: является общей папкой в ​​локальной сети, попробуйте заменить «M: / ...» на UNC-путь (например: «// local / folder / path / to / file»)
  2. Если вы используете IDE (например, Pycharm, Eclipse или VsCode), добавьте точку останова в третью строку, используйте отладчик и углубляйтесь, пока не достигнете метода parse_data. затем посмотрите, как выглядит ваш путь. Если вы не используете IDE, рассмотрите возможность установки одного ...
  3. Если вы можете, попробуйте скопировать шейп-файл на тот же диск, что и ваш скрипт на python, и проверьте, все ли возникают ошибки.
0 голосов
/ 21 июня 2019

Это говорит о том, что путь неверен. Я бы попробовал заменить запятую на вашем пути:

перед:

fl="M:/rathore/vic_5km/L2_data/L2_data/DAMSELFISH_distributions,shp"

после

fl="M:/rathore/vic_5km/L2_data/L2_data/DAMSELFISH_distributions.shp"
...