Mercurial > repos > ecology > data_paper_from_eml
comparison map_geographical_coverage.R @ 0:cfe884e53600 draft default tip
planemo upload for repository https://github.com/galaxyecology/tools-ecology/tree/main/tools-ecology/tools/make_data_paper_sketches commit 34f4e0604adc2a2ba4902ce6b8e6df2460eda292
| author | ecology |
|---|---|
| date | Tue, 15 Oct 2024 20:33:48 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:cfe884e53600 |
|---|---|
| 1 #From https://github.com/TanguyGen/metaCure/blob/main/R/eml_down.R | |
| 2 #Modified by Seguineau Pauline (2024-10-15) | |
| 3 library(dplyr) | |
| 4 library(xslt) | |
| 5 library(xml2) | |
| 6 library(mapview) | |
| 7 library(leaflet) | |
| 8 | |
| 9 args = commandArgs(trailingOnly=TRUE) | |
| 10 if (length(args)==0) | |
| 11 { | |
| 12 stop("This tool needs at least one argument") | |
| 13 }else{ | |
| 14 data <- args[1] | |
| 15 } | |
| 16 | |
| 17 #' map_geographical_coverage | |
| 18 #'Make a map from EML | |
| 19 #' @param eml Metadata using EML standard in XML format | |
| 20 #' | |
| 21 #' @return A map | |
| 22 #' @export | |
| 23 | |
| 24 map_geographical_coverage <- function(eml){ | |
| 25 name <- xml2::xml_find_all(eml, "//geographicCoverage/geographicDescription") | |
| 26 name <- unlist(xml2::as_list(name)) | |
| 27 | |
| 28 west <- xml2::xml_find_all(eml, "//geographicCoverage/boundingCoordinates/westBoundingCoordinate") | |
| 29 west <- as.numeric(unlist(xml2::as_list(west))) | |
| 30 | |
| 31 east <- xml2::xml_find_all(eml, "//geographicCoverage/boundingCoordinates/eastBoundingCoordinate") | |
| 32 east <- as.numeric(unlist(xml2::as_list(east))) | |
| 33 | |
| 34 north <- xml2::xml_find_all(eml, "//geographicCoverage/boundingCoordinates/northBoundingCoordinate") | |
| 35 north <- as.numeric(unlist(xml2::as_list(north))) | |
| 36 | |
| 37 south <- xml2::xml_find_all(eml, "//geographicCoverage/boundingCoordinates/southBoundingCoordinate") | |
| 38 south <- as.numeric(unlist(xml2::as_list(south))) | |
| 39 | |
| 40 geo_info <- data.frame(name = name, west = west, east = east, south = south, north = north) | |
| 41 | |
| 42 map <- leaflet(geo_info) %>% | |
| 43 addProviderTiles("CartoDB.Positron") | |
| 44 | |
| 45 for (i in 1:nrow(geo_info)) { | |
| 46 if (geo_info$west[i]==geo_info$east[i] && geo_info$south[i]==geo_info$north[i]){ | |
| 47 map <- map %>% addCircles(lng = geo_info$west[i] , lat= geo_info$south[i], fillColor = "transparent" ) %>% addScaleBar()} | |
| 48 | |
| 49 else if(geo_info$west[i]!=geo_info$east[i] && geo_info$south[i]!=geo_info$north[i]){ | |
| 50 map <- map %>% addRectangles(lng1 = geo_info$west[i], lat1 = geo_info$south[i], | |
| 51 lng2 = geo_info$east[i], lat2 = geo_info$north[i], fillColor = "transparent") %>% addScaleBar()} | |
| 52 } | |
| 53 mapview::mapshot(map, file = "map.png",remove_controls = c("zoomControl", "layersControl", "homeButton","drawToolbar", "easyButton")) | |
| 54 } | |
| 55 | |
| 56 doc <- read_xml(data) | |
| 57 | |
| 58 if (is.na(xml2::xml_find_first(doc, "//geographicCoverage"))){ | |
| 59 mes = "No geographic coverage found, skipping geographic coverage step." | |
| 60 mes | |
| 61 }else{ | |
| 62 map_geographical_coverage(doc) | |
| 63 } | |
| 64 |
