2015-07-27 5 views
1

У меня есть информационная карта содержит концентрацию PM10 в воздухе над сеул (столица) в Корее. Please, take a look. Я хочу построить семивариантность из этого набора данных. Как данные LAT/LON здесь, находится в степени, поэтому у меня есть проект этих данных. Я проецируются данные таким образом:Проблемы проецируют данные LON/LAT в R

library(rgdal) 

seoul3112 <- read.csv("seoul3112.csv", row.name=1) 
seoul3112 <- na.omit(seoul3112) 

coordinates(seoul3112) <- ~LON+LAT 
proj4string(seoul3112) <- "+proj=longlat +datum=WGS84" 

seoul3112 

после проецирования я получил seoul311, как как ниже

 coordinates PM10 
1 (126.976, 37.56464) 42 
2 (127.005, 37.57203) 37 
3 (127.0051, 37.54031) 46 
4 (127.0957, 37.54464) 47 
5 (127.0411, 37.54311) 46 

Q1: Я обнаружил, что после того, как проектирование, значение LON/LAT показывают почти такое же значение, как предыдущий фрейм данных. Мой вопрос в том, какова фактическая функция этой команды proj4string(seoul311) = "+proj=longlat +datum=WGS84". Здесь LON/LAT (степень) передается в km/m или что-то в этом роде?

Я пытался написать другой код, используя rgdal пакет, как показано ниже:

proj4string(seoul3112) <- "+proj=longlat +datum=WGS84" 
seoul3112 <- spTransform(seoul3112, 
         CRS("+proj=utm +north +zone=52 +datum=WGS84")) 
seoul3112 

после проецирования я получил seoul3112, как как ниже

 coordinates  ID  time PM10 
12  (321241, 4159438) 111121 2012030112 68 
173 (323824.6, 4160203) 111123 2012030112 64 
334 (323754.6, 4156684) 111131 2012030112 67 
495 (331771.9, 4156998) 111141 2012030112 65 
656 (326946.2, 4156927) 111142 2012030112 69 

Q2. Здесь я вижу, что значение LON/LAT преобразуется в какое-то большое значение! В чем смысл этой ценности? м/км или что-то в этом роде? в северном коде означает что? Северное полушарие?

Q3. Как я упоминал ранее, я хочу построить полуавтограмму над сеулом в Корее (зона utm 52). Итак, какое правило проектирования я должен использовать? Должен ли я рассматривать зону utm? когда следует рассмотреть зону utm?

У меня много путаницы о проецировании данных. не могли бы вы ответить на мои три вопроса в деталях?

ответ

0

(FYI: Это, как правило, плохая форма 3 вопросов в одном ЦЕ пост)

Q1: Вы на самом деле не «проект» что-нибудь в первом блоке операций. Вы создали «пространственный» объект из простого фрейма данных и «заявили», в какой системе координат (CRS) он находился. Вы также сделали это точно, поскольку у вас были только значения lat/lon. Загляните на страницу str(seoul3112), чтобы увидеть структуру результатов поиска SpatialPointsDataFrame.

Q2: Вы на самом деле сделали «проецируете» координаты на Универсальный поперечный Меркатор (UTM) CRS. Координаты сетки UTM выражаются как расстояние в метрах к востоку, называемое «восток», и расстояние в метрах до севера, называемое «северным».

Q3: Вы должны проверить с предложенными «официальными» рекомендациями правительства проекционных, но вы, вероятно, может сойти с рук что-то вроде азимуту равноудаленной для Южной Кореи (и она поддерживается в mapproject так легко работать в ggplot):

library(ggplot2) 
library(ggthemes) 
library(mapdata) 

seoul3112 <- read.csv("seoul3112.csv", row.name=1) 
seoul3112 <- na.omit(seoul3112) 

sk <- map_data("worldHires", "South Korea") 

gg <- ggplot() 
gg <- gg + geom_map(data=sk, map=sk, 
        aes(x=long, y=lat, map_id=region), 
        color="black", fill="white", size=0.25) 
gg <- gg + geom_point(data=seoul3112, aes(x=LON, y=LAT)) 
gg <- gg + coord_map("azequidistant") 
gg <- gg + theme_map() 
gg 

enter image description here

Как вы можете видеть, в зависимости от проекции (mapproject поддерживает только 41) ggplot может принять облегчить необходимость первого проецировать точки.

НО, вы вычисления вариограмм, так что если вы хотите работать в метрах, вы можете сделать:

coordinates(seoul3112) <- ~LON+LAT 
proj4string(seoul3112) <- "+proj=longlat +datum=WGS84" 
seoul3112_utm <- spTransform(seoul3112, 
          CRS("+proj=utm +north +zone=52 +datum=WGS84")) 

proj_3112 <- as.data.frame(coordinates(seoul3112_utm)) 
proj_3112 <- cbind.data.frame(proj_3112, [email protected]) 

, а затем вычислить расстояния (я предполагаю, что много здесь):

dists <- dist(proj_3112[,1:2]) 

, а затем закончите свою модель. nlme, geoR и еще несколько R-пакетов могут помочь в разработке и вычислении модели вариограммы (и построении графика).

+0

Я предпочитаю последний раздел вашего кода для метода проецирования (по карте). В этом коде, наконец, вы создали кадр данных из кадра данных пространственных точек. мой вопрос в том, могу ли я построить семивариантность из 'seoul3112_utm'? или мне нужно сделать фрейм данных, а затем построить график вариограммы? – Orpheus

+0

I _think_ вам нужно сделать фрейм данных (или матрицу) для использования с наиболее распространенными пакетами вариограммы в R. Я не знаком со всеми из них, хотя некоторые могут позволить вам использовать 'SpatialPointsDataFrame' напрямую , – hrbrmstr

+0

Я не уверен, но насколько я знаю, чтобы построить полувариантность пакета 'gstat', я должен сделать dataframe в качестве кадра данных пространственных точек, командуя« координаты (df) <- ~ x + y'. И здесь 'seoul3112_utm' уже является пространственным кадром данных, поэтому .... – Orpheus