GeoAlchemy Sample Bulb Code

Can someone provide some sample code for Flask with GeoAlchemy?

+6
python flask
source share
4 answers

Using SQLAlchemy 0.8, Flask-SQLAlchemy and Geoalchemy 2:

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)) 

Request example:

 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() 

One way to convert the result to x and y coordinates (convert to GeoJSON and extract coordinates):

 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'] 
+15
source share

If you are not limited to using Flask, you can give MapFish a try, which is based on pylons and uses GeoAlchemy.

+1
source share

You can use it with Flask-SQLAlchemy , but you can also use it with simple SQLAlchemy. Just translate sample models from GeoAlchemy to Flask-SQLAlchemy. Something like that:

 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)) 

I have not tested the code, but it should be fair transcription.

+1
source share
 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__) 
0
source share

All Articles