Czytaj tylko część pliku kształtu ESRI do R

10

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.

bmz
źródło
Z jakiej platformy korzystasz? Jeśli masz dostęp do ArcGIS, przypuszczam, że możesz napisać skrypt w ArcPy, który dokonuje wyboru podzbioru, a następnie wykonuje proces R ze skryptu python. Jest to zdecydowanie możliwe ... Uruchom wyszukiwanie Google w celu wykonania kodu R z pythona.
GeoJohn,
3
Może spróbuj wyeksportować do nowego pliku kształtu tę ważną część danych, a następnie popracuj nad nią w R.
ami
prawdopodobnie będzie działać z sf. Ale zapisz go w formacie obszaru roboczego R za pomocą saveRDS. Istnieją sposoby
ogólnego

Odpowiedzi:

8

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.

Jeffrey Evans
źródło
2
sfPakiet jest dostępny na CRAN od wersji 0.2 (2016-10-26): cran.r-project.org/web/packages/sf/index.html
RCS
1

Myś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.

MichaelStoner
źródło