空间运算符¶
此模块定义 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)')