Může někdo poskytnout jakékoli ukázkový kód pro láhev s GeoAlchemy?
Baňka s GeoAlchemy ukázkový kód
hlasů
6
4 odpovědí
hlasů 1
1
Pokud nejste omezeni na použití baňky, možná budete chtít dát MapFish vyzkoušet, který je založen na závěsníků a používá GeoAlchemy.
hlasů 1
1
Můžete jej použít s baňky-SQLAlchemy , ale můžete ho použít na běžný SQLAlchemy taky. Jen přeložit ukázkové modely z GeoAlchemy do baňky-SQLAlchemy. Něco takového:
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))
Já jsem nebyl testován kód, ale to by mělo být spravedlivé transkripce.
hlasů 0
0
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__)
hlasů 16
16

Pomocí SQLAlchemy 0,8, Flask-SQLAlchemy a 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))
Ukázkový dotaz:
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()
Jedním ze způsobů převodu výsledek souřadnice x a y (převést na GeoJSON a extrakt souřadnic):
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']