我在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地球中,您将在该kml中看到的是一个标记包裹的平行四边形,其区域(多边形)明显鞍我创建的参数多边形的外环搜索下。沿着这些看不见的线条有如此多的包裹以这种清晰,独特的形状,在形状中间没有别针的事实清楚地表明搜索结果仅在包裹多边形与外边缘的重叠处(LinearRing) )搜索多边形。
根据我重新阅读st_overlaps
的文档,我对这里的问题感到困惑。
这是查看kmz导出的链接。 (在导出之前转换为地理坐标)。您可以在浏览器中查看它。搜索多边形本身不包括在内,但很容易看出它的外环在哪里 https://docs.google.com/file/d/0B5inC0VAuhH1TXdTbWQ2RngxZk0/edit?usp=sharing
答案 0 :(得分:1)
我认为它表现得像预期的那样。 St_overlaps将提供实际上彼此叠加的功能。如果您想要多边形内的所有要素,请尝试ST_Intersects
。