FutureWarning после установки epsg в Python с геопандами - PullRequest
0 голосов
/ 18 июня 2020

Я получаю эту ошибку: FutureWarning: '+ init =:' синтаксис устарел. ':' - предпочтительный метод инициализации. При внесении изменений помните об изменениях порядка осей: https://pyproj4.github.io/pyproj/stable/gotchas.html#axis -order-changes-in-proj-6 return _prepare_from_string ("" .join (pjargs))

Я просмотрел данные о городах США с веб-сайта со встроенными картами Google. В моих данных не было crs, поэтому я провел исследование и выяснил, что epsg из карт Google равен 3857. Поэтому я установил его на 3857 с помощью

gdf.crs = {'init': 'epsg:3857'}

В конце я хочу создать карту США с отмеченными в нем городами. Я умею это делать. Карта, которая у меня есть, находится в формате epsg: 4269. Вот почему я изменил crs данных на:

gdf = gdf.to_crs({'init': 'epsg:4269'})

Когда я затем создаю файл excel с:

points_within = gp.sjoin(gdf, US, op='within') writer = pd.ExcelWriter('locationsUS3.xlsx', engine='xlsxwriter') points_within.to_excel(writer, sheet_name='Sheet1', index=False)<br> writer.save()

, файл excel пуст.

Это не тогда, когда я не выполняю шаг gdf = gdf.to_crs({'init': 'epsg:4269'}), но тогда я получаю сообщение «UserWarning: CRS соединяемых фреймов не совпадает!» error

Итак, что описывает эта ошибка FutureWarning и как я могу решить эту проблему, как мне получить свои данные в этом файле Excel?

Спасибо, что помогли мне здесь!

PS: US - это данные из США

1 Ответ

0 голосов
/ 18 июня 2020

Ваша проблема состоит из двух частей.

1) Ошибка FutureWarning сообщает вам, что вы не должны использовать {'init': 'epsg:3857'}, а какой-либо другой способ спецификации CRS. Это может быть просто 'epsg:3857' или даже 3857.

2) Причина, по которой ваш excel пуст, если вы выполняете to_crs перепроецирование, и нет, если вы этого не сделаете, заключается в том, что ваш US и gdf GeoDataFrames изначально находятся в одной проекции. Вы только что присвоили неверный номер в gdf.crs = {'init': 'epsg:3857'}. Кажется, ваш код должен выглядеть так:

gdf.crs = 'epsg:4269'  # assign correct CRS in the correct format here

points_within = gp.sjoin(gdf, US, op='within')
writer = pd.ExcelWriter('locationsUS3.xlsx', engine='xlsxwriter') 
points_within.to_excel(writer, sheet_name='Sheet1', index=False)
...