上下文查询中的最小距离函数

960
4
06-21-2021 04:48 am
Kevin_Z
通过
新贡献者II

嗨,所有

尝试使用label函数的最小距离来运行setbackperedge,当与长度较短的标记2d多边形相比时,该函数工作得很好,只返回一条边。当与边长相同或更长的多边形进行比较时,它返回3条边。有什么解决办法吗?

版本“2020.1”

distA =
case minimumDistance(inter, "Road") < 1: 0.5
case minimumDistance(inter, "Side") < 1.5: 2

Else: 0


@StartRule

测试- - - >

setbackPerEdge(distA){所有=草坪|剩余=构建}

构建- - - >

挤出(3)
颜色(1,0,- 1)
X。

@StartRule

路- - - >
颜色(0,1,1)
标签(“道路”)
X。

@StartRule

边- - - >
颜色(1 1 0)
标签(“一方”)
X。



草坪上- - - >
颜色(“# b3c989”)
X。

@CherylLau@Anonymous用户@DevinLavigne

0荣誉
4回复
通过 匿名用户
不适用

我试图抓住你的目标和术语,以便我可以提供帮助,(我把它的测试=包裹,道路=道路,边=相邻的包裹或“边街”?),你想要根据最小遮挡距离的上下文设置包裹的挫折?

如果我不得不快速猜测一下你的代码,条件语句(case/else)只运行一次,它需要第一个“case”来满足你设置的条件(到道路的最小距离是1米)。您可以构造代码,以确保它为road和side分别运行一次。

我的另一个想法是,你的问题表明你正在搜索形状边缘的长度,这是一种不同类型的测试,而不是minimumDistance闭塞测试。您可以在“几何体”上运行case语句。Du”或“scope”。Sx”(例如)来测试您的情况。

0荣誉
CherylLau
通过 亚博搜索yabovip28点com
亚博搜索yabovip28点com

我不太明白你写的是什么。

然而,从图片来看,我猜你希望右边的洋红色建筑只在青色道路所在的一侧有一个挫折(让我们称之为前沿),而在任何其他边缘上都没有任何挫折(让我们称之为侧面和后边缘)。图片显示在边缘有一些折边,我想你们可能不希望这些折边出现在那里。

在侧边出现挫折的原因是,对于每个侧边,到青色道路形状的最小距离小于阈值。这是因为minimumDistance在整个世界坐标系中使用欧几里得距离(意味着,所有3个轴/方向xyz都涉及到)。在3D空间中,一个侧面边缘的范围仍然非常接近青色道路的范围;瞄准镜之间的距离小于1米的阈值。

你可能想要的是限制minimumDistance仅沿边缘法线方向寻找边缘前面的形状。不幸的是,我们没有方向参数minimumDistance但是,对不起,我不知道你能用什么解决办法。

0荣誉
Kevin_Z
通过
新贡献者II

欢迎回来谢丽尔,谢谢你的解释。
也许让我换个说法来解释这个问题。我要做的就是用'setbackperedge'函数,无需手动激活“计算边缘属性”,也无需手动更改属性数组。特别是当数据集涉及的多边形数量超过十万个时,人工操作数据将无法达到使用城市引擎的目的。因此,我的假设是使用最小距离或触摸来识别接触或最接近下一个多边形的边缘将相应地后退。

所以我的工作围绕的问题是,我可以使用setbackperedge的数据与当前的CGA功能,而不涉及任何手动操作的数据?

0荣誉
通过 匿名用户
不适用

在一些留言之后@Kevin_Z我们确定了增加minimumDistance功能的需求,正如Cheryl所推断的那样。我创建了一个小图像,我认为可以增强minimumDistance的目的,凯文正在描述和显示在他的图像中。这个版本的minimumDistance与GIS数据相结合,将为分区和包裹数据研究创造一些伟大的新能力。然而,虽然我相信使用minimumDistance定义垂直于一条边将是功能的升级,但我知道它仍然不是这个用例的完整解决方案。

minimumDistance_Idea.PNG

0荣誉