Геопространственная аналитика в 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-й секции.
Это показывает, как интегрировать
- GeoPandas
- PostGIS
- прожилок
- rasterstats
добавьте в scikit-learn, numpy и scipy, и вы действительно сможете многого добиться. Вы также можете получить информацию из этого урока nDarray.
В Python я бы посмотрел на GeoPandas. Он предоставляет структуру данных с именем GeoDataFrame: это список объектов, каждый из которых имеет геометрию и некоторые необязательные атрибуты. Вы можете объединить два GeoDataFrames вместе на основе пересечения геометрии, и вы можете агрегировать количество строк (скажем, трипс) в пределах одной геометрии (скажем, почтовый индекс).
- Я не знаком с данными Uber, но я постараюсь найти способ поместить их в GeoPandas GeoDataFrame.
- Аналогичным образом, почтовые индексы можно загружать из таких мест, как перепись населения США, OpenStreetMap[1] и т. Д., И приводить их в GeoDataFrame.
- Соедините № 1 с № 2 на основе пересечения геометрии. Вы хотите новый GeoDataFrame с одной строкой для каждой поездки Uber, но с прикрепленным к каждому почтовому индексу. В другом посте Stackru обсуждается, как это сделать, и в настоящее время это сложнее, чем должно быть.
- Объедините это по почтовому индексу и посчитайте поездки в каждом. Код будет выглядеть так
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/