作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一张包含经纬度的表格,我不想存储几何图形。相反,我存储经纬度。
如何使用位置表达式创建基于点的查询?基本上它应该返回点。应该将其转换为 SQL 表达式,例如“.....ST_Point(home.latitude, home.longitude).....”
geoalchemy 中没有 func.ST_Point 吗?还是我错过了什么?如果我不写表达式显然我得到
"sqlalchemy.exc.InternalError: (InternalError) parse error - invalid geometry
HINT: "POINT(Ve" <-- parse error at position 8 within geometry"
代码:
class Home(Base):
__tablename__ = 'vehicle_path'
id = Column(BigInteger, primary_key=True)
latitude = Column(Float)
longitude = Column(Float)
@hybrid_property
def position(self):
return WKTElement(
''.join(['POINT(', str(self.longitude),' ', str(self.latitude), ')']), 4326)
@position.expression
def position(cls):
return <???what to return???>
我正在使用 sqlalchemy、Geoalchmey2 和 postgis、postgres、 Pyramid 。
最佳答案
听起来您正在寻找 WKTElement http://geoalchemy-2.readthedocs.org/en/latest/elements.html#geoalchemy2.elements.WKTElement Postgis 中有一个 ST_MakePoint(x,y) 函数,但在 Geoalchemy 中似乎没有。有趣的是,您为什么要存储纬度和经度而不是几何图形(或 Point 在您的情况下)。您可以使用 ST_X(geom)、ST_Y(geom) 轻松地从几何中恢复纬度和经度,但更重要的是,您可以在几何列上放置一个空间索引,这比两个单独的非空间列的性能要好得多一种空间查询。
关于postgresql - 如何为点几何创建地质炼金术表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23952388/
我是一名优秀的程序员,十分优秀!