iki şeritli yollar için bir etiket (osm, qgis, postgis)


9

Osm-hatları katmanımı (PostGIS) birincil yollar ve otoyollar için sembollerle etiketledim. Birincil yolların sembolleri - her biri arasında yeterince mesafe olacak şekilde - iyi yerleştirilmiş olsa da, iki şeritli otoyol şerit başına bir etiketle etiketlenmiştir (resimde görebileceğiniz gibi).

Her bir etiketten yarıçap gibi bir şey ayarlamak, aynı türden başka bir etiketin içine yerleştirilemez mi? Veya sadece şunu söyleyebilirim: İki şeritli bir yolun bir şeridini etiketleyin?

Qgis kullanıyorum. OSM-Verileri osm2pgsql ile PostGIS'e aktarılır.

resim açıklamasını buraya girin

EDIT: Bu yeni ekran görüntüsü daha fazla ayrıntı gösteriyor:

resim açıklamasını buraya girin

Yanıtlar:


5

İki şeritli bir yolun yalnızca bir şeridini etiketlemek için şu ifadeyi kullanıyorum:

 angle_at_vertex($geometry,1) <= 180

ve filtre olarak kullanabilirsiniz. Bu çalışır çünkü OSM'de her şerit kendi yönünde çizilir.

Aşağıdaki örnekte, ifadeyi angle_at_vertex($geometry,1)etiket olarak kullanıyorum ve ikinci resimde ifadeyi angle_at_vertex($geometry,1) <= 180filtre olarak kullanıyorum.

Önce:

resim açıklamasını buraya girin

Sonra:

resim açıklamasını buraya girin

Ayarlar :

resim açıklamasını buraya girin


Şimdi bu akıllıca bir numara. QML dosyası için +1.
geozelot

2

OSM tablolarının şemasını bilmiyorum, ancak böyle bir sorgu istediniz:

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
    )
)

Bu işe yarayabilir, ancak farklı yönler için aynı etiket için bir kimliğiniz varsa daha iyi olur ve bu sorgu% 100 işe yarar:

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;
    )
)

İyi görünüyor, ama sql-programlamaya aşina değilim. Peki, "a.label_id", "a.label_id_1" ve diğerlerinin ne anlama geldiğini açıklar mısınız? Tablomda bir kimlik (osm_id sütunu) ve etiket için bir sütun (ref) var (örneğin "A70").
HARİTA

Ben "a" ve "b" olarak etiket tablo ve "AS" deyimi ile label_id_1 ve label_id_2 olarak label_id sütun (osm_id) takma ettik, çünkü en derin alt sorguda iki sütun (label_id) ve iki tablo var çünkü (etiketler) aynı adda.
Francisco Valdez
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.