使用QGIS在地图范围之外显示生成的线吗?


12

我使用QGIS几何生成器绘制了OD流图,使用以下表达式:

make_line( centroid( $geometry ),
centroid( geometry( get_feature( 'Layer2', 'Attribute1', attribute(
           $currentfeature, 'Attribute2') ) ) ) )

我一切都很好,根据属性定义线条的宽度。

但是,当我缩放到“集线器”时,链接到地图画布之外的地方的线不会显示。我猜是因为这些功能不应该出现在地图上。

我试图取消选中“几何图形生成器”和“线”级别中高级菜单中的“将功能部件扩展到画布范围”选项,但是仍然没有出现。

在集线器上放大时

放开时

我希望所有行都显示出来,即使在集线器上放大也是如此。


这将无济于事...但是在Underdark的流映射方法中我遇到了同样的问题。这一定是关于渲染密集几何体的方式的事。。。唯一的建议就是使用局部级别贴图的属性宽度...使宽度更小?
安德鲁·泰斯

也许您可以上传数据(shp ...),以便能够复制您的步骤并尝试获得答案。
塞萨尔Arquero

1
Shapefile来自此处:IGNINSEE
mamouthautapis

如果仅在两条线的两端都与地图范围接近的情况下显示线,则对线进行分段可能是使它出现在地图上的一种技巧。草工具“ v.split.length”也许可以完成这项工作。
朱利安(Julian)

1
这是我遇到的同样的问题吗(如果可以,这是一种理解此问题的简单方法-如果不是,请忽略我):我想显示一个点数据集,其中整个生成的点集向东偏移300公里,向东偏移600公里与实际点相比向北。它有效-但只有在缩小以使原始点在地图画布内时才起作用。缩放到一组生成的点(在画布外移动实际点位置)后,生成的点就会消失。(QGIS 2.14)
Rostranimin

Answers:


2

这里的问题是,没有实际数据说“这里有一行”。您的表达式是“图层样式”的一部分,并且仅在渲染两个适用点时才在渲染过程中遇到。

尝试使用“ 距离最近的中心距离”工具,该工具位于矢量分析工具下的处理工具箱中。我注意到您正在为辐条选择特定的多边形,并根据其他属性设置线条的样式。这是可能的,但是您需要做一些准备工作。幸运的是,选择多边形输入后,该工具会自动使用质心。

  1. 向量选择工具 > 按属性提取
    • 输入层:“ LAYER_1”
    • 选择属性:“ ATTRIBUTE_1”
    • 运算子:=
    • 值:“参考轮毂面的值”
    • 提取(属性):“ HUB”

  2. 向量选择工具 > 按属性提取
    • 输入层:“ LAYER_1”
    • 选择属性:“ ATTRIBUTE_2”
    • 操作员:根据需要选择
    • 值:“涉及辐条面的值”
    • 提取(属性):“ SPOKES”

  3. 向量分析工具 > 到最近的中心点的距离
    • 源点层:“ SPOKES”
    • 目标中心层:“ HUB”
    • 集线器层名称属性:如果在输入层中指定了多个集线器,则根据所选属性在输出中创建“集线器名称”字段
    • 输出形状类型:线到集线器
    • 测量单位:米
    • 轮毂距离:“ OUTPUT_LAYER_NAME”

结果输出保留了“ SPOKES”层输入的所有属性,因此线条样式所需的属性仍将存在。作为其自己的矢量层,无论任何端点的可见性如何,这些线在所有缩放级别都将保持可见。

如果您对Graphical Modeler感到满意,甚至可以将这些步骤构建到单个过程中,以免不必要的图层使工作空间混乱。


3

找到以下解决方法:使用其他虚拟层代替几何图形生成器来显示线。

虚拟层的定义:

select m.FID, make_line(.....) as geometry from my_layer m

(原始几何可使用来引用m.geometry

为确保编辑my_layer时虚拟层刷新,请转至图层属性| 依赖项,并确保选中了my_layer(默认为灰色)。

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.