Геопространственная аналитика в Python

Я провел некоторое исследование, чтобы найти пакет для установки и использования для геопространственной аналитики

Самым близким, что я получил, был https://github.com/harsha2010/magellan - он, однако, имеет только интерфейс Scala и не знает, как использовать его с Python.

Я надеялся, что кто-то знает о пакете, который я могу использовать?

То, что я пытаюсь сделать, это проанализировать данные Uber и отобразить их на фактические почтовые индексы / пригороды и запустить их через SGD, чтобы предсказать количество поездок в конкретный пригород.

Здесь уже много информации о данных - http://hortonworks.com/blog/magellan-geospatial-analytics-in-spark/, и я ищу способы сделать это на Python.

2 ответа

Я понимаю, что это старые вопросы, но основываюсь на ответе Джеффа Г.

Если вы попадаете на эту страницу в поисках помощи в составлении набора инструментов геопространственной аналитики в Python - я очень рекомендую это руководство.

https://geohackweek.github.io/vector

Это действительно набирает обороты в 3-й секции.

Это показывает, как интегрировать

  1. GeoPandas
  2. PostGIS
  3. прожилок
  4. rasterstats

добавьте в scikit-learn, numpy и scipy, и вы действительно сможете многого добиться. Вы также можете получить информацию из этого урока nDarray.

В Python я бы посмотрел на GeoPandas. Он предоставляет структуру данных с именем GeoDataFrame: это список объектов, каждый из которых имеет геометрию и некоторые необязательные атрибуты. Вы можете объединить два GeoDataFrames вместе на основе пересечения геометрии, и вы можете агрегировать количество строк (скажем, трипс) в пределах одной геометрии (скажем, почтовый индекс).

  1. Я не знаком с данными Uber, но я постараюсь найти способ поместить их в GeoPandas GeoDataFrame.
  2. Аналогичным образом, почтовые индексы можно загружать из таких мест, как перепись населения США, OpenStreetMap[1] и т. Д., И приводить их в GeoDataFrame.
  3. Соедините № 1 с № 2 на основе пересечения геометрии. Вы хотите новый GeoDataFrame с одной строкой для каждой поездки Uber, но с прикрепленным к каждому почтовому индексу. В другом посте Stackru обсуждается, как это сделать, и в настоящее время это сложнее, чем должно быть.
  4. Объедините это по почтовому индексу и посчитайте поездки в каждом. Код будет выглядеть так joined_dataframe.groupby('postcode').count(),

Я опасаюсь вышеописанного процесса, если у вас есть сотни тысяч очень сложных геометрий поездки, это может длиться вечно на одной машине. Ссылка, которую вы разместили, использует Spark, и вам может понадобиться распараллелить это в конце концов. Вы можете написать Python против кластера Spark (!), Но я не тот человек, который поможет вам с этим компонентом.

Наконец, для компонента прогнозирования (например, SGD), проверьте http://scikit-learn.org/: это довольно полнофункциональный пакет машинного обучения с очень простым API.

[1]: существует отдельный пакет геопандат_osm, который захватывает данные OSM и возвращает GeoDataFrame: https://michelleful.github.io/code-blog/2015/04/27/osm-data/

Другие вопросы по тегам