【问题标题】:GeoAlchemy2 store point and query resultsGeoAlchemy2 存储点和查询结果
【发布时间】:2013-11-10 20:21:38
【问题描述】:

GeoAlchemy2 上的文档似乎并不完整(与以前的版本相比)。

我有一个模型:

class AddressCode(Base):
    __tablename__ = 'address_codes'
    id = Column(Integer, primary_key=True)
    code = Column(Unicode(34))
    geometry = Column(Geometry('POINT'))

我想存储经纬度数据,我试图将其保存在上述模型中,例如

"51.42553,-0.666085"

这给了我错误:

"Parse error at position 9 within Geometry (the "," char")

任何人都能够阐明我在这里出错的地方吗?

关于这个主题,我将如何执行查询来说..

显示最近的 20 个用户:

class AddressCode(Base):
    __tablename__ = 'address_codes'
    id = Column(Integer, primary_key=True)
    name = Column(Unicode(34))
    geometry = Column(Geometry('POINT'))

类似的东西?

geom_var = "51.42553,-0.666085"
Session.query(User).filter(func.ST_DWithin, 20, geom_var).all()

【问题讨论】:

    标签: python sqlalchemy postgis geoalchemy


    【解决方案1】:

    在 GeoAlchemy 和 GeoAlchemy2 中,您需要以称为 WKT or Well-known text 的众所周知的文本格式或众所周知的二进制格式指定几何图形。对于某一点,语法是'POINT(X Y)',因此'POINT(-0.666085 51.42553)' 请注意,首先是经度,然后是纬度。

    shapely 模块包含用于处理关系数据库之外的几何图形的有用函数,以及 Python 几何图形类和 WKT、WKB 格式之间的轻松转换。

    【讨论】:

      【解决方案2】:

      你是这样做的:

      这个区域表定义为:

      regionTable = Table('region', metadata,
                      Column('region_id', Integer, Sequence('region_region_id_seq'), primary_key=True),
                      Column('type_cd', String(30)),
                      Column('region_nm', String(255)),
                      Column('geo_loc', Geography )
                      )
      

      如何查询:

      (给我当前位置 50 英里范围内的所有区域..)

      sqlstring = select([regionTable],
          func.ST_DWithin(
            regionTable.c.geo_loc,
            'POINT(-74.78886216922375 40.32829276931833)', 
            1609*50 ) )
      
      result = connection.execute(sqlstring)
      
      for row in result:
         print "region name:", row['region_nm']
      

      【讨论】:

        猜你喜欢
        • 2014-07-28
        • 2013-12-24
        • 2011-04-20
        • 2010-10-10
        • 1970-01-01
        • 2012-07-15
        • 2021-11-09
        • 1970-01-01
        相关资源
        最近更新 更多