Marcatori direcțional în R/prospect | R-bloggeri

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

Deci, ați folosit excelentul exiftool pentru a extrage toate informațiile legate de GPS dintr-un director de fotografii în format JPG și pentru a scrie într-un fișier CSV:

exiftool '-*GPS*' -ext jpg -csv . > outfile.csv

Ați folosit R/leaflet pentru a reprezenta coordonatele (latitudine și longitudine) înainte, dar ce zici de acea etichetă numită GPSImgDirection? Ar fi bine să ai un fel de marker care să indice direcția în care te îndreptai când a fost făcută fotografia.

Pentru mine, o căutare pe Google a oferit indicii, dar nu o singură soluție, evidentă, simplă la această problemă (efectul AI generativ? timpul va spune…), așa că iată ce am adunat din mai multe surse, în special această postare StackOverflow.

Punctele cheie sunt:

  • utilizare AwesomeIcons() pentru a crea o pictogramă direcțională care poate fi rotită
  • adăugați pictogramele pe hartă folosind addAwesomeMarkers()

Iată un exemplu de cod care utilizează pictograma Font Awesome lung-săgeată în sus. Deoarece „sus” (nord) corespunde cu zero grade, aplicând o rotație corespunzătoare GPSImgDirection ar trebui să aibă ca rezultat orientarea corectă a markerului. Etichetele legate de GPS în acest caz provin de la un iPhone 13.

library(readr)
library(leaflet)
library(sp)

outfile <- read_csv("outfile.csv")

# create dataset
# ugly but it works
dataset <- outfile %>% 
  mutate(GPSLatitude = str_replace(GPSLatitude, " deg", "d"), 
         GPSLatitude = GPSLatitude %>% 
         char2dms() %>% 
           as.numeric(), 
         GPSLongitude = str_replace(GPSLongitude, " deg", "d"), 
         GPSLongitude = GPSLongitude %>% 
           char2dms() %>% 
           as.numeric(),
         GPSHPositioningError = str_replace(GPSHPositioningError, " m", ""),
         GPSHPositioningError = GPSHPositioningError %>% 
           as.numeric()) %>% 
  select(latitude = GPSLatitude, 
         longitude = GPSLongitude, 
         GPSTimeStamp, 
         GPSImgDirection, 
         GPSHPositioningError)

# create the marker icons
icons <- awesomeIcons(iconRotate = dataset$GPSImgDirection,
                      icon = "long-arrow-up",
                      library = "fa",
                      markerColor = "white", 
                      squareMarker = TRUE)

# create map
# can filter on positioning error if desired
leaflet(data = dataset %>%
  addProviderTiles(provider = providers$CartoDB.Positron) %>%
  addAwesomeMarkers(icon = icons, label = ~GPSTimeStamp)

Iată o captură de ecran a hărții interactive rezultate.

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.