¿Alguien puede proporcionar un código de muestra para el Frasco con GeoAlquimia?Frasco con código de muestra GeoAlchemy
Respuesta
Usando SQLAlchemy 0,8, matraz de SQLAlchemy y Geoalchemy 2: consulta
from app import db
from geoalchemy2.types import Geometry
class Point(db.Model):
"""represents an x/y coordinate location."""
__tablename__ = 'point'
id = db.Column(db.Integer, primary_key=True)
geom = db.Column(Geometry(geometry_type='POINT', srid=4326))
muestra:
from geoalchemy2.elements import WKTElement
from app import models
def get_nearest(lat, lon):
# find the nearest point to the input coordinates
# convert the input coordinates to a WKT point and query for nearest point
pt = WKTElement('POINT({0} {1})'.format(lon, lat), srid=4326)
return models.Point.query.order_by(models.Point.geom.distance_box(pt)).first()
Una forma de convertir el resultado a coordenadas x e y (convertir en GeoJSON y extraer las coordenadas):
import geoalchemy2.functions as func
import json
from app import db
def point_geom_to_xy(pt):
# extract x and y coordinates from a point geometry
geom_json = json.loads(db.session.scalar(func.ST_AsGeoJSON(pt.geom)))
return geom_json['coordinates']
Si no está limitado a usar Flask, es posible que desee probar MapFish, que se basa en Pilones y utiliza GeoAlchemy.
Puede usarlo con Flask-SQLAlchemy, pero también puede usarlo con SQLAlchemy. Simplemente traduzca el sample models from GeoAlchemy a Flask-SQLAlchemy. Algo como esto:
class Spot(db.Model):
__tablename__ = 'spots'
id = db.Column(Integer, primary_key=True)
name = db.Column(Unicode, nullable=False)
height = db.Column(Integer)
created = db.Column(DateTime, default=datetime.now())
geom = db.GeometryColumn(Point(2))
No he probado el código, pero debe ser una transcripción justa.
Este código no funciona: te da el atributo 'AttributeError: 'SQLAlchemy' no tiene el atributo 'GeometryColumn'' – jsalonen
from myapp import db
from geoalchemy import GeometryColumn, Point
class FixXX(db.Model):
__tablename__ = 'fixXX'
fix_pk = db.Column(db.Integer, primary_key=True)
fix = db.Column(db.String)
geometry = GeometryColumn(Point(2, srid=4326))
GeometryDDL(FixXX.__table__)
- 1. pymongo con el frasco
- 2. frasco
- 3. Frasco: cómo crear código abort() personalizado?
- 4. Página que muestra el código de muestra
- 5. Frasco de construcción con maven-scala-plugin
- 6. WWDC 2010 Código de muestra
- 7. Frasco tubería rota con las peticiones
- 8. manifiesta de un frasco
- 9. ctrl clase clic en Eclipse muestra binaria/frasco en lugar de fuente
- 10. Frasco-marco: patrón MVC
- 11. Netbeans no muestra mi código
- 12. Frasco request.remote_addr es incorrecto en webfaction y no muestra IP de usuario real
- 13. Sphinx, reStructuredText muestra/oculta fragmentos de código
- 14. Widget StackView Código fuente de muestra
- 15. Necesito el código de muestra de MUMPS
- 16. d3.js & json - código de muestra simple?
- 17. Frasco, blue_print, current_app
- 18. Cómo ejecutar frasco con argumentos de línea de comandos
- 19. Código de muestra para crear pdf programáticamente
- 20. estructura y la forma de URL mensajes con el frasco
- 21. Cómo incluir archivos de texto con el Frasco Ejecutable
- 22. Como: Generar dinámicamente CSRF token en WTForms con el frasco
- 23. Frasco, CherryPy y contenido estático
- 24. Frasco archivo estático Cache-Control
- 25. Autenticación del Frasco usando LDAP
- 26. Frasco Error JSON Página personalizada
- 27. Frasco static_folder alojado en S3
- 28. Enrutamiento de ruta en el Frasco
- 29. Frasco ¿cómo se usa sqlalchemy declarativamente con init_db()?
- 30. Frasco - Error POST 405 Método no permitido
¿Para hacer qué en particular? –