Mam plik kształtu wielokątów i inny plik CSV, który zawiera listę punktów w postaci par (Lat, Lng) ..
Chcę sprawdzić dla każdej pary (łac., Lng) z pliku CSV, w którym wielokącie wpada.
Plik shapefile jest wyświetlany, a plik proj wygląda następująco:
PROJCS["Transverse_Mercator",GEOGCS["GCS_OSGB 1936",
DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",49],PARAMETER["central_meridian",-2],PARAMETER["scale_factor",0.9996012717],PARAMETER["false_easting",400000],PARAMETER["false_northing",-100000],UNIT["Meter",1]]
Mój plan jest następujący:
- Odczytaj plik kształtu za pomocą
readShapePoly
funkcji wMapTools
pakiecie R. - Odczytaj współrzędne punktów z pliku CSV do ramki danych i przekonwertuj ją na SpatialPointsDataFrame
- Użyj
over
funkcji, aby określić, w którym wielokącie wchodzi.
Aby to zrobić, muszę określić proj4string
podczas ładowania pliku kształtu w kroku 1, a także przekształcić współrzędne z pliku CSV do tego samego systemu projekcji za pomocą spTransform
funkcji przed zastosowaniem over
funkcji w kroku 3, ponieważ wymaga to, aby punkty i wielokąty musiały być pod tym samym systemem projekcji.
Masz pojęcie o tym, jaka powinna być poprawna wartość dla zawartości pliku proj pokazanej powyżej?
coordinate-system
shapefile
r
proj
Moustafa Alzantot
źródło
źródło
readOGR
funkcji I a zawsze dostać nie można otworzyć pliku błędusummary
funkcji dlaSpatialPolygonDataFrame
obiektu dało mi poprawną wartość dlaproj4string
Odpowiedzi:
Łańcuch proj4string jest poprawnym ciągiem crs PROJ4 .
zobacz Jak mogę pobrać ciąg proj4 lub kod EPSG z pliku .prj shapefile? i Shapefile PRJ do tabeli odnośników PostGIS SRID?
w skrócie:
Lub
wynikiem jest EPSG: 27700, więc pierwsza wersja ciągu PROJ4 to
„ + init = epsg: 27700 ”
„Lub
kliknij Proj4, a pełny ciąg PROJ4 to:
„ + proj = tmerc + lat_0 = 49 + lon_0 = -2 + k = 0,9996012717 + x_0 = 400000 + y_0 = -100000 + ellps = przewiewny + dane = OSGB36 + jednostki = m + no_defs ”
źródło
Oto bardzo przydatna strona internetowa do pobierania kodu EPSG dla danej projekcji. W twoim przypadku projekcja to „EPSG: 27700”. Jeśli masz zdefiniowane rzuty dla pliku kształtu, możesz przypisać rzut podczas tworzenia SpatialPointsDataFrame, a następnie użyć definicji rzutu z importowanego pliku kształtu. Użycie „readOGR” z pakietu rgdal zachowa definicje projekcji. Oto przykład przypisywania i ciągnięcia ciągów współrzędnych na danych klasy sp.
źródło