10 votos

La interacción entre Openlayers y Python

Tengo un openlayers sitio web como este uno que da al usuario la capacidad de dibujar polígonos y, a continuación, crea un archivo GeoJSON. Quiero proceso de este GeoJSON con una secuencia de comandos de python. La secuencia de comandos de python devuelve al final de una cadena que debe ser devuelto a la página web y se muestra como un cuadro de información.

¿Qué tipo de marcos/apps/pasos debo buscar en a cabo este proyecto?

6voto

Antonio Haley Puntos 2588

Pablo de la sugerencia de los cofres (http://flask.pocoo.org/). A menos que tengas otros no mencionados requisitos, Django es una exageración.

El uso de jQuery.post para enviar su GeoJSON cadena a su Frasco de la aplicación, donde se decodificar mediante json.las cargas. Bien formada (https://pypi.python.org/pypi/Shapelyes mucho más sencillo de usar que OGR s enlaces Python y tiene 2 funciones dedicado a serializar GeoJSON, por lo que el uso que operan en su GeoJSON geometría. Dicen que sólo quieren "limpiar" las geometrías:

import json
from shapely.geometry import mapping, shape

# 'data' is a GeoJSON string.
geom = shape(json.loads(data))

# The 0 buffer cleaning trick.
cleaned = geom.buffer(0.0)

return json.dumps(mapping(cleaned))

En jQuery.post del éxito de devolución de llamada, se obtiene la devolución GeoJSON y hacer lo que quieras: mostrar un mensaje, vuelva a dibujar la función, lo que sea.

5voto

Pablo Puntos 6414

Servidor: Usted necesita un marco de trabajo en el lado del servidor, no son buenas python opciones: Django, Frasco, Botella, webpy. Ese marco recibirá un (ajax) el proceso de solicitud de la GeoJson y devuelve la cadena.
Después de que la información entra en el marco de que ahora son "python" y puede utilizar la herramienta de ustedes preferencia a leer y trabajar con el GeoJSON, que podría ser, por ejemplo, bien formada, o de Osgeo OGR enlaces Python. Si usted elige Django, que ya vienen con la geometría de los ayudantes - GeoDjango.

Cliente: En el lado del cliente, usted necesita algo que hacer los llanos de realizar la solicitud, la recepción de la respuesta y muestra el cuadro de información más fácil. Para eso puedes usar marcos/herramientas como ExtJS, Jquery interfaz de usuario (UI), Dojo, KendoUI

Personalmente yo uso una combinación de Django + ExtJS para lograr este tipo de cosas. Es una carga pesada combinación, me explico, no tiene mucho más recursos que usted necesita. Pero es tan fácil de usar y está muy bien documentado que yo no recomendaría otra cosa para empezar. Después de hacer el tutorial básico de ambos (Django, Extjs) usted tiene información suficiente para realizar la tarea indicada en la pregunta. Más tarde puede probar otras opciones.

Por cierto, Extjs si gratuito sólo para los proyectos de código abierto, que tome en cuenta.

Btw2, para ejecutar python marco en el servidor necesitará un servidor web con wsgi. Mi opción es Nginx+uwsgi. Echa un vistazo al implementar la sección de la documentación de django.

1voto

pix0r Puntos 17854

Para la geometría de la representación en el lado del cliente,OpenLayers tiene la capacidad para leer/escribir datos en designada formato y proyección que se puede hacer a través de OpenLayers.Clase de formato como se describe aquí.Sugiero GeoJSON formato de vector de operaciones como esta.

En el ejemplo de enlace,la geometría es leer,su aplicación debe tomar característica/vector en consideración

Del Lado del Servidor,Como Pablo sugirió,hay algunos enlaces para django framework para python.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X