0
OsmAdminUnit (다각형 지오메트리)의 인스턴스가 OsmAdminAgg 인스턴스로 그룹화 된 다 대다 관계가 있습니다.GeoAlchemy2로 ST_Union을 계산하는 방법은 무엇입니까?
모델 정의는 본질적으로 :
class OsmAdminUnit(db.Model):
__tablename__ = 'osm_admin'
id = db.Column(db.Integer, primary_key=True)
geometry = db.Column(Geometry(
geometry_type='GEOMETRY',
srid=3857), nullable=False)
agg_units = db.relationship('OsmAdminAgg',
secondary=aggregations,
backref=db.backref('osm_admin', lazy='dynamic'))
class OsmAdminAgg(db.Model):
__tablename__ = 'admin_agg'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), unique=True, nullable=False)
것은 이제 내가 무엇을 할 고군분투하는 GeoAlchemy에서 ST_Union은을 적용하여 합병 polgyons을 특정 OsmAdminAgg에 속하는 OsmAdminUnits를 선택하고 받고 있습니다. ID = 1 개 작품과 관리 AGG에 속하는 모든 관리 단위를 선택
:
units = OsmAdminUnit.query.filter(OsmAdminUnit.agg_units.any(id=1)).all()
그러나 나는 그 결과에 ST_Union은 어떻게 적용 할 수 있는지하지 않습니다. 내 접근 방식은 지금까지이었다
union = db.session.query(
OsmAdminUnit.geometry.ST_Union().ST_AsGeoJSON().label('agg_union')
).filter(OsmAdminUnit.agg_units.any(id=1)).subquery()
그래서 어떻게 이러한 형상의 결합을 얻고, GeoJSON로받을 수 있나요?
Btw, 나는 Flask 위에 SQLAlchemy, Flask-SQLAlchemy, Geoalchemy2를 사용하여 이것을 구현할 것이다.