Jak*_*ake 6 postgis geodjango geos
我正在使用GeoDjango和PostGIS,并尝试使用多边形从数据库中获取记录.
如果我定义一个大于地球面积一半的多边形,则假定我的多边形的"内部"是我打算作为"外部"的较小区域,并仅返回其外部的结果.
我可以使用这个较小的错误区域来排除结果.Polygon.area似乎知道我打算做什么,所以我可以用它来确定何时使我的搜索包含或排除.我觉得这个问题可能很常见,有没有更好的解决方法?
更新:如果180度经度在我的多边形内部,则根本不起作用.看来GEOS这次应该受到指责.这张图片显示了我认为的原因.绿色是我定义的多边形,红色是它似乎解释它的方式.
同样,这似乎是一个经常出现的问题,而且像GEOS这样的图书馆需要处理这个问题.有办法吗?
好吧,没有答案.这就是我所做的.
因为GEOS不喜欢穿越第180个子午线的东西:
首先检查多边形是否穿过第180个子午线 - 如果是这样,沿着该线将其分成2个多边形.
因为PostGIS假定多边形尽可能小,所以不能使一个覆盖超过世界的一半,因此:
检查多边形或每个分割多边形是否覆盖世界的一半或更多 - 如果是这样,将它们分成两半.
根据结果构造MultiPolygon.