当用户点击地图时,我试图在谷歌地图上绘制存储的多边形点。我使用postgres数据库。我成功地将多边形存储到DB中。当我尝试自动绘制多边形点时,我得到一个递归错误。这是我的代码
class drawPolygon(Base):
__tablename__ = "tbl_data_area"
id = Column(Integer, nullable=False, primary_key=True)
area = Column(Geometry('Polygon'))
name = Column( Text )
_poly = None
def getPoly(self):
if not self._poly:
self._poly = to_shape(self.area)//i get error here
return self._poly
def getAreaPoints(self):
return self.getPoly().area
area = property(getAreaPoints)
我不知道self.area有什么不对。当self._poly = to_shape(self.area)行执行时,我得到此错误RuntimeError:调用Python对象时超出了最大递归深度。我很震惊。任何人都可以帮忙。
答案 0 :(得分:1)
您同时拥有一个名为area
的列和属性:
area = Column(Geometry('Polygon'))
# ...
def getAreaPoints(self):
return self.getPoly().area
area = property(getAreaPoints)
后者取代了前者。因此,self.getPoly()
在访问self.area
时会使用属性,并且该属性会再次调用self.getPoly()
。
如果要使用getPoly()
方法中的列,请重命名列或属性。