Geom_sf не использует геометрические координаты на осях, но строит правильную форму многоугольника? - PullRequest
0 голосов
/ 19 октября 2018

Моя общая цель - объединить несколько файлов формы (полигоны речных суббассейнов из большого речного бассейна) в один файл и построить карту.Этот новый объединенный файл будет позже объединен с переменными данными, например (количество осадков) и графиком по aes().

Моя проблема:
ggplot()+geom_sf() отображает правильные формы многоугольников, но не имеет правильных координат на осях - он не использует значениядано в столбце геометрии по осям.

Мои мысли о том, что не так, но я не уверен, как исправить:

  1. Файл формы, считанный в, имеет геометрию в 'long '' lat '(crs= 4326), но crs говорит, что координаты находятся в UTM Zone 48N WGS84 (crs=32648).Если я пытаюсь принудительно установить crs на 4326, значения координат меняются, как если бы формула преобразования пыталась их исправить.
  2. geom_sf и coord_sf делают что-то, чего я не понимаю!

.

library(sp)  
library(raster)  
library(ggplot2)  
library(sf)  
library(ggsf)  
library(rgdal)  
library(plyr)   
library(dplyr)    
library(purrr)  

setwd("/Users/.../Sub_Basin_Outlines_withSdata/")  
list.files('/Users/.../Sub_Basin_Outlines_withSdata/', pattern='\\.shp$')

Чтение отдельных файлов многоугольников из папки,Объедините с ID.

bangsai <- st_read("./without_S_data/", "Nam Bang Sai")  
BasinID <- "BGS"  
bangsai <- cbind(bangsai,BasinID)   

ing <- st_read("./without_S_data/", "Nam Ing Outline")  
BasinID <- "ING"  

Два отдельных файла формы импортируются как простые функции, см. Изображение кода R

Объедините отдельные файлы формы многоугольника суббассейна водин шейп-файл с несколькими объектами.

all_sub_basins <- rbind(bangsai,ing)  

Изображение показывает значения координат многоугольников / объектов в all_sub_basins$geometry.Они в длинном латинском формате, но proj4sting предлагает UTM?

Изобразить all_sub_basins шейп-файл простого объекта в ggplot

subbasins <- ggplot()+  
  geom_sf(data=all_sub_basins, colour="red", fill=NA)  
subbasins

Результат составлен правильнофайл формы с несколькими объектами (в этом изображении больше полигонов, чем описано выше).Однако оси неверны (бессмысленные значения) и не отображают те же значения, что и в геометрическом поле.

Если я добавлю coord_sf и подтвердю crs:

subbasins <- ggplot() +  
  geom_sf(data=all_sub_basins, colour="red", fill=NA)  
  coord_sf(datum=st_crs(32648), xlim = c(94,110), ylim = c(9,34))  
subbasins

ТогдаЯ получаю правильные значения осей, но не как координаты с N и E .Кажется, что геометрия не распознается как координаты, просто как вынужденные числа?

Я не возражаю, если координаты UTM Zone 48N или lat long.Могу ли я исправить это любым из этих способов?Если да, то как мне этого добиться?

  1. Измените файл формы файла crs, не изменяя значения в столбце геометрии, чтобы geom_sf знал, чтобы построить правильный текст осей.
  2. Извлеките геометрию из файла формы в файл с двумя столбцами .csv с длинными и длинными столбцами.Конвертируйте csv в sf и создайте мой собственный файл формы с правильными crs.
  3. В крайнем случае, оставьте график как есть и замените текст новых осей вручную.

Любая помощь очень ценится!

...