Harita oluşturucu QGIS'te otomatik harita döndürme


10

Şey, harita bestecisinde harita dönüşünü otomatik olarak hesaplamayı mümkün kılmak. Kendi projeksiyon parametreleri ile bir dosyada birçok harita var ve ben projeksiyon formülü (veya başka bir şey?) Dayalı harita bestecisinde harita döndürme tanımlamak istiyorum

örneğin projedeki belirli bir haritayı konumlandırma:

resim açıklamasını buraya girin

Projeksiyon

resim açıklamasını buraya girin

Harita bestecisinde harita sınırı

resim açıklamasını buraya girin

Ve projeksiyon parametreleriyle birlikte harita için seçilen dönüş açısı ile:

resim açıklamasını buraya girin

Harita dönüş açısı, konumuna ve projeksiyon parametrelerine bağlı olarak her harita için farklıdır.

Bu işlemi otomatikleştirmek ve harita dönüş açısını otomatik olarak hesaplamak mümkün mü, çünkü bu değeri her seferinde manuel olarak bulamıyorum (atlas oluşturma menüsü aracılığıyla tüm haritalar için evrensel besteci oluşturmak istiyorum)?


1
Özelliği harita çerçevesinin kenarlarıyla paralel olacak şekilde döndürmek istiyor musunuz? Özelliğin yanlarından birinin azimutunu hesaplayabilir ve onu döndürmek için kullanabilir misiniz? Eğer bir çizgi olsaydı rotasyon = derece (atanan (abs ((y1-y2) / (x1-x2)))) derece olarak bir açı verirdi. Ardından 90 - dönüş harita çerçevesiyle hizalanacaktır.
mixedbredie

2
Atlas mı kullanıyorsun? "Yönlendirilmiş minimum sınırlama kutusu" aracını kullanarak bir kapsama katmanı oluşturursanız, bu katman, veri tanımlı özellikler kullanılarak eşleme öğesinin döndürülmesine bağlanabilecek bir döndürme özniteliği içerir.
ndawson

@mixedbredie, Evet, harita sınırları, harita sınırları içindeki harita çerçevesine paralel olacak şekilde döndürmek istiyorum. Azimut'u hesaplamaya çalıştım, ama sorun şu ki, haritalar içeren katmanım poligonal ve ilk noktanın sol üst tepe noktası veya diğer belirli tepe noktası (sağ alt, vb.) Olduğunu söylemiyor. Yani, açı neredeyse her zaman tatmin etmiyor
Jane

@Ndawson tarafından önerilen çözüm bir tedavi sunmaktadır. Yeni sınırlama kutusu katmanını gizli kapsama katmanı olarak kullanın, her şey hizalanacaktır.
mixedbredie

1
İşleme Araç Kutusu'nu (Ctrl + Alt + T) açın ve "odaklı" ifadesini arayın - QGIS geoalgoritmaları> Vektör genel araçları altında aracı görürsünüz.
mixedbredie

Yanıtlar:


3

Sorunun yorumlarında @ndawson tarafından bulunan bir çözümün altında. Lütfen bu yanıtı yorumlamak ve geliştirmek için çekinmeyin.

İşleme araç kutusundan, zaten kullandığınız harita zarfı kılavuzundaki Yönlendirilmiş minimum sınırlama kutusu aracını çalıştırın.

Yönlendirilmiş sınırlama kutusu aracı

Orijinal katmanınızla tamamen aynı olması gereken bir katman oluşturur. Özellik tablosunda bir AÇI alanı bulacaksınız

OBB alanları

Artık döndürme için tanımlanan veri alanını doldurmak için bestecideki bu AÇI alanını kullanabilmeniz gerekir:

Veri tanımlı açı

Sorun, açının her zaman kolay olmadığı, çünkü ilk çokgenlerin yapılış şekline bağlı olduğu anlaşılıyor. Birkaç test yaptım ve kaynak çokgenlerinizi hangi yolla çizdiğinize bağlı. ANGLe alanının nitelik değerlerini buna göre ayarlamanız gerekebilir:

(kırmızı, orijinal çokgenlerdir, siyah OMBB aracı çokgenleridir). Örnek benzer çokgenler için dijitalleştirdim iki farklı yol (sağa veya sola gitmek)

OMBB örneği

Açı değerini orijinal katmanınıza geri döndürmek için, uzamsal konum birleştirme işlemi kullanabilirsiniz.


Çok teşekkür ederim! Ayrıntılı cevabınızı dikkatlice kırmızıya çevirdim! Ancak sorun daha karmaşık görünüyor. Her harita için öznitelik tablosundaki tüm haritalara ve projeksiyonlarına sahip bir katmanım var. WGS84'te harita kümesiyle ilk katman, ancak bir harita hazırlarken, projeksiyon özelliğini harita tablosunda ayarladım, öznitelik tablosundan (her harita için farklı olan) ve bu projeksiyonda bir harita döndürme değerine ihtiyacım var. Bu yüzden, her haritayı kendi izdüşümüyle yeniden kaydetmeli ve sonra çokgen için OMBB'yi çalıştırmam gerekiyor. Bazı haritalar için test ettim, ancak kesin olmayan dönüş açısı değeri OMBB
Jane

Jane

Kolay değil ! Bunu, özellikle dönüş açısı için basit bir şekilde nasıl yapabileceğinizi görmüyorum. "Dönüştürme" fonksiyonu ile veri yansıtmak için bir yol var, ama o sonra koordinatları sonra başka bir şey için çalışacağından şüpheliyim. (Kaynak CRS'den hedef CRS'ye dönüştürülen geometriyi döndürür. Sözdizimi: transform (geom, source_auth_id, dest_auth_id) - Örnek: geom_to_wkt (transform ($ geometry, 'EPSG: 2154', 'EPSG: 4326'))
gisnside
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.