Jak poprawić wydajność renderowania bardzo dużego pliku kształtu?


20

Mam plik kształtu wielokąta, który ma 100 MB .dbf i 500 MB pliku .shp. Jest tak duży, że jest sklasyfikowany jako baza lądowa dla całej dzielnicy.

Za każdym razem, gdy przeglądam plik w ArcCatalog lub ArcMap i delikatnie przesuwam okno widoku, cały plik musi być przerysowany od zera. Próbowałem indeksowania przestrzennego i importowania do geobazy - żadne podejście nie zapewnia zauważalnej poprawy wydajności w zakresie renderowania.

Strona pomocy Esri sugeruje, że aby poprawić wydajność pliku shapefile, użytkownik może uogólnić plik . Chociaż to oczywiście działałoby, nie chcę stracić żadnych informacji. Podział pliku nie jest idealny, ponieważ robię dużo geoprzetwarzania / zapytań na całym jego obszarze. Wydaje mi się, że mógłbym uniknąć oglądania całego obszaru naraz - ale czasami, na przykład, dobrze jest zobaczyć, które części pliku wybrało zapytanie.

Czy mogę zastosować inne podejście, aby poprawić wydajność renderowania?

(Teoretycznie budowanie „piramid” w postaci pliku kształtu byłoby idealne - nie jestem pewien, dlaczego ArcGIS nigdy nie popiera takiego podejścia - przynajmniej, że jestem tego świadomy ...)


2
Posiadanie tak dużego pliku kształtu wymaga jedynie kłopotów. Z mojego doświadczenia wynika, że ​​duże pliki kształtów mają tendencję do bardzo łatwego uszkadzania. Pobierz go w geobazie pliku, aby uniknąć uszkodzenia. Lepsza wydajność rysowania byłaby dodatkowym bonusem.
Devdatta Tengshe

Jak krótko zaznaczam powyżej, odkryłem, że importowanie dużego pliku kształtu do gdb nie powoduje żadnej poprawy - z czysto renderującego punktu widzenia. Masz jednak całkowitą rację, że z ogólnego punktu widzenia nie ma sensu nie mieć dużego pliku shp w gdb (z różnych powodów).
youzer

2
Czy rozważałeś użycie rastra zamiast pliku kształtu?
Kirk Kuykendall

jestem zdezorientowany w jednej rzeczy, co jeśli rozmiar pliku wynosi 2 GB, a pamięć komputera również 2 GB, to jak Arcgis będzie obsługiwał dane pliku, ponieważ zajmie pełną pamięć
user2174920

jeśli masz miliony małych wielokątów, powinieneś użyć rastra - to niesławne powiedzenie (chyba, że ​​tworzysz warstwę gleby ...)
Jeśli nie wiesz - po prostu GIS

Odpowiedzi:


22

Moje myśli to:

  1. Wyeksportuj plik shapefile do klasy obiektów geobazy danych pliku - Myślę, że jego wydajność rysowania będzie lepsza, ale nie jestem pewien, o ile
  2. Jeśli korzystasz z ArcGIS Desktop 10.0 lub nowszego, przenieś go do warstwy bazowej - znacznie poprawi to wydajność rysowania
  3. Jeśli podoba Ci się dźwięk piramid dla danych wektorowych, zagłosuj na ten pomysł ArcGIS .

3
Tyle że nie można wykonywać analiz ani selekcji na warstwach mapy bazowej IIRC.
blah238

4
Podejrzewa się, że można się obejść, mając drugą warstwę w spisie treści wskazującą to samo źródło, a nie warstwę bazową, która jest zwykle wyłączona, ale może być wyświetlana, gdy jest to wymagane do analizy lub wyboru.
PolyGeo

PolyGeo - dzięki za odpowiedź. Wypróbowałem warstwę podstawową i istotnie znaczną poprawę wydajności spowodowało kliknięcie „powiększenia warstwy”, a plik nie renderował się od zera. Obejście, które sugerujesz, biorąc pod uwagę komentarz blah238, może zadziałałoby w przypadku niektórych projektów, ale znalazłem dodatkową rzeczą, która ogranicza użycie warstwy podstawowej, jest to, że nie możesz wizualizować pliku dbf przy użyciu jakiejkolwiek symboliki. Z tym ograniczeniem równie dobrze mogę wygenerować plik w celach informacyjnych (nie jest to warstwa podstawowa), a następnie w razie potrzeby odkryć „prawdziwą” warstwę. Niezbyt dobre rozwiązanie. Będę głosować na pomysł „piramid”, jak sugerujesz!
youzer

6

Istnieje wiele wskazówek dotyczących poprawy wydajności ArcMap, które mogą pomóc, ale oto trzy sugestie, z których skorzystałem.

  1. Upewniłem się, że układ współrzędnych ramki danych pasuje do mojego pliku kształtu i wszystkich innych warstw, które mam w spisie treści; ale im mniej wyświetlanych warstw, tym lepiej.
  2. Używałbym tylko mojej symboliki opartej na prostych liniach i wypełnieniach bez przezroczystości i innych złożoności.
  3. Jeśli potrzebujesz zarówno przeglądu, jak i możliwości przesuwania z bliska, rozważ użycie lupy lub przeglądarki.

ogólnie bardzo dobra rada. Rzeczywiście zaimplementowałem je wszystkie w moich początkowych testach - wydaje się, że potrzeba więcej / różnych sztuczek, aby poradzić sobie z bardzo dużymi klasami obiektów / plików kształtów.
youzer

4

Możesz poprawić renderowanie, ustawiając parametry wyświetlania warstwy, aby warstwa nie wyświetlała się w dużych skalach (np.> 1: 10 000). Tę opcję można znaleźć we właściwościach warstwy: Właściwości warstwy> Karta Ogólne> „Nie pokazuj warstwy po pomniejszeniu poza ...”

Ponadto ważna jest lokalizacja pamięci - na przykład, jeśli jest przechowywana na starym serwerze o niskiej przepustowości, masz gwarancję niskiej wydajności. Rutynowo obsługuję 1 GB + dane wektorowe na serwerze, co sprawia, że ​​mam pytanie, czy specyfikacje twojego systemu wymagają aktualizacji (dla porównania, używam 12 GB pamięci RAM, drugiej generacji i7, przeciętnej karty graficznej).

wprowadź opis zdjęcia tutaj


3

Czy musisz wyrenderować mapę, aby móc wysyłać zapytania? Co jeśli uruchomiłeś skrypty python i uzyskałeś dostęp do danych bez rysowania mapy? Nie jestem pewien twojego dokładnego procesu, potrzeb itp., Ale myśl.


3

W ramach odpowiedzi na odpowiedź Aarona można również użyć zapytania dotyczącego definicji, aby ograniczyć liczbę wyników zwracanych do wizualizacji (i obejmuje to analizę - uważam, że działa bardzo podobnie do selekcji). Jeśli nie wszystkie funkcje są potrzebne do przeglądania w danym momencie i nie zmieniasz ton regionu, zapytanie definicji może być wykonalnym rozwiązaniem, choć nie jest dokładną odpowiedzią na twoje pytanie lub potrzeby.


3

Słyszę twoją frustrację. Rutynowo pracuję z takimi dużymi plikami kształtu i ogólnie nie mam problemów z wyświetlaniem. Zgadzam się ze wszystkimi powyższymi komentarzami, szczególnie upewniając się, że wszystko jest w tej samej projekcji, w tym ramka danych. Zakładam, że skopiowałeś plik lokalnie i nie próbujesz uzyskać do niego dostępu przez sieć? Jedną z rzeczy, które spowodują problemy z wyświetlaniem plików kształtu tego rozmiaru, jest to, że istnieje ogromna liczba wierzchołków, jak w sieci strumieniowej. Jedynym rozwiązaniem, jakie znalazłem, jest tworzenie skryptu Pythona do wykonywania definicji warstw w locie, więc rysuję tylko kilka naraz. Inną rzeczą byłoby zaktualizowanie pamięci graficznej komputera i karty graficznej.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.