Я пытаюсь использовать французские пространственные данные, распространяемые с использованием WFS. Я хочу использовать эти данные в приложении Shiny, которое позволяет пользователю обновлять данные, поэтому я действительно предпочел бы использовать WFS, а не только вставлять данные из шейп-файла в приложение.
Я могу получить данные, но с этим что-то не так в том смысле, что координаты, кажется, были перевернуты (X вместо Y и Y вместо X), что приводит к странной картине Франции. Я не очень знаком с деталями пространственного анализа и данных, и я, безусловно, что-то упускаю.
Я импортировал данные, используя функцию st_read, которую я поставил со ссылкой на сервис WFS. Затем я получаю перевернутую карту французской гидрографической сети. Однако, когда я подключаю QGIS по той же ссылке WFS, карта верна, поэтому я полагаю, что sf и QGIS не совсем одинаково обрабатывают вещи, но выясняют, почему мне не известно.
Глядя на ограничивающую рамку, мы видим, что значения, возвращаемые для x, соответствуют ожидаемым для y и наоборот.
У меня была проблема с двумя разными наборами данных, распределенными с использованием WFS одним и тем же провайдером (http://www.sandre.eaufrance.fr/).). Первый отображал точки, а данные содержали координаты XY, поэтому я удалил геометрию и преобразовал фрейм данных с помощью st_as_sf. с именами полей X и Y в параметре координаты. Это грязный обходной путь, но он не работает с моим вторым набором данных, который имеет геометрию MULTILINESTRING. Поэтому я бы предпочел чистый способ импорта / преобразования данных в правильный формат.
Вот минимальный пример кода для воспроизведения неожиданного поведения.
library(dplyr)
library(sf)
library(ggplot2)
data <- st_read("http://services.sandre.eaufrance.fr/geo/zon_FXX?Request=GetCapabilities&SERVICE=WFS&VERSION=1.1.0",
layer = "SegClassContinuiteEco_Liste2",
stringsAsFactors = FALSE)
st_bbox(data)
ggplot() +
geom_sf(data = data)
Код выше дает эту карту:
неправильная карта
Правильная карта должна выглядеть так (я повернул и перевернул оригинал):
правильная карта
Моя сессия Информация:
R version 3.5.3 (2019-03-11)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=French_France.1252 LC_CTYPE=French_France.1252
[3] LC_MONETARY=French_France.1252 LC_NUMERIC=C
[5] LC_TIME=French_France.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] sf_0.7-3 forcats_0.4.0 stringr_1.4.0 dplyr_0.8.0.1 purrr_0.3.2
[6] readr_1.3.1 tidyr_0.8.3 tibble_2.1.1 ggplot2_3.1.1 tidyverse_1.2.1
loaded via a namespace (and not attached):
[1] Rcpp_1.0.1 cellranger_1.1.0 pillar_1.3.1 compiler_3.5.3
[5] plyr_1.8.4 class_7.3-15 tools_3.5.3 jsonlite_1.6
[9] lubridate_1.7.4 gtable_0.3.0 nlme_3.1-137 lattice_0.20-38
[13] pkgconfig_2.0.2 rlang_0.3.4 DBI_1.0.0 cli_1.1.0
[17] rstudioapi_0.10 yaml_2.2.0 haven_2.1.0 e1071_1.7-1
[21] withr_2.1.2 xml2_1.2.0 httr_1.4.0 fs_1.2.7
[25] generics_0.0.2 hms_0.4.2.9001 classInt_0.3-1 grid_3.5.3
[29] tidyselect_0.2.5 glue_1.3.1 R6_2.4.0 fansi_0.4.0
[33] readxl_1.3.1 modelr_0.1.4 magrittr_1.5 usethis_1.5.0
[37] units_0.6-2 backports_1.1.4 scales_1.0.0 rvest_0.3.2
[41] assertthat_0.2.1 colorspace_1.4-1 utf8_1.1.4 stringi_1.4.3
[45] lazyeval_0.2.2 munsell_0.5.0 broom_0.5.2 crayon_1.3.4
Спасибо за любой совет, который вы могли бы дать мне.
Седрик