У меня есть шейп-файл полигонов и другой файл CSV, который содержит список точек в виде (Lat, Lng) пар.
Я хочу проверить для каждой пары (lat, lng) из файла CSV, в какой полигон он попадает внутрь ..
Шейп-файл проецируется, и файл proj выглядит так:
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]]
Мой план следующий:
- Прочтите шейп- файл, используя
readShapePoly
функцию изMapTools
пакета R. - Считать координаты точек из CSV-файла в информационный кадр и преобразовать его в SpatialPointsDataFrame
- Используйте
over
функцию, чтобы определить, в какой полигон он попадает.
Для этого мне нужно указать proj4string
время загрузки шейп-файла на шаге 1, а также преобразовать координаты из файла CSV в ту же систему проекции, используя spTransform
функцию, прежде чем применять over
функцию на шаге 3, так как для этого необходимо, чтобы точки и многоугольники быть под той же системой проекции.
Любая идея о том, что должно правильное значение для содержимого файла proj, показанного выше?
coordinate-system
shapefile
r
proj
Мустафа Альзантот
источник
источник
readOGR
функции Я всегда получаю не удается открыть файл ошибкиsummary
функции дляSpatialPolygonDataFrame
объекта дало мне правильное значение дляproj4string
Ответы:
Proj4string является допустимой строкой PROJ4 crs.
см. Как я могу получить строку proj4 или код EPSG из файла shapefile .prj? и Shapefile PRJ для таблицы поиска PostGIS SRID?
короче говоря:
Или
результат EPSG: 27700, поэтому первая версия строки PROJ4
" + init = epsg: 27700 "
`Или
нажмите на Proj4, и полная строка PROJ4:
" + proj = tmerc + lat_0 = 49 + lon_0 = -2 + k = 0.9996012717 + x_0 = 400000 + y_0 = -100000 + ellps = airy + datum = OSGB36 + unit = m + no_defs "
источник
Вот очень удобный сайт для получения кода EPSG для данного прогноза. В вашем случае прогноз "EPSG: 27700". Если у вас есть проекции, определенные для шейп-файла, вы можете назначить проекцию при создании SpatialPointsDataFrame, а затем использовать определение проекции из импортированного шейп-файла. Использование «readOGR» из пакета rgdal сохранит определения проекции. Вот пример назначения и извлечения координатных строк в данных класса sp.
источник