【问题标题】:Openlayers STContains, intersecting linesOpenlayers STContains,相交线
【发布时间】:2014-12-04 15:42:03
【问题描述】:

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

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

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

SpatialManager.ClipShape(subShape, projectShape);

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

if(projectShape.STContains(subShape).isFalse)

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

STContains 不会是真的,因为它们共享线路。

是否有办法检查多边形是否包含其他形状的百分比,或者是否包含共享线?

谢谢。

【问题讨论】:

    标签: c# openlayers spatial clipping


    【解决方案1】:

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

    几何 b 位于 a 的内部。另一个定义:“a‘包含’b当且仅当b没有点位于a的外部,并且b的内部至少有一个点位于a的内部

    Dimensionally Extended nine-Intersection Model 这个名字有点吓人,出于显而易见的原因,它被缩写为 DE-9IM,它解释了空间谓词的基本理论。

    【讨论】:

      猜你喜欢
      • 2015-11-13
      • 1970-01-01
      • 1970-01-01
      • 2012-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多