空间运算符

此模块定义 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

自定义比较器基类。它增加了对使用这种比较器的列调用空间函数的能力。它还定义了映射到 GeometryGeographyRaster 柱。

比较器由 geoalchemy2.types.Raster .

__weakref__

对象的弱引用列表(如果已定义)

intersects(other)[源代码]

这个 && 接线员。A的BBOX和B的相交。

overlaps_or_to_left(other)[源代码]

这个 &< 接线员。A的BBOX重叠或位于B的左侧。

overlaps_or_to_right(other)[源代码]

这个 &> 接线员。A的BBOX重叠或在B的右侧。

class geoalchemy2.comparator.Comparator(expr)[源代码]

基类:geoalchemy2.comparator.BaseComparator

自定义比较器类。用于 geoalchemy2.types.Geometrygeoalchemy2.types.Geography .

这就是空间运算符喜欢的地方 <<<-> 是有定义的。

__lshift__(other)[源代码]

这个 << 接线员。A的BBOX在B的左边,和 to_left ,所以:

table.c.geom << 'POINT(1 2)'

与以下内容相同:

table.c.geom.to_left('POINT(1 2)')
__rshift__(other)[源代码]

这个 >> 接线员。A的BBOX在B的左边,和 to_ 对,所以:

table.c.geom >> 'POINT(1 2)'

与以下内容相同:

table.c.geom.to_right('POINT(1 2)')
above(other)[源代码]

这个 |>> 接线员。A的BBOX严格高于B。

below(other)[源代码]

这个 <<| 接线员。A的BBOX严格低于B。

contained(other)[源代码]

这个 @ 接线员。A的BBOX包含在B的BBOX中。

contains(other, **kw)[源代码]

这个 ~ 接线员。A的BBOX包含B的BBOX。

distance_box(other)[源代码]

这个 <#> 接线员。两个几何图形的边界框之间的距离。

distance_centroid(other)[源代码]

这个 <-> 接线员。两点之间的距离。

intersects_nd(other)[源代码]

这个 &&& 如果几何A的n维边界框与几何B的n维边界框相交,则运算符返回TRUE。

overlaps_or_above(other)[源代码]

这个 |&> 接线员。A的BBOX重叠或高于B。

overlaps_or_below(other)[源代码]

这个 &<| 接线员。A的BBOX重叠或低于B。

same(other)[源代码]

这个 ~= 接线员。A的BBOX和B的一样。

to_left(other)[源代码]

这个 << 接线员。严格地说,A的BBOX在B的左边。

to_right(other)[源代码]

这个 >> 接线员。严格来说,A的BBOX在B的右边。