Automatyczny obrót mapy w kompozytorze map QGIS

10

Chodzi o to, że zastanawiam się, aby umożliwić automatyczne obliczanie obrotu mapy w programie do tworzenia map. Mam wiele map w jednym pliku z własnymi parametrami projekcji i chciałbym zdefiniować rotację map w kompozytorze map na podstawie formuły projekcji (czy coś innego?)

np. lokalizacja jednej konkretnej mapy w projekcie:

wprowadź opis zdjęcia tutaj

Projekcja jest

wprowadź opis zdjęcia tutaj

W kompozytorze map wygląda granica granicy

wprowadź opis zdjęcia tutaj

I przy wybranym kącie obrotu mapy z ich parametrami projekcji:

wprowadź opis zdjęcia tutaj

Kąt obrotu mapy jest inny dla każdej mapy, w zależności od jej lokalizacji i parametrów projekcji.

Czy można zautomatyzować ten proces i automatycznie obliczyć kąt obrotu mapy, bo nie znajdź tej wartości ręcznie za każdym razem (chciałbym stworzyć uniwersalnego kompozytora dla wszystkich map za pomocą menu generowania atlasu)?

Jane
źródło
1
Czy chcesz obrócić obiekt, aby był równoległy do ​​krawędzi ramki mapy? Czy potrafisz obliczyć azymut jednej ze stron elementu i użyć go, aby go obrócić? Gdyby to była linia, coś w rodzaju obrotu = stopni (atan (abs ((y1-y2) / (x1-x2)))) dałoby ci kąt w stopniach. Następnie obrót o 90 pozycji wyrównałby go do ramki mapy.
mixedbredie
2
Czy korzystasz z atlasu? Jeśli generujesz warstwę pokrycia za pomocą narzędzia „Orientowane minimalne pole ograniczające”, wówczas warstwa ta będzie zawierać atrybut obrotu, który można powiązać z obrotem elementu mapy za pomocą właściwości zdefiniowanych danych.
ndawson
@mixedbredie, Tak, chcę obrócić mapę, aby granice mapy były równoległe do ramki mapy w obszarze roboczym mapy. Próbowałem obliczyć azymut, ale problem polega na tym, że moja warstwa z mapami jest poligonalna i nie można powiedzieć, że pierwszym punktem jest lewy górny wierzchołek lub inny określony wierzchołek (prawy dolny itd.). Tak więc kąt prawie za każdym razem nie jest satysfakcjonujący
Jane
Rozwiązanie zaproponowane przez @ndawson działa na ucztę. Użyj nowej warstwy obwiedni jako ukrytej warstwy pokrycia, a wszystko zostanie wyrównane.
mixedbredie
1
Otwórz Przybornik przetwarzania (Ctrl + Alt + T) i wyszukaj „zorientowany” - zobaczysz to narzędzie pod Geo-algorytmami QGIS> Ogólne narzędzia wektorowe.
mixedbredie

Odpowiedzi:

3

Poniżej rozwiązanie znalezione przez @ndawson w komentarzach do pytania. Skomentuj i popraw tę odpowiedź.

Uruchom z przybornika przetwarzania narzędzie Orientowane minimalne obwiednie na siatce obwiedni mapy, której już używasz.

Zorientowane narzędzie obwiedni

Stworzy warstwę, która powinna być identyczna z twoją oryginalną warstwą. W tabeli atrybutów znajdziesz pole KĄT

Pola OBB

Powinieneś być teraz w stanie użyć tego pola KĄTA w kompozytorze, aby wypełnić pole zdefiniowane danymi do obrotu:

Określony kąt danych

Problemem wydaje się być to, że kąt nie zawsze jest łatwy w użyciu, ponieważ zależy od sposobu wykonania początkowych wielokątów. Zrobiłem kilka testów i zależy to od tego, w jaki sposób narysowano wielokąty źródłowe. Może być konieczne dostosowanie wartości atrybutów pola ANGLe odpowiednio:

(czerwony to oryginalne wielokąty, czarny to wielokąty OMBB). Digitalizowałem dla przykładu podobnych wielokątów na dwa różne sposoby (w prawo lub w lewo)

Przykład OMBB

Aby przywrócić wartość kąta do oryginalnej warstwy, można użyć operacji łączenia lokalizacji przestrzennej.

gisnside
źródło
Dziękuję bardzo! Uważnie przeczytałem twoją szczegółową odpowiedź! Ale problem wydaje się bardziej złożony. Mam warstwę ze wszystkimi mapami i ich rzutami w tabeli atrybutów dla każdej mapy. Warstwa początkowa z zestawem map w WGS84, ale przygotowując mapę, ustawiam projekcję w kanwie mapy, pobranej z tabeli atrybutów (która różni się dla każdej mapy) i potrzebuję wartości obrotu mapy w TYM PROJEKCIE. Tak więc muszę ponownie zapisać każdą mapę we własnej projekcji, a następnie uruchomić OMBB dla wielokąta. Testowałem na niektórych mapach, ale wartość kąta obrotu bez zabezpieczenia różni się od obliczonej za pomocą OMBB
Jane
Byłoby wspaniale obliczyć wartość kąta obrotu w twórcy mapy na podstawie formuły rzutowania w tabeli atrybutów
Jane
Niełatwe ! Nie rozumiem, jak można to zrobić w prosty sposób, szczególnie w przypadku kąta obrotu. Istnieje sposób wyświetlania danych za pomocą funkcji „transform”, ale wątpię, czy zadziała to na cokolwiek innego niż współrzędne. (Zwraca geometrię transformowaną ze źródłowego CRS do docelowego CRS. Składnia: transform (geom, source_auth_id, dest_auth_id) - Przykład: geom_to_wkt (transform ($ geometria, 'EPSG: 2154', 'EPSG: 4326'))
gisnside