Openlayers STContains,相交线

时间:2014-10-09 16:04:46

标签: c# openlayers spatial clipping

我有一个运行OpenLayers的应用程序,并遇到了一个有趣的问题。

我创建了一个名为Project的多边形。 然后我有多边形内的子项目。

第一次创建子项目时,我剪切子项目,使其位于项目内。

SpatialManager.ClipShape(subShape, projectShape);

当您去编辑项目时,我想确保您将子项目保留在项目中。

if(projectShape.STContains(subShape).isFalse)

剪辑/包含问题。剪切时,项目和子项目共享相同的边界线。

STContains不会是真的,因为他们共享线条。

无论如何检查多边形是否包含另一个形状的百分比,或者包含共享线?

感谢。

clipping

1 个答案:

答案 0 :(得分:2)

您正在寻找STIntersects,如果任何一个多边形与另一个多边形有任何共同点(包括边缘),则返回true。您可能还会发现STTouches有用,如果两个多边形接触,即使在单个点处也会返回,但在另一个内部没有任何内部点,这将返回true。 STContains并不适合您,因为多边形共享一个共同的边界,或者引用下面解释的DE-9IM:

  

几何b位于a的内部。另一个定义:" a'包含' b如果没有b点位于a的外部,并且b内部的至少一个点位于a的内部

有一些稍微可怕的名字Dimensionally Extended nine-Intersection Model,由于显而易见的原因缩写为DE-9IM,这解释了空间谓词的基本理论。