Mam bardzo duży plik kształtu ESRI (> 8000 wielokątów, plik .shp to> 32 MB), który chcę wczytać do R na Windows 7.
Znam rgdal i readOGR (). Jednak przy takim rozmiarze pliku shapefile wczytywanie całego pliku shapefile do pamięci jest procesem bardzo powolnym. Ponadto interesuje mnie tylko kilka zgrupowanych wielokątów (<100) z 8 000 zawartych w pliku kształtu. Proces, dla którego muszę to zrobić, jest bardzo powtarzalny, tzn. Plik kształtów musi być ładowany wiele razy, więc obecnie jest bardzo powolny.
Dlatego zastanawiam się, czy można przyspieszyć proces tylko w części pliku kształtu. Załadowanie tak dużej ilości danych, a następnie odrzucenie większości z nich wydaje się niepraktyczne.
Odpowiedzi:
Jedyne, co przychodzi na myśl, to wykorzystanie nowej biblioteki „sfr” i związanej z nią prostej klasy funkcji do podzbioru. Biblioteka SFR jest aktualnie dostępny na GitHub i tu jest poradnik jak zacząć grę.
Nie wierzę, że można przesyłać dane w oparciu o zapytania podzbioru jednak, byłoby to z prędkością odczytu czasów dzierżawy się znacznie i jest podobno przyszłość klas przestrzennych R .
Inną opcją byłoby przechowywanie danych przestrzennych w bazie danych (np. PostGIS) i zapytanie z bazy danych. Może to być niezwykle skuteczny sposób radzenia sobie z dużymi danymi.
źródło
sf
Pakiet jest dostępny na CRAN od wersji 0.2 (2016-10-26): cran.r-project.org/web/packages/sf/index.htmlMyślę, że dobrym rozwiązaniem byłoby użycie GIS, takiego jak QGIS i wybranie potrzebnych funkcji.
Jeśli chcesz ponownie scalić wyniki, możesz utworzyć jeden plik z 7900 wielokątami, których nie chcesz przetwarzać, a następnie przetworz 100 wielokątów i po przetworzeniu połącz się ponownie.
źródło
Możesz utworzyć podzbiór pliku shapefile za pomocą
org2ogr
polecenia, jak pokazano tutaj:ogr2ogr wybiera funkcje według atrybutów
Musisz jednak znaleźć warunek wyboru odpowiednich funkcji.
źródło