Muszę otworzyć plik kształtu z ArcMap w R, aby użyć go do dalszej analizy geostatystycznej. Przekształciłem go w plik tekstowy ASCII, ale w R jest rozpoznawany jako data.frame. Funkcja współrzędnych nie działa, gdy xiy są rozpoznawane jako nienumeryczne.
Czy możesz pomóc sobie z tym poradzić?
Odpowiedzi:
Użyj bezpośrednio pliku shapefile. Możesz to łatwo zrobić za pomocą pakietów
rgdal
lubsf
i odczytać kształt w obiekcie. Dla obu pakietów musisz podaćdsn
- źródło danych, którym w przypadku pliku shapefile jest katalog , ilayer
- które jest nazwą pliku shapefile, bez rozszerzenia:(W przypadku rgdal, w systemie OSX lub Linux nie można używać skrótu „~” dla katalogu domowego jako katalogu źródła danych (
dsn
) - w przeciwnym razie pojawi się nieprzydatny komunikat „Nie można otworzyć źródła danych”.sf
Pakiet nie mają to ograniczenie i inne zalety.)To da ci obiekt, który jest przestrzenną * ramką danych (punkty, linie lub wielokąty) - pola tabeli atrybutów są wtedy dostępne dla ciebie w taki sam sposób jak zwykła ramka danych, tj.
shape$ID
Dla kolumny ID.Jeśli chcesz użyć zaimportowanego pliku ASCII, powinieneś po prostu przekonwertować pola tekstowe (znakowe) xiy na liczby, np .:
Edytuj 18.01.2015 : zauważ, że rgdal jest nieco lepszy niż maptools (które początkowo zasugerowałem tutaj), przede wszystkim dlatego, że automatycznie czyta i zapisuje informacje o projekcji.
Uwagi:
as.numeric(as.character())
funkcje zagnieżdżone - jeśli tekst ASCII został odczytany jako czynnik (prawdopodobnie), zapewnia to otrzymanie wartości liczbowych zamiast poziomów czynników.rgdal
isf
mieć mylące sposoby dostępu do różnych typów plików i baz danych (np. w przypadku pliku GPX, dsn jest nazwą pliku i nakłada warstwy na poszczególne komponenty, takie jak punkty trasy, punkty ścieżki itp.), i konieczna jest uważna lektura przykładów online.źródło
as.character
aby obejść problem.dsn="directory where the shapefile, projection file, etc are located"
layer="name of the file without .shp extention"
dsn
argument nie powinien zawierać końcowych ukośników --- np.dsn = "C:/Users/Downloads/"
Powinien byćdsn = "C:/Users/Downloads"
. Mam nadzieję, że rozwiąże to czyjąś frustrację ...Zgadzam się z Simbamangu i rozwiązałem problem zachowania pliku kształtu, ale chcę skierować twoją uwagę na bibliotekę rgdal. Skorzystaj z linku sugerowanego przez gissolved dla NCEAS i postępuj zgodnie ze wskazówkami dla rgdal. Instalacja na niektórych komputerach może być trudna, ale może znacznie poprawić wyniki, jeśli chodzi o projekcje.
Biblioteka maptools jest doskonała i pozwala zdefiniować projekcję dla pliku kształtu, który czytasz, ale aby to zrobić, musisz wiedzieć, jak określić tę projekcję w formacie proj4. przykład może wyglądać mniej więcej tak:
Jeśli chcesz wybrać tę trasę, polecam http://spatialreference.org jako miejsce, w którym możesz dowiedzieć się, jak wygląda twoja projekcja w formacie proj4. Jeśli wygląda to na kłopot, rgdal ułatwi to, czytając plik .prj pliku shapefile ESRI (plik zawierający definicję rzutowania ESRI dla pliku shapefile. Aby użyć rgdal na tym samym pliku, po prostu napiszesz:
Prawdopodobnie możesz jeździć na deskorolce, nie robiąc tego, jeśli pracujesz tylko z jednym plikiem kształtu, ale gdy tylko zaczniesz szukać wielu źródeł danych lub nakładki z Mapami Google, utrzymanie dobrej projekcji staje się niezbędne.
Aby uzyskać przydatne wskazówki dotyczące danych przestrzennych w języku R, w tym wiele rzeczy na temat importowania i pracy z wzorcami punktów, mam kilka starych materiałów szkoleniowych online na stronie https://csde.washington.edu/workshop/point-patterns-and-raster -surfaces / (więcej warsztatów można znaleźć tutaj ), które mogą pomóc Ci zobaczyć, jak te metody się sprawdzają w praktyce.
źródło
Myślę, że nie powinieneś konwertować pliku shapefile na ASCII, ale zamiast tego użyj go bezpośrednio z jednym z rozszerzeń przestrzennych. Tutaj możesz znaleźć trzy sposoby odczytu (i zapisu) pliku kształtu http://www.nceas.ucsb.edu/scicomp/usecases/ReadWriteESRIShapeFiles . Projekt R-spatial prawdopodobnie Cię również zainteresuje http://cran.r-project.org/web/packages/sp/index.html .
źródło
Możesz użyć
sf
biblioteki, aby bezpośrednio otworzyć pliki ShapefilesR
. To szybciej niżrgdal
biblioteki, sprawdź tutaj: Proste funkcje dla R - Benchmarki . Aby uzyskać więcej informacji osf
pakiecie, sprawdź stronę główną projektu r-spatial .źródło
Łatwym rozwiązaniem w 2017 roku jest
shapefile()
funkcja wraster
bibliotece.AKTUALIZACJA: To nadal dobra opcja w 2019 roku.
źródło
Jeszcze jedną alternatywą jest użycie biblioteki fastshp, która oferuje:
Oto moje pytanie na temat SE, jak go używać z ggplot2:
Jak wykreślić plik shapefile załadowany przez fastshp w ggplot2?
źródło