Update model
This commit is contained in:
parent
c5a66abb25
commit
529611b42c
|
@ -21,7 +21,12 @@ class Polygon(Base):
|
||||||
way_area = Column(Float)
|
way_area = Column(Float)
|
||||||
tags = Column(postgresql.HSTORE)
|
tags = Column(postgresql.HSTORE)
|
||||||
way = Column(Geometry("GEOMETRY", srid=4326, spatial_index=True), nullable=False)
|
way = Column(Geometry("GEOMETRY", srid=4326, spatial_index=True), nullable=False)
|
||||||
area = column_property(func.ST_Area(way))
|
area = column_property(func.ST_Area(way, False))
|
||||||
|
|
||||||
|
@property
|
||||||
|
def osm_url(self):
|
||||||
|
osm_type = "way" if self.osm_id > 0 else "relation"
|
||||||
|
return f"https://www.openstreetmap.org/{osm_type}/{abs(self.osm_id)}"
|
||||||
|
|
||||||
@hybrid_property
|
@hybrid_property
|
||||||
def area_in_sq_km(self):
|
def area_in_sq_km(self):
|
||||||
|
@ -30,8 +35,9 @@ class Polygon(Base):
|
||||||
@classmethod
|
@classmethod
|
||||||
def coords_within(cls, lat, lon):
|
def coords_within(cls, lat, lon):
|
||||||
point = func.ST_SetSRID(func.ST_MakePoint(lon, lat), 4326)
|
point = func.ST_SetSRID(func.ST_MakePoint(lon, lat), 4326)
|
||||||
return cls.query.filter(cls.admin_level.isnot(None),
|
return (cls.query.filter(cls.admin_level.isnot(None),
|
||||||
func.ST_Within(point, cls.way))
|
func.ST_Within(point, cls.way))
|
||||||
|
.order_by(cls.area))
|
||||||
|
|
||||||
class Scotland(Base):
|
class Scotland(Base):
|
||||||
__tablename__ = "scotland"
|
__tablename__ = "scotland"
|
||||||
|
|
Loading…
Reference in a new issue