Geopandas to_file дает пустой файл prj - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь использовать GeoPandas для (немного более) более сложного проекта, но в настоящий момент мне не удается записать простой шейп-файл с одной точкой в ​​нем в проецируемом виде.

Следующий код приводит к шейп-файлу, который в целом выглядит хорошо - но .prj пуст:

import pandas as pd
from geopandas import GeoDataFrame
from shapely.geometry import Point

df=pd.read_csv("richmond.csv")
geometry = [Point(xy) for xy in zip(df.x, df.y)]
crs = {'init': 'epsg:4326'}
geo_df = GeoDataFrame(df, crs=crs, geometry=geometry)

geo_df.to_file("geopan.shp")

CSV - это 2 строки и 2 столбца (строка заголовка, затем lon и lat во 2-й строке):

a really basic csv

Я что-то упускаю из виду?Я выискивал через stackoverflow, документы геопанды и т. Д. Все, кажется, подразумевают, что to_file () должен работать просто отлично.

В долгосрочной перспективе цель состоит в том, чтобы создать несколько функций, которые мои студенты могли бы использовать влаборатория - та, которая рисует линию вдоль широты или долготы США по ширине / высоте, другая - обрезает линию по многоугольникам (штатам), так что студенты могут определить самое широкое место в каждом штате в качестве осторожного введения.работать с пространственными данными.Я пытаюсь избежать arcpy, так как это Python 2, и я подумал (и думаю), что поступил правильно, научив их способам Python 3. Я бы хотел, чтобы они могли отлаживать свои методологии, имея возможностьхотя откройте линию в Arc, отсюда и этот тест.

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Итак, поиграв с этим, я определил, что в текущей версии Anaconda проблема с crs = {'init': 'epsg:4326'} на компьютерах с Windows.Это хорошо работает на Mac, но не работает ни на одной из систем Windows моих или моих учеников.Изменение этой строки для использования строки proj4 crs = {'proj': 'latlong', 'ellps': 'WGS84', 'datum': 'WGS84', 'no_defs': True} вместо этого работает просто отлично.Это скорее обходной путь, чем реальное решение, но, похоже, оно работает последовательно.

0 голосов
/ 03 марта 2019

Я всегда использую функцию from_epsg из библиотеки fiona.

>>> from fiona.crs import from_epsg
>>> from_epsg(4326)
{'init': 'epsg:4326', 'no_defs': True}

У меня никогда не было проблем с ее использованием.Имейте в виду, что некоторые локальные проекции отсутствуют, но это не должно быть проблемой в вашем случае.

...