Analítica geoespacial en Python

He estado haciendo una investigación para encontrar un paquete para instalar y usar para Geospatial Analytics

Lo más cercano que pude fue https://github.com/harsha2010/magellan . Sin embargo, esto solo tiene una interfaz de Scala y no doco cómo usarlo con Python.

¿Esperaba que alguien conozca un paquete que pueda usar?

Lo que estoy tratando de hacer es analizar los datos de Uber y asignarlos a los códigos postales / suburbios reales y ejecutarlos a través del SGD para predecir la cantidad de viajes a un suburbio en particular.

Ya hay mucha información de datos aquí: http://hortonworks.com/blog/magellan-geospatial-analytics-in-spark/#comment-606532 y estoy buscando formas de hacerlo en Python.

En Python echaría un vistazo a GeoPandas . Proporciona una estructura de datos llamada GeoDataFrame: es una lista de características, cada una con una geometría y algunos atributos opcionales. Puede unir dos GeoDataFrames juntos en función de la intersección de la geometría, y puede agregar el número de filas (por ejemplo, viajes) dentro de una única geometría (por ejemplo, código postal).

  1. No estoy familiarizado con los datos de Uber, pero intentaría encontrar una manera de incluirlos en un GeoPandas GeoDataFrame.
  2. Del mismo modo, los códigos postales se pueden descargar de lugares como el Censo de EE. UU., OpenStreetMap [1], etc. y convertirlos en un GeoDataFrame.
  3. Unir # 1 a # 2 basado en la intersección de geometría. Desea un nuevo GeoDataFrame con una fila por viaje Uber, pero con el código postal adjunto a cada uno. Otra publicación de StackOverflow explica cómo hacer esto , y actualmente es más difícil de lo que debería ser.
  4. Agregue esto por código postal y cuente los viajes en cada uno. El código se verá como joined_dataframe.groupby('postcode').count() .

Mi temor por el proceso anterior es que si tiene cientos de miles de geometrías de viaje muy complejas, podría tardar una eternidad en una máquina. El enlace que publicaste usa Spark y puedes terminar queriendo paralelizar esto después de todo. Puedes escribir Python contra un clúster Spark (!) Pero no soy la persona que te ayude con este componente.

Finalmente, para el componente de predicción (p. Ej., SGD), consulte scikit-learn: es un paquete de aprendizaje automático bastante completo, con una API sencilla.

[1]: hay un paquete separado llamado geopandas_osm que toma datos de OSM y devuelve un GeoDataFrame: https://michelleful.github.io/code-blog/2015/04/27/osm-data/

Me doy cuenta de que esta es una pregunta antigua, pero para aprovechar la respuesta de Jeff G.

Si llega a esta página en busca de ayuda para armar un conjunto de herramientas de análisis geoespaciales en Python, le recomiendo este tutorial.

https://geohackweek.github.io/vector

Realmente se llena de vapor en la tercera sección.

Muestra cómo integrar

  1. GeoPandas
  2. PostGIS
  3. Folio
  4. rasterstats

Agregue scikit-learn, numpy y scipy y realmente puede lograr mucho. También puede obtener información de este tutorial nDarray