首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有GeoAlchemy示例代码的烧瓶

带有GeoAlchemy示例代码的烧瓶
EN

Stack Overflow用户
提问于 2010-11-01 22:08:59
回答 4查看 6.8K关注 0票数 10

有没有人能提供一些使用GeoAlchemy的Flask示例代码?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-19 08:32:10

使用SQLAlchemy 0.8、Flask-SQLAlchemy和Geoalchemy2:

代码语言:javascript
复制
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))

示例查询:

代码语言:javascript
复制
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并提取坐标):

代码语言:javascript
复制
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']
票数 22
EN

Stack Overflow用户

发布于 2011-03-14 00:41:05

如果您不局限于使用Flask,您可能想尝试一下MapFish,它基于Pylons并使用GeoAlchemy。

票数 1
EN

Stack Overflow用户

发布于 2012-01-31 02:15:36

您可以在Flask-SQLAlchemy中使用它,但也可以在普通的SQLAlchemy中使用它。只需将sample models from GeoAlchemy转换为Flask-SQLAlchemy。如下所示:

代码语言:javascript
复制
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))

我还没有测试代码,但它应该是一个公平的转录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4069595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档