Alicja Drożdż

Alicja Drożdż Konsultant
Środowiskowy,
Specjalista ds. GIS

Temat: Eksport "Data Driven Pages(DDP)" do PDF - różne wielkości...

Stworzyłam serię widoków poprzez narzędzie DDP 225 km linii wysokiego napięcia (podzielone na odcinki różnej długości). Zależy mi żeby wszystkie wyjściowe widoki były w tej samej skali (powiedzmy 1:5000) i zorientowane na N. Jako podstawowy przyjmuję format A3 (poziomy). Problem pojawia się gdy linia nie miejści się w danym widoku - odcinek jest zbyt długi. Zależy mi żeby automatycznie przy eksporcie format strony zmieniał się w zależności od zasięgu danych (przy nie zmienionej skali), czyli np. został odpowiednio wydłużony.

Wiem, że podstawowe narzędzia ArcGIS 10. nie dają takiej możliwości. Zastanawiałam się czy ArcPy nie pomoże. Poniższy kod tworzy pdf z zadanymi, stworzonymi wcześniej DDP:

import arcpy, string
mxdPath = arcpy.GetParameterAsText(1)
pageList = string.split(arcpy.GetParameterAsText(3), ";")
printer = arcpy.GetParameterAsText(4)
mxd = arcpy.mapping.MapDocument(r"C:\Users\Alicja.Wlodarz\Desktop\DDP\test.mxd")
ddp = mxd.dataDrivenPages
for eachPage in pageList:
arcpy.AddMessage(str(eachPage))
pageID = ddp.getPageIDFromName(str(eachPage.strip("'")))
ddp.currentPageID = pageID
ddp.printPages("FreePDF", "ALL")
del mxd

Jeśli ktoś z Was miałby pomysł lub ma już gotowy kawałek kodu, który sczytuje zakres danych i pozwala taki zakres drukować to będę wdzięczna za pomoc lub wskazówki gdzie szukać odpowiedzi.

Dziękuję z góry.
Daniel Majchrzak

Daniel Majchrzak Geoinformatyk i
kartograf,
specjalista GIS i IT

Temat: Eksport "Data Driven Pages(DDP)" do PDF - różne wielkości...

A nie lepiej zwiększyć liczbę arkuszy tak, żeby cała linia się zmieściła, zamiast dostosowywać format arkusza do długości linii? Nie wiem, czy dobrze zrozumiałem Twoje pytanie, ale postaram się krótko opisać, w jaki sposób ja przygotowuję mapy linii do wydruku. Używam do tego widoku kompozycji (layout view) w ArcMap, gdzie przygotowałem szablon mapy na arkuszu A2. Największa część arkusza to ramka danych (42 x 38 cm), reszta to legenda i mapa poglądowa. Jeżeli mapa ma przedstawiać linię w granicach np. gminy, to taki fragment tej linii będzie potrzebny (od granicy do granicy). Wzdłuż tego odcinka będą rozmieszczone poszczególne arkusze. Jeżeli odcinek jest gotowy, to należy posłużyć się narzędziem Strip Map Index Features ze skrzynki DDP i wskazać odcinek linii jako dane wejściowe. Trzeba też zaznaczyć opcję Use Page Unit and Scale i wpisać 5000 jako skalę, a następnie 42 i 38 w pola Length Along... i Length Perpendicular. Pozostałe pola można zostawić bez zmian. Wynikowa klasa obiektów zawierała będzie poligony rozmieszczone wzdłuż linii i obrócone zgodnie z jej biegiem. Rozmiary terenowe prostokątów to 42 x 38 cm, przemnożone przez skalę. Warto dodać pole (typ danych - float) w tabeli atrybutów, które będzie zawierało kąt skręcenia obektów na mapie, ze względu na zastosowany układ współrzędnych. Dla układu 92 to może być nawet ok 4 stopni na przygranicznych terenach, więc warto obrócić ramkę danych tak, żeby mapa była rzeczywiście zorientowana w kierunku północnym. Narzędzie, które obliczy kąt skręcenia dla każdego z prostokątów w siatce, nazywa się Calculate Grid Convergence Angle. Na koniec wystarczy skonfigurować narzędzie DDP. Jako warstwę indeksu, należy wybrać klasę obiektów z prostokątami, w polu Rotation wskazać utworzone wcześniej pole z kątem obrotu, obliczonym opisanym wyżej narzędziem. Na zakładce Extent trzeba zaznaczyć opcję Center And Maintain Current Scale. Na koniec należy upewnić się, czy w widoku kompozycji wpisana została właściwa skala i już można przełączać poszczególne arkusze mini atlasu. Arkuszy będzie tyle, ile wygenerowanych zostało wcześniej prostokątów. Domyślnie mają one pokrycie 10% i jest to chyba odpowiednia wartość, bo na każdym następnym arkuszu widać odpowiednio duży fragment treści poprzedniego. Na koniec wystarczy wyeksportować mapę - program automatycznie utworzy jeden duży lub wiele osobnych plików, zawierających wszystkie arkusze. Oczywiście można to wszystko zrobić za pomocą skryptu Pythona, ale chyba lepiej najpierw umieć to wyklikać. Polecam również ten adres: http://help.arcgis.com/en/arcgisdesktop/10.0/help/inde...
Mam nadzieję, że powyższe wskazówki okażą się pomocne.
Alicja Drożdż

Alicja Drożdż Konsultant
Środowiskowy,
Specjalista ds. GIS

Temat: Eksport "Data Driven Pages(DDP)" do PDF - różne wielkości...

Daniel, dziękuję za obszarną odpowiedź. Ten sposób przyda mi się w przyszłości na 100%. Jednak w tym konkretnym projekcie klient zażyczył sobie formatu A3 jako wyjściowego :( a odcinki linii, która nas interesuje są także wcześniej zadane przez klienta (różna długość w zależności od jego wymagań i dalszego użycia).

Pozdrawiam
Daniel Majchrzak

Daniel Majchrzak Geoinformatyk i
kartograf,
specjalista GIS i IT

Temat: Eksport "Data Driven Pages(DDP)" do PDF - różne wielkości...

Jeżeli każdy z zadanych odcinków musi mieścić się na jednym arkuszu A3, to pozostaje zmniejszenie skali, a jeżeli nie, to opisana przeze mnie metoda i podzielenie odcinka na kilka wydruków.

Mam teraz trochę jaśniejszy pogląd na tę sprawę, więc proponuję zrobić to następująco. Na samym początku utwórz zestaw prostokątnych poligonów zasięgu - dla każdego odcinka linii po jednym poligonie, obejmującym ten odcinek całkowicie. Na etapie tworzenia klasy obiektów lub shp z prostokątami, stwórz atrybuty, w których będziesz umieszczać wartości potrzebne do automatycznej pracy narzędzia DDP:
1. strona (short integer),
2. nastStrona (short integer),
3. poprzStrona (short integer),
4. skala (long integer).

Poligonom przypisz kolejne numery w polu [strona], uzupełnij też [nastStrona] i [poprzStrona]. Dwa ostatnie wymienione pola nie są wymagane, ale przydają się przy wstawianiu dynamicznego tekstu na arkuszu - następna strona i poprzednia strona właśnie.
Gdy już to zrobisz, to w oknie konfiguracji DDP, na zakładce Definition, wskaż klasę obiektów z prostokątami, jako warstwę indeksu. W polach "Name Field" i "Sort Field"wskaż atrybut [strona]. Przypominam też, że możesz utworzyć pole, zawierające kąt odchylenia zawartości ramki danych od kierunku północnego i wskazać je na tej zakładce (poprzedni wpis). Przeskocz teraz na zakładkę Extent, zaznacz opcję "Best fit" i wpisz 100 w ramce "Margin", w polu "Size". Zatwierdź i spróbuj przełączać kolejne arkusze na pasku narzędziowym DDP. Zobaczysz, że program automatycznie skaluje prostokąty zasięgów, a więc i całe odcinki linii tak, żeby zmieściły się w ramce danych. Myślę, że to może być zachowanie, o które Ci chodziło. Mnie się jednak to nie do końca podoba, ze względu na niepełne skale typu 1:9222. Dlatego też, można zastosować drugą metodę.
Dobierz lub zaokrąglij skale wstawiane z automatu przez narzędzie DDP i wpisz je w pole [skala], w tabeli atrybutów prostokątów zasięgów. Jak już dla każdego poligonu przypiszesz właściwą skalę, to zmień konfigurację na zakładce Extent narzędzia DDP - wskaż opcję "Data Driven Scale" i wybierz pole [skala]. Teraz program będzie skalował według tego, co wpisałaś w atrybucie [skala] dla każdego z poligonów.
Mam nadzieję, że to będzie to, o czym pisałaś od początku.

Następna dyskusja:

ArcGIS - eksport do pdf




Wyślij zaproszenie do