J'ai un fichier de formes de polygones et un autre fichier CSV qui contient une liste de points sous forme de paires (Lat, Lng) ..
Je veux vérifier pour chaque paire (lat, lng) du fichier CSV dans quel polygone se situe-t-il.
Le fichier de formes est projeté et le fichier proj se lit comme suit:
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]]
Mon plan est le suivant:
- Lisez le fichier de formes à l'aide de la
readShapePoly
fonction duMapTools
package R. - Lire les coordonnées des points du fichier CSV dans une trame de données et les convertir en SpatialPointsDataFrame
- Utilisez la
over
fonction pour déterminer dans quel polygone il se trouve.
Pour ce faire, je dois spécifier le proj4string
pendant le chargement du fichier de formes à l'étape 1 et également transformer les coordonnées du fichier CSV dans le même système de projection à l'aide de la spTransform
fonction avant d'appliquer la over
fonction à l'étape 3 car cela nécessite que les points et les polygones doivent être sous le même système de projection.
Une idée de la valeur correcte du contenu du fichier proj indiqué ci-dessus?
la source
readOGR
fonction, j'obtiens toujours une erreur d' ouverture de fichiersummary
fonction pour l'SpatialPolygonDataFrame
objet m'a donné la valeur correcte pour leproj4string
Réponses:
La chaîne proj4 est une chaîne crs PROJ4 valide .
voir Comment puis-je obtenir la chaîne proj4 ou le code EPSG à partir d'un fichier shapefile .prj? et Shapefile PRJ à la table de recherche PostGIS SRID?
en bref:
Ou
le résultat est EPSG: 27700 donc une première version de la chaîne PROJ4 est
" + init = epsg: 27700 "
`Ou
cliquez sur Proj4 et la chaîne complète de PROJ4 est:
" + proj = tmerc + lat_0 = 49 + lon_0 = -2 + k = 0.9996012717 + x_0 = 400000 + y_0 = -100000 + ellps = aéré + datum = OSGB36 + unités = m + no_defs "
la source
Voici un site Web très pratique pour récupérer le code EPSG pour une projection donnée. Dans votre cas, la projection est "EPSG: 27700". Si des projections sont définies pour le fichier de formes, vous pouvez affecter la projection lorsque vous créez le SpatialPointsDataFrame, puis utiliser la définition de projection de votre fichier de formes importé. L'utilisation de "readOGR" à partir du package rgdal conservera les définitions de projection. Voici un exemple d'affectation et d'extraction de chaînes de coordonnées sur des données de classe sp.
la source