有没有人能提供一些使用GeoAlchemy的Flask示例代码?
发布于 2013-04-19 08:32:10
使用SQLAlchemy 0.8、Flask-SQLAlchemy和Geoalchemy2:
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))示例查询:
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()将结果转换为x和y坐标的一种方法(转换为GeoJSON并提取坐标):
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']发布于 2011-03-14 00:41:05
如果您不局限于使用Flask,您可能想尝试一下MapFish,它基于Pylons并使用GeoAlchemy。
发布于 2012-01-31 02:15:36
您可以在Flask-SQLAlchemy中使用它,但也可以在普通的SQLAlchemy中使用它。只需将sample models from GeoAlchemy转换为Flask-SQLAlchemy。如下所示:
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))我还没有测试代码,但它应该是一个公平的转录。
https://stackoverflow.com/questions/4069595
复制相似问题