QGIS'te başka bir katmanla çakışıyorsa etiketleme özelliklerinden kaçınıyor musunuz?


16

QGIS 2.12.2 ile, etiketleri başka bir katmandaki özelliklerin zaten bulunduğu yerlere yerleştirmemek için katman etiketlemeyi nasıl ayarlayabilirim?

Bir dere / nehir varsa Örneğin, çoklu çizgi göl "merkez" içeren katmanı ve bir "göl" yerleştirmek poligon çizim sırayla üstünde katman, ben nehir tabakası göl içine bir etiket yerleştirmek istemiyoruz . Bunun yerine, nehrin gölün dışında etiketlenmesini tercih ederim (gerekirse). Bu şekilde göl katmanından etiketler yerleştirebilirim ve etiket çarpışmalarına girmem.

İşte (görsel amaçlar için kasıtlı olarak çizgileri üstüne koydum) bir örnek, elde etmeyi umduğum şey, göl poligonunun içinde gösterilen nehir merkez hattı etiketleri yok: Çokgenin içinde satırlar etiketleniyor


4
Verileriniz nasıl saklanıyor ve sunuluyor? PostGIS ile çalışarak, nehirlerimi kesişen göllerin bölümlerinin tamamen kesildiği bir görünümle tanımlamak cazip olurum. İyi otomatik etiketleme zor bir sorundur, geometri daha azdır.
alphabetasoup

Bunlar şekil dosyalarıydı, ancak PostGIS'e geçme ve veri sorunlarını anında yönetme fikriniz gerçekten iyi. Yorumunuzu bir Yanıt'a taşımanızı öneririm, çünkü bunun iyi bir çözüm olduğuna dair oldukça geçerli bir tartışma yapabilirim.
RyanKDalton

Yanıtlar:


9

Otomatik etiketleme gerçekten zor bir sorundur, ancak özellik geometrisi o kadar da kötü değildir.

Yerleşimi çoğu zaman yeterli şekilde çalıştırabilseniz bile, istisnalar olabilir. Bunlardan bazılarını fark edeceksiniz ve adresleme yapabilirsiniz. Diğerleri büyük bir harita veya fayans seti yaparken fark etmeyeceksiniz çünkü haritanızın her santimini çeşitli ölçeklerde dökemezsiniz. Hemen her zaman, otomatik olarak yerleştirilmiş bazı etiketleri manuel olarak kartografik bir perspektiften hareket ettirme isteğiniz olacaktır.

Yorumumda önerdiğim gibi, sorunu etiketleme motoru için kolaylaştırırdım. Bu durumda, bunu nehirlerimi bir masa manzarası olarak tanımlayarak * göl sınırlarına saygı göstermek için kırpılmış nehir geometrileriyle yapardım. Bu şekilde, göllerde etiketlenecek nehir özelliği ve etiket çarpışması olmaz.

* Kolaylık ve yalnızca yetkili veri kaynağınızı güncelleme ve müdahaleniz olmadan görünümün kendisinin çalışmasını sağlamak için PostgreSQL / PostGIS gibi bir RDBMS kullanıldığını varsayıyorum. Ancak, özellikleri kırpmak ve silmek için statik dosyalarla açık bir şekilde çalışabilirsiniz, ancak bir haritayı tekrar ziyaret etmeyi planlıyorsanız bunu önermem.

Misal:

Nehirlerin ve göllerin iki şekil dosyasıyla (veritabanı tabloları olabilir) başlayarak, nehirler kesişen göllerle ve tamamen ve güvenle çözülmesi zor etiketleme sorunlarına neden olur:

resim açıklamasını buraya girin

Shp2pgsql ile ihtiyacınız varsa bunları Postgres'e getirin :

shp2pgsql -s 4326 /data/lake public.lakes | psql -d mydb

shp2pgsql -s 4326 /data/river public.rivers | psql -d mydb

Ardından ST_Difference ile bir görünüm tanımlayın :

CREATE OR REPLACE VIEW rivers_clipped AS
SELECT r.id, ST_Difference(r.geom, l.geom) AS geom, r.name
FROM public.rivers AS r, public.lakes AS l;

Görünümü mizanpajınıza ekleyin:

resim açıklamasını buraya girin

Örneğimdeki sorun kasıtlı olarak üretilmesine rağmen, iki nehir katmanındaki (orijinal ve görünüm) stiller aynıdır ve çizim sırasına göre gölün üstüne yerleştirilir. Göl veya nehir geometrilerini güncellediğinizde, oluşturmayı yenilemekten daha fazlasını yapmanız gerekmez.

resim açıklamasını buraya girin


2
Doğrudan bir DB katmanıyla çalışmazken, bu çözüm benim için en mantıklıydı, çünkü ilk veri kaynaklarının geometrisini düzenlemeyi gerektirmedi (bunları DB'ye yüklemek dışında). Bu, şekil dosyaları ve uygulama sınırlamaları kutusunun dışında düşünmek ve hem uygulama hem de DB mantığını birleştirerek soruna yaratıcı bir çözüm bulmak için harika bir örnektir.
RyanKDalton

13

QGIS> = 2.12'de "göl" çokgen katmanını etiket engeli olarak ayarlayabilirsiniz. Bu, "Etiketler" bölümünün altındaki "göl" katmanının katman özellikleri aracılığıyla yapılır. Üstteki birleşik giriş kutusunu " Etiket yok " yerine " Bu katmandaki özellikleri örtmekten diğer etiketleri engelle " olarak değiştirin.


1
Teşekkürler. Ben böyle bir şey arıyordum ve bu açılır seçeneği daha önce fark etmemiştim. Ancak, bunun sadece orta derecede başarılı olduğunu söyleyebilirim. 1) River katmanından sadece "tür bir tür" cesareti kırılmış etiketler (hala göl içinde görünüyorlar, ancak daha az öyle) ve 2) şimdi Lake ad etiketlerim yok :( Ayrıca River etiketleri> Engelleri "Etiketleri kaplama özelliklerinden vazgeç" (başarı yok) ve ağırlıkları Düşük ve Yüksek (başarı yok) ayarlamayı ve Yerleşim> Öncelik = Düşük ve Yüksek (başarı yok)
ayarlamayı denedim

Ah, belki yanlış anladım. Göl katmanında etiketleriniz varsa, oluşturma sekmesinin altındaki "Etiketleri kaplama özelliklerinden vazgeç" onay kutusunun işaretli olduğundan emin olun. İstenilen sonuçları almak için "ağırlık" kaydırıcısı ve bu gruptaki diğer seçeneklerle oynamanız gerekebilir.
ndawson

1
Hayır, kesinlikle doğru yoldasınız. Ağırlıklar ile oynadım (göl poligonlarında yüksek ağırlık + "özelliklerin üzerine etiket yerleştirmeyi en aza indirir, nehirlerde düşük ağırlık) ve yaklaştım, ancak nehir etiketlerinin gölde olmadığı noktaya hiç ulaşmadım. Çokgenin hem içinde hem de dışında olan çizgilerle ilişkili görünmektedir
RyanKDalton

4
etiketleme söz konusu olduğunda neden bu satırları kaldırmıyorsunuz (veya ayırmıyorsunuz)? Zaten haritanız için kullanışlı değiller.
radouxju

4

Etiketlemeyi genel olarak oldukça zor buluyorum, en azından haritacılarımın duyularını memnun eden etiketler üretmek için. Otomatik etiketleme özelliği zamanın% 80'inde iyi çalışıyor olsa da, nehir / göl etiketleme probleminiz gibi güzel etiketleme üretmeyen durumlar vardır. Otomatik etiketleme genellikle özelliğin geometrisine bağlıdır, örneğin ilk başta tüm parçaların etiketlenmesi için bir satırda kaç parça bulunduğunu. Elbette QGIS, mevcut harita görünümünün ölçeğine de bağlı olarak tekrarlanan etiketlemeyi önlemek için araçlara sahiptir.

Her neyse, ipucum hızlı bir çözüm değil. Genellikle etiketleme için özel bir katman oluştururum, böylece etiketlerim daha kolay kontrol edilir. Ve genellikle kartografik gösterim için özellikler geometrisi, etiketleme için iyi bir geometri ile çarpışabilir. Bu yüzden akarsuların gölleri geçmediği yeni bir katman oluşturmayı öneriyorum, böylece sorunu tamamen atlayabilirsiniz. Ek bir etiketleme katmanına sahip olmak, etiketleme yönünün amaçlanan yönde olmadığı durumlarda problemleri önlemeye de yardımcı olabilir, çünkü geometrinin nasıl oluşturulduğuna bağlıdır.

Tahminimin beklediğiniz gibi olmadığından korkuyorum ama umarım alternatif yaklaşımım size bir şekilde yardım eder.


Yeni bir veri kümesi oluşturabileceğim geçerli bir noktaya dikkat çekiyorsunuz (bu durumda yapılması kolay olurdu ... sadece çokgenler altındaki çizgi özelliklerini silin), veri kümelerini ikiye katlamak, kullanmadıkça çok çekici veya yönetilebilir görünmüyor @Richard Kanunu gibi veri tabanına dayalı bir yöntemden bahsedildi.
RyanKDalton

Ne demek istediğini anlıyorum ve iki kez benzer bir veri kümesi oluşturmakta tereddütünü anlıyorum Deneyimlerime göre etiket katmanı genellikle orijinal veri katmanından daha farklıdır. Örneğin, nehir örneğinize sadık kalmak için, daha düzenli olarak tekrarlanan daha güzel bir etiketleme oluşturmak için özellik parçalarını birleştirmek veya bölmek için nehrin geometrisini daha fazla değiştirmek isteyebilirsiniz. En azından bazen OSB yolları ile uğraşırken bu bazen benim için oldukça keyfi bir şekilde organize edilen durumdur.
Frank

3

çokgenlere dayalı etiketleri filtrelemek için kullanılabilen " Maske " adında bir eklenti vardır .

Bununla birlikte, önceki yorumumda belirtildiği gibi, çizgilerinizi göllerle kesişme noktasında bölmek çok daha kolay olurdu ( burada farklı yöntemlere bakın ). Ardından, göller içindeki segmentler için sıfır boyutlu bir etiket tanımlayabilirsiniz ("Katman"> "Etiketleme"> "Veri Tanımlı Ayarlar"> "Boyut", ardından etiket boyutunu depoladığınız sütunu seçin). Bölme, nehir ağınızın özelliklerinin çoğunu korur ve çözülme ile tersine çevrilebilir, böylece tek bir katmanla çalışmaya devam edebilirsiniz (gerekirse toplam uzunluğu belirli bir özellik tablosunda saklayın).


Teşekkürler, eklenti umut verici geliyor, bu yüzden bir deneyeceğim.
RyanKDalton
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.