空间运算符¶
此模块定义 Comparator 类用于几何和地理对象。这是空间运算符的位置,例如 && , &< ,已定义。空间运算符通常应用于几何图形的边界框。例如, geom1 && geom2 指示geom1的边界框是否与geom2的边界框相交。
实例¶
选择其边界框位于的边界框左侧的对象 POLYGON((-5 45,5 45,5 -45,-5 -45,-5 45)) ::
select([table]).where(table.c.geom.to_left(
'POLYGON((-5 45,5 45,5 -45,-5 -45,-5 45))'))
这个 << 和 >> 运算符有点特殊,因为它们有相应的Python运算符 (__lshift__ 和 __rshift__ ). 以上 SELECT 表达式可以这样重写:
select([table]).where(
table.c.geom << 'POLYGON((-5 45,5 45,5 -45,-5 -45,-5 45))')
使用ORM时也可以使用运算符。例如::
Session.query(Cls).filter(
Cls.geom << 'POLYGON((-5 45,5 45,5 -45,-5 -45,-5 45))')
现在有一些其他的例子 <#> 操作员。
选择最接近的十个对象 POINT(0 0) (典型的闭邻问题)::
select([table]).order_by(table.c.geom.distance_box('POINT(0 0)')).limit(10)
使用ORM::
Session.query(Cls).order_by(Cls.geom.distance_box('POINT(0 0)')).limit(10)
参考文献¶
- class geoalchemy2.comparator.BaseComparator(expr)[源代码]¶
基类:
sqlalchemy.sql.type_api.TypeEngine.Comparator自定义比较器基类。它增加了对使用这种比较器的列调用空间函数的能力。它还定义了映射到
Geometry,Geography和Raster柱。比较器由
geoalchemy2.types.Raster.- __weakref__¶
对象的弱引用列表(如果已定义)
- class geoalchemy2.comparator.Comparator(expr)[源代码]¶
基类:
geoalchemy2.comparator.BaseComparator自定义比较器类。用于
geoalchemy2.types.Geometry和geoalchemy2.types.Geography.这就是空间运算符喜欢的地方
<<和<->是有定义的。- __lshift__(other)[源代码]¶
这个
<<接线员。A的BBOX在B的左边,和to_left,所以:table.c.geom << 'POINT(1 2)'
与以下内容相同:
table.c.geom.to_left('POINT(1 2)')