我使用PostGIS / GeoServer / OpenLayers作为堆栈,但是任何开源解决方案都是可以接受的。
#1 楼
如果您想了解更多有关该领域的知识,则将问题称为制图位移及其制图一般化的一个方面。几篇文章讨论了位移和解决该问题的方法: />
巴德,马蒂亚斯。 2001年。能量
特征最小化方法
地图中的位移
归纳。
Steiniger,S Tefan S和S Iegfried
M Eier。蛇:一种在地图上平滑线条和置换线条的技术
概括:1-11。
Ware,Mark J和Christopher B
琼斯。 1998年。
使用迭代方法改进地图通用化中的冲突解决方法。 GeoInformatica 2,编号。 4:
383-407 +。
评论
“移位”!那是我想记住的另一个术语。我们在FME中提供了一个工具(抱歉-不是开源的),该工具“使用尼克森位移算法的变体来解决特征之间的邻近冲突”-那么尼克森的Google也许会看到发生了什么?
–马克·爱尔兰
2010年8月26日在17:18
Scholar.google.com/…抛出了指向原始文章的链接(薪酬微薄),很多人都在引用它。一些相关文章是免费的,看起来很有趣。
–伊恩·特顿♦
2010年8月26日在17:26
#2 楼
这个问题是制图综合中非常典型的问题。为此,存在自动化的方法,但尚无实现方法。 )。以下是关于道路数据的梁算法的一些结果:之前:
之后:
另请参阅本文和此演示文稿,它们解释了如何进行此转换。 。见这里。
评论
如果两个线段(母线)的几何形状完全相同,这是否可行?
– Underdark♦
2010年8月31日上午10:15
它适用于过于封闭的线,对于完全重叠的线,效果不佳。需要进行调整。
–朱利安
2010年8月31日,11:29
#3 楼
我不知道解决方案,但我认为您要寻找的术语是“冲突解决”,这是地图泛化的主题。 Google搜索“地图泛化冲突”显示了一些有趣的信息-但我不知道有很多实际用途。#4 楼
在当前的实现中,通常可以找到“偏移”或“错位”。使用当前的堆栈,自动实现平行线似乎有点困难:Geoserver的SLD几何转换功能“偏移”似乎不等于您可以在UMN Mapserver地图文件中指定“偏移”。
PostGIS不提供平行线-默认情况下-也不提供。 (请参阅相关问题:如何在PostGIS中创建单侧缓冲区或平行线?)
我不确定是否可以用OpenLayers JavaScript达到令人满意的效果。
总结一下up:我知道的最简单的方法是使用UMN Mapserver和那里的Offset值。 Mapfile的样式示例:
STYLE
SYMBOL 7
OUTLINECOLOR 160 160 160
SIZE 5
OFFSET 2 -99 # <-- This will offset the line to the right.
ANTIALIAS FALSE
END # STYLE
#5 楼
如果要绘制重叠的线层,则可以使用多种方法让查看者查看所有线。在底部。不透明度/透明度-您可以使各个线层部分不透明,从而可以“透视”各个层。
偏移-您可以将代表实际线要素的线符号偏移到线的实际几何图形的一侧。各个层可以在不同方向上以不同的量偏移,以允许看到所有层。
线可以由一系列点符号表示,这些点符号之间具有定义的间隙。通过更改符号,符号颜色,符号大小以及不同线层之间的间距,应该使每个单独的线层都可以区分。
我不使用GeoServer,但我知道MapServer具有功能来完成所有这些事情。 GeoServer可能也是如此。
评论
听起来我们想要#3,但仅适用于重叠的功能。那可能吗?
–mwalker
2010年8月26日在16:06
MapServer和其他Web地图服务器以及GIS可以解决标签的冲突,但是我不知道有什么功能可以让您即时进行此操作。当然,如果您的数据是相当静态的,则可以对数据进行预处理,以识别来自不同图层的线相交(或在公差范围内)的位置,并基于此对数据进行分类。然后,您的地图渲染引擎可以根据数据中的属性应用“位移”符号系统。
– DavidF
10年8月26日在17:50
评论
地铁也有同样的问题。您找到/实施了可接受的解决方案吗?抱歉不行。客户没有优先考虑此问题,我们进行了相当讨厌的修改以防止重叠。