postgis测试
cubicweb-postgis的Python项目详细描述
摘要
添加类型和函数以处理存储在 postgis数据库(即具有postgresql扩展名的postgis数据库 已启用)。
当前多维数据集仅支持postgis的2.0和更高版本。
在数据模型模式中定义属性时,它引入了一种新类型:
- 一个Geometry类型。另外,您应该给出以下元素
以及
Geometry
属性:- geom_type。此属性将 接受,例如POINT、MULTILINESTRING或POLYGON,
- srid。几何坐标将存在的空间参考系 在。这是一个整数和外键,必须与srid键匹配 在spatial_ref_sys表中。大多数情况下,它将与 空间系统epsg代码,
- coord_dimension。几何图形使用的维数。默认值 到2。
- 一个Geography类型(参见description)。
然后您还可以使用像ST_INTERSECTS,^{tt12}这样的几何函数$ 或者ST_UNION来处理这个新类型。
有关postgis的参考文档,请参见Postgis manual。
示例
在schema.py中,可以声明一个City实体,如下所示。
classCity(EntityType):name=String(required=True)geometry=Geometry(geom_type='POLYGON',srid=4326)
然后您可以进行如下查询:
# get all cities in a given bounding boxrql('City C WHERE C geometry G HAVING(ST_WITHIN(G, ST_MAKEENVELOPE(''%(left)s, %(bottom)s, %(right)s, %(top)s, 4326)) = TRUE)',{'left':2.2,'right':2.6,'top':49,'bottom':48})# get all cities at a given distance from a point, sorted by distancerql('Any C, ST_DISTANCE(G, ST_SETSRID(ST_MAKEPOINT(2.2, 48.4), 4326)) ''ORDERBY 5 WHERE ''C geometry G HAVING ('' ST_DWITHIN(G, ST_SETSRID(ST_MAKEPOINT(2.2, 48.4), 4326), 0.1) = TRUE)')