Không phải là một giải pháp hoàn hảo nhưng bạn có thể sử dụng Trình tạo hình học để thêm một đường trực quan để thể hiện giao lộ. Sau đó, bạn có thể đặt điều này để chồng lấp tính năng dòng gốc.
Thêm một lớp biểu tượng mới bằng cách nhấp vào dấu cộng và chọn Geometry generator
loại lớp biểu tượng. Đặt loại Geoemtry thành LineString / MultiLineString
và sử dụng biểu thức sau:
intersection($geometry, geometry(get_feature( 'polygonLayer','fieldName','value')))
Bạn sẽ cần thêm chi tiết về đa giác cụ thể của mình trong đó:
polygonLayer
là tên của lớp đa giác của bạn
fieldName
là tên của lĩnh vực
value
là giá trị tính năng của đa giác cụ thể của bạn
Lưu ý rằng để tô màu đường trực quan, bạn có thể cần phải làm điều đó từ thuộc tính Draw effect :
Đây là kết quả (lưu ý rằng dòng trực quan không hoàn toàn trùng với dòng ban đầu nên tôi đã sửa đổi phần bù một chút):
Và không có đa giác:
Biên tập:
Nếu bạn muốn áp dụng điều này cho từng tính năng đường giao nhau với tính năng đa giác, hãy chuyển đến Trình chỉnh sửa chức năng và sử dụng chức năng sau (thay đổi tên của polygon example_2
để khớp với tên của lớp đa giác của bạn):
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def func(feature, parent):
polygon_layer = QgsMapLayerRegistry.instance().mapLayersByName( "polygon example_2" )[0]
feat_list = []
geoms = QgsGeometry.fromWkt('GEOMETRYCOLLECTION()')
for polygon_feat in polygon_layer.getFeatures():
if feature.geometry().intersects(polygon_feat.geometry()):
intersection = feature.geometry().intersection(polygon_feat.geometry())
feat_list.append(intersection)
for x in feat_list:
geoms = geoms.combine(x)
return geoms
Nhấp vào Tải, sau đó chuyển đến tab Biểu thức và nhập func()
. Hy vọng rằng kết quả sẽ giống như sau (sử dụng các thuộc tính kiểu tương tự được đề cập ở trên):