在PostGIS中,大于世界一半的多边形被视为相反

Jak*_*ake 6 postgis geodjango geos

我正在使用GeoDjango和PostGIS,并尝试使用多边形从数据库中获取记录.

如果我定义一个大于地球面积一半的多边形,则假定我的多边形的"内部"是我打算作为"外部"的较小区域,并仅返回其外部的结果.

我可以使用这个较小的错误区域来排除结果.Polygon.area似乎知道我打算做什么,所以我可以用它来确定何时使我的搜索包含或排除.我觉得这个问题可能很常见,有没有更好的解决方法?

更新:如果180度经度在我的多边形内部,则根本不起作用.看来GEOS这次应该受到指责.这张图片显示了我认为的原因.绿色是我定义的多边形,红色是它似乎解释它的方式.地球上的多边形同样,这似乎是一个经常出现的问题,而且像GEOS这样的图书馆需要处理这个问题.有办法吗?

Jak*_*ake 6

好吧,没有答案.这就是我所做的.

因为GEOS不喜欢穿越第180个子午线的东西:
首先检查多边形是否穿过第180个子午线 - 如果是这样,沿着该线将其分成2个多边形.

因为PostGIS假定多边形尽可能小,所以不能使一个覆盖超过世界的一半,因此:
检查多边形或每个分割多边形是否覆盖世界的一半或更多 - 如果是这样,将它们分成两半.

根据结果​​构造MultiPolygon.