为什么在使用v.generalize时GRASS消除多边形?


9

我在尝试使用v.generalize简化大小和结构与美国县或州相似的多边形时遇到了一个难题。通常,在对它们运行简化或平滑方法后,它们会从数据集中丢失多边形。让我麻烦的是,这种行为似乎没有任何一致的模式。在某些情况下,应用于不同数据集的同一组命令会导致完全不同的结果。结果,我无法开发可重复的工作流程,并且很不情愿地开始寻找其他可以保留拓扑的简化工具。这是一个例子:

# LOAD AND CLEAN
v.in.ogr dsn=counties.shp output=county
v.build.polylines input=county output=county_polylines
v.clean input=county_polylines output=county_clean tool=bpol,rmdupl type=boundary

# SMOOTH AND GENERALIZE
v.generalize input=county_clean output=county_smooth method=sliding_averaging look_ahead=7 slide=1
v.generalize input=county_smooth output=county_general method=douglas threshold=.005

每个v.generalize步骤都会导致某些多边形消失。我想了解为什么会这样。是由于功能加载到内存不足吗?我的参数“紧密”是否足以使要素被排除,因为它们已满足某种几何标准?(请注意,我失去了一些非常大的功能。)放置的功能的拓扑是否存在问题,导致它们被擦除?与最后一个问题有关,我认为最初应该执行的build.polylines和clean操作应解决此问题,但我不确定,似乎找不到解决此问题的好方法。有吗

欣赏人们可以提供的任何见解,尤其是基于v.generalize工具的个人经验的见解。

罗杰


看来您的数据可能已经滞后。这足以丢失.005阈值的数据。您可以验证您使用的是平面CS吗?
布莱德·尼索姆

我实际上对此很纳闷,在执行以上操作之前,已经将其重新投影为Albers等面积投影。以下是投影参数:USER:100002(+ proj = aea + lat_1 = 20 + lat_2 = -23 + lat_0 = 0 + lon_0 = 25 + x_0 = 0 + y_0 = 0 + ellps = WGS84 + units = m + no_defs) 。仍然有同样的问题。
lagerratrobe 2011年

我想知道为什么将多边形转换为折线。为什么不直接简化多边形有特定的原因吗?
黑暗

好的,我取出了v.build.polylines部分,因此“ county_clean”现在是一个多边形图层。仍然失去了很多领域。最初,我曾以为它可能使简化变得容易,但是由于v.clean中的“ bpol”也破坏了多边形,所以也许没关系。
lagerratrobe 2011年

1
只是一个愚蠢的问题。您确定要使用v.generalize而不是v.clean来丢失数据吗?
simo

Answers:


4

GRASS开发团队的答复。

“ [在v 6.4.1中],多边形的消失是由于删除了违反矢量拓扑的平滑边界,此后所有拓扑上不正确的边界都被删除。现在,[6.4.2]中的边界只有在修改不进行时才被平滑/简化违反矢量拓扑。”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.