một nhãn cho đường hai làn (osm, qgis, postgis)


9

Tôi đã gắn nhãn lớp osm-lines-Post (PostGIS) của mình bằng các ký hiệu cho đường chính và đường cao tốc. Mặc dù các ký hiệu cho các đường chính được đặt tốt - với khoảng cách vừa đủ giữa mỗi đường - đường cao tốc hai làn được dán nhãn một nhãn trên mỗi làn (như bạn có thể thấy trong hình).

Có thể, để đặt một cái gì đó giống như bán kính từ mỗi nhãn, trong phạm vi không có nhãn nào khác cùng loại có thể được đặt không? Hay tôi chỉ có thể nói: dán nhãn một làn đường hai làn?

Tôi đang sử dụng qgis. Dữ liệu OSM được nhập vào PostGIS với osm2pgsql.

nhập mô tả hình ảnh ở đây

EDIT: Ảnh chụp màn hình mới này hiển thị chi tiết hơn:

nhập mô tả hình ảnh ở đây

Câu trả lời:


5

Để chỉ gắn nhãn một làn đường hai làn tôi đang sử dụng biểu thức:

 angle_at_vertex($geometry,1) <= 180

và sử dụng nó như bộ lọc. Điều này hoạt động vì trong OSM, mỗi làn được vẽ theo hướng của chúng.

Trong ví dụ dưới đây, tôi đang sử dụng biểu thức angle_at_vertex($geometry,1)dưới dạng nhãn và trong hình thứ hai, biểu thức angle_at_vertex($geometry,1) <= 180là bộ lọc.

Trước:

nhập mô tả hình ảnh ở đây

Sau:

nhập mô tả hình ảnh ở đây

Cài đặt :

nhập mô tả hình ảnh ở đây


Bây giờ đó là một mẹo nhỏ thông minh. +1 cũng cho tệp QML.
Geozelot

2

Tôi không biết lược đồ của các bảng OSM, nhưng bạn đã yêu cầu một truy vấn như thế này:

DELETE FROM labels WHERE label_id  IN (
    SELECT label_id_2 FROM (
        SELECT a.label_id AS label_id_1, b.label_id AS label_id_2 
        FROM labels AS a, labels AS b WHERE STDWithin(a.the_geom,b.the_geom, 0.001) and a.street = b.street and a.label_id != b.label_id
    )
)

Điều này có thể hoạt động nhưng sẽ tốt hơn nếu bạn có id cho cùng một nhãn cho các hướng khác nhau và sau đó truy vấn này sẽ hoạt động 100%:

DELETE FROM labels WHERE label_id  IN (
    SELECT label_id_2 FROM (
        SELECT a.label_id AS label_id_1, b.label_id AS label_id_2 
        FROM labels AS a, labels AS b WHERE a.same_road_label_id = b.same_road_label_id;
    )
)

Có vẻ tốt, nhưng tôi không quen với lập trình sql. Vì vậy, bạn có thể vui lòng giải thích "a.label_id", "a.label_id_1" và v.v. Bảng của tôi có ID (cột osm_id) và cột (ref) cho nhãn (ví dụ "A70").
MAP

Tôi đã đặt biệt danh bảng nhãn là "a" và "b" và cột nhãn_id (osm_id) là nhãn_id_1 và nhãn_id_2 với câu lệnh "AS", tôi phải bởi vì trong truy vấn con sâu nhất, chúng tôi có hai cột (nhãn_id) và hai bảng (nhãn) có cùng tên.
Francisco Valdez
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.