Tengo un archivo shape de polígonos y otro archivo CSV que contiene una lista de puntos como pares (Lat, Lng).
Quiero verificar para cada par (lat, lng) del archivo CSV en qué polígono cae dentro ...
El archivo de forma se proyecta y el archivo de proyecto se lee así:
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]]
Mi plan es el siguiente:
- Lea el archivo de forma usando la
readShapePoly
función en elMapTools
paquete R. - Lea las coordenadas de puntos del archivo CSV en un marco de datos y conviértalo a SpatialPointsDataFrame
- Use la
over
función para determinar en qué polígono cae dentro.
Para hacerlo, necesito especificar proj4string
mientras se carga el archivo de forma en el paso 1 y también transformar las coordenadas del archivo CSV en el mismo sistema de proyección usando la spTransform
función antes de aplicar la over
función en el paso 3, ya que requiere que los puntos y los polígonos deben estar bajo el mismo sistema de proyección.
¿Alguna idea sobre cuál debería ser el valor correcto para el contenido del archivo de proyecto que se muestra arriba?
fuente
readOGR
función, siempre obtengo el error No se puede abrir el archivosummary
función para elSpatialPolygonDataFrame
objeto me dio el valor correcto para elproj4string
Respuestas:
Proj4string es una cadena PROJ4 crs válida .
ver ¿Cómo puedo obtener la cadena proj4 o el código EPSG de un archivo shapeprile .prj? y Shapefile PRJ a PostGIS SRID tabla de búsqueda?
en breve:
O
el resultado es EPSG: 27700, por lo que una primera versión de la cadena PROJ4 es
" + init = epsg: 27700 "
`O
haga clic en Proj4 y la cadena PROJ4 completa es:
" + proj = tmerc + lat_0 = 49 + lon_0 = -2 + k = 0.9996012717 + x_0 = 400000 + y_0 = -100000 + ellps = airy + datum = OSGB36 + unidades = m + no_defs "
fuente
Aquí hay un sitio web muy útil para recuperar el código EPSG para una proyección dada. En su caso, la proyección es "EPSG: 27700". Si tiene proyecciones definidas para el archivo de forma, puede asignar la proyección al crear el SpatialPointsDataFrame y luego usar la definición de proyección de su archivo de forma importado. El uso de "readOGR" del paquete rgdal retendrá las definiciones de proyección. Aquí hay un ejemplo de asignación y extracción de cadenas de coordenadas en datos de clase sp.
fuente