J'ai une trame de données de coordonnées lat/long et un polygone, qui représente un trait de côte. J'essaie de trouver la distance entre chaque point et la caractéristique la plus proche de la côte. Je voudrais finir avec une trame de données de sortie qui inclut des colonnes pour mes valeurs lat/long d'origine et une nouvelle colonne de distance.Trouver les distances les plus proches entre un vecteur de points et un polygone dans R
J'ai essayé d'utiliser la fonction gDistance
après avoir lu les réponses à des questions similaires en ligne, mais je pense qu'il me manque quelques étapes et j'ai du mal à comprendre. À l'heure actuelle, je ne me retrouve qu'avec une seule valeur de distance. Je suis tout à fait nouveau à R et j'apprécierais vraiment toute aide que quelqu'un pourrait être en mesure de donner.
Merci!
#Load data
Locs = structure(list(id = 1:5, Lat = c(29.59679167, 29.43586667, 29.37642222,29.52786111, 30.10603611), Long = c(-81.02547778, -80.92573889,
-80.97714167, -81.08721667, -80.94368611)), .Names = c("id","Lat", "Long"), class = "data.frame", row.names = c(NA, -5L))
#Extract lat/long coordinates
xy = Locs[,c("Lat","Long")]
#Create SpatialPointsDataFrame from xy data and change projection to metres
spdf = SpatialPointsDataFrame(coords=xy, data=xy, proj4string = CRS("+proj=aea +zone=17 ellps=WGS84"))
#Read in shapefile as a spatialdataframe object
coast = readOGR(dsn="land data", layer="coast")
#Transform to AEA (m) projection to match projection of points
land_poly = spTransform(coast, CRS("+proj=aea +zone=17 ellps=WGS84"))
#OR load map from map package (but unfortunately map objects do not work in gDistance)
library(maps)
library(mapdata)
coast2 = map('usa', col = "grey90", fill=TRUE)
#Calculate distance between each point and the nearest land feature
for(i in 1:dim(spdf)[1]){
g = gDistance(spdf[i,],land_poly)
}
EDIT: Utilisation des modifications du code de FEA ci-dessous (pour la pour l'étape en boucle), je suis en mesure d'obtenir des valeurs gDistance pour chaque ligne, mais les distances de sortie ne sont pas correctes (voir ci-dessous). Selon arcGIS, ils devraient être entre 4-37km, pas> 500km. Des pensées sur ce que je fais mal ici? Mon polygone terrestre et mes points sont tous les deux dans la même projection.
sortie gDistance
id Lat Long dist_gDist
1 1 29.59679 -81.02548 516299.0
2 2 29.43587 -80.92574 516298.8
3 3 29.37642 -80.97714 516298.9
4 4 29.52786 -81.08722 516299.0
5 5 30.10604 -80.94369 516299.0
Les distances correctes (calculées SIG)
id Lat Long dist_arc
1 1 29.59679 -81.02548 13.630
2 2 29.43587 -80.92574 15.039
3 3 29.37642 -80.97714 8.111
4 4 29.52786 -81.08722 4.784
5 5 30.10604 -80.94369 36.855
Est-ce que [ce] (http://stackoverflow.com/questions/16448402/distance-of-point-feature-to-nearest-polygon-in-r) ou [this] (http://stackoverflow.com/questions/15294343/calculating-the-distance-between-polygon-and-point-in-r) aider, ou avez-vous déjà regardé ces derniers? – eipi10
@ eipi10 - Merci pour les liens. Oui, je les ai lus mais ils ne m'ont pas aidé à résoudre le problème. Merci. –