Estou tendo um shapefile de polígonos e outro arquivo CSV que contém uma lista de pontos como pares (Lat, Lng) ..
Quero verificar para cada par (lat, lng) do arquivo CSV em que polígono se enquadra ..
O shapefile é projetado e o arquivo proj é assim:
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]]
Meu plano é o seguinte:
- Leia o shapefile usando a
readShapePoly
função noMapTools
pacote R. - Leia as coordenadas dos pontos do arquivo CSV em um quadro de dados e converta-o em SpatialPointsDataFrame
- Use a
over
função para determinar em qual polígono ele se encaixa.
Para fazer isso, preciso especificar o proj4string
carregamento do shapefile na etapa 1 e também transformar as coordenadas do arquivo CSV no mesmo sistema de projeção usando a spTransform
função antes de aplicar a over
função na etapa 3, pois exige que os pontos e polígonos sejam necessários. estar sob o mesmo sistema de projeção.
Alguma idéia sobre qual deve ser o valor correto para o conteúdo do arquivo proj mostrado acima?
coordinate-system
shapefile
r
proj
Moustafa Alzantot
fonte
fonte
readOGR
a função I a sempre obter não pode abrir arquivo de errosummary
função doSpatialPolygonDataFrame
objeto me forneceu o valor correto para oproj4string
Respostas:
O proj4string é uma string PROJ4 crs válida .
consulte Como posso obter a string proj4 ou o código EPSG de um arquivo .prj do shapefile? e Shapefile PRJ para a tabela de pesquisa PostGIS SRID?
em resumo:
Ou
o resultado é EPSG: 27700, portanto, uma primeira versão da sequência PROJ4 é
" + init = epsg: 27700 "
`Ou
clique no Proj4 e a sequência completa do PROJ4 é:
" + proj = tmerc + lat_0 = 49 + lon_0 = -2 + k = 0.9996012717 + x_0 = 400000 + y_0 = -100000 + ellps = arejado + datum = OSGB36 + unidades = m + no_defs "
fonte
Aqui está um site muito útil para recuperar o código EPSG para uma determinada projeção. No seu caso, a projeção é "EPSG: 27700". Se você tiver projeções definidas para o shapefile, poderá atribuir a projeção ao criar o SpatialPointsDataFrame e, em seguida, usar a definição de projeção do seu shapefile importado. O uso de "readOGR" no pacote rgdal manterá as definições de projeção. Aqui está um exemplo de atribuição e extração de cadeias de coordenadas nos dados da classe sp.
fonte