PostGIS 的 st_overlaps 方法仅返回与构成我正在搜索的多边形外部的线性环重叠的结果



我在ruby/rails上使用PostGIS,并创建了一个简单的长方体多边形,我希望在其下搜索一个县的地块。st_overlaps工具以前也起过作用,这次也起了作用。

所以我创建了这个多边形来搜索它下面的包裹(事实证明是多个多边形)

factory = RGeo::Cartesian.factory
coords = [[1554780, 1101102], [1561921, 1062647], [1634713, 1097531], [1630867, 1140657]]
points = coords.map { |pair| RGeo::WKRep::WKTParser.new.parse("POINT (#{pair.first} #{pair.last})") }
ring = factory.linear_ring(points)
polygon = factory.polygon(ring)

运行活动记录调用后:

Parcel.where{st_overlaps(:parcel_multipolygon, polygon)}

我得到157个结果。远低于预期。我使用自己的自定义脚本导出了一个kml文件。我将很快上传以供查看。

一旦加载到Google Earth中,您将在该kml中看到一个平行四边形的引脚标记地块,其区域(多边形)明显地覆盖了我创建的用于搜索的参数多边形的外圈。沿着这些不可见的线,有太多的地块处于这样一个清晰、独特的形状,形状中间没有引脚这一事实清楚地表明,搜索结果仅位于地块多边形与搜索多边形的外部边缘(LinearRing)的重叠处。

根据我对st_overlaps文档的重读,我对这里的问题感到困惑。

这里有一个查看kmz导出的链接。(导出前将坐标转换为地理坐标)。您可以在浏览器中查看它。搜索多边形本身不包括在内,但很容易看到它的外环在哪里https://docs.google.com/file/d/0B5inC0VAuhH1TXdTbWQ2RngxZk0/edit?usp=sharing

我认为它的行为符合预期。St_overlaps将提供实际上位于彼此之上的功能。如果希望多边形中的所有特征都在其中,请尝试ST_Intersects

最新更新