Telegram Group & Telegram Channel
This media is not supported in your browser
VIEW IN TELEGRAM
Создание векторных объектов: точки

Зададим координаты (долготу и широту) точек и составим из них матрицу с помощью функции cbind():

longitude <- c(-116.7, -120.4, -116.7, -113.5, -115.5, -120.8, -119.5, -113.7, -113.7, -110.7)
latitude <- c(45.3, 42.6, 38.9, 42.1, 35.7, 38.9, 36.2, 39, 41.6, 36.9)
lonlat <- cbind(longitude, latitude)


Для выполнения этих операций пакет terra не нужен. А вот дальше он понадобится, так что не забудьте его загрузить с помощью library(terra).

Обратите внимание, что в отличие от географии, где первой координатой указывается широта (latitude), здесь первой указана долгота (longitude). Так принято во многих компьютерных программах для работы с пространственными данными. Здесь работают традиции не географии, а математики: долгота соответствует координате Х декартовой системы координат, которая обычно в математике указывается первой.

Для создания объектов SpatVector с нуля или из файлов данных служит функция vect пакета terra

pts <- vect(lonlat)


Фактически, vect является методом класса SpatVector. Мы будем часто называть подобные методы функциями, поскольку путаницы это не создаст.

Заглянем внутрь pts:

pts
## class : SpatVector
## geometry : points
## dimensions : 10, 0 (geometries, attributes)
## extent : -120.8, -110.7, 35.7, 45.3 (xmin, xmax, ymin, ymax)
## coord. ref. :

geom(pts)
## geom part x y hole
## [1,] 1 1 -116.7 45.3 0
## [2,] 2 1 -120.4 42.6 0
## [3,] 3 1 -116.7 38.9 0
## [4,] 4 1 -113.5 42.1 0
## [5,] 5 1 -115.5 35.7 0
## [6,] 6 1 -120.8 38.9 0
## [7,] 7 1 -119.5 36.2 0
## [8,] 8 1 -113.7 39.0 0
## [9,] 9 1 -113.7 41.6 0
## [10,] 10 1 -110.7 36.9 0


Видно, что это объект класса SpatVector, который состоит из точек (geometry: points). Всего этих точек 10 и атрибутов у данных нет (dimensions: 10, 0 (geometries, attributes)). Экстент (extent) или охват данных автоматически рассчитан по координатам точек. В свойствах объекта указана система координат (coord. ref.). При создании pts мы её не задали. Давайте сделаем это сейчас.

Задать или узнать текущую систему координат (Coordinate Reference System, CRS) можно с помощью функции crs, знакомой нам по работе с растровыми данными:

crdref <- "+proj=longlat +datum=WGS84"
crs(pts) <- crdref

pts
## class : SpatVector
## geometry : points
## dimensions : 10, 0 (geometries, attributes)
## extent : -120.8, -110.7, 35.7, 45.3 (xmin, xmax, ymin, ymax)
## coord. ref. : +proj=longlat +datum=WGS84 +no_defs


Такого же результата можно было добиться, задав систему координат при создании pts

pts <- vect(lonlat, crs=crdref)
pts


Теперь добавим к нашему объекту атрибуты (переменные). Сначала создадим таблицу, число строк которой должно совпадать с числом точек (линий, полигонов, …) в векторном объекте:

precip_val <- runif(nrow(lonlat), min=0, max=100)
dt <- data.frame(ID=1:nrow(lonlat), precip=precip_val)


Здесь мы сгенерировали случайные значения осадков (precip_val) в диапазоне от 0 до 100, которых будет столько же, сколько и точек. Затем эти значения поместили в таблицу атрибутов.

Создадим новый векторный объект ptsv с заданными атрибутами

ptsv <- vect(lonlat, atts=dt, crs=crdref)


ptsv
## class : SpatVector
## geometry : points
## dimensions : 10, 2 (geometries, attributes)
## extent : -120.8, -110.7, 35.7, 45.3 (xmin, xmax, ymin, ymax)
## coord. ref. : +proj=longlat +datum=WGS84 +no_defs
## names : ID precip
## type : <int> <num>
## values : 1 98.93
## 2 15.76
## 3 68.81


У ptsv два атрибута: идентификатор точки (ID) и значение осадков в точке (precip).

#R
👍8🤔21



group-telegram.com/sputnikDZZ/3471
Create:
Last Update:

Создание векторных объектов: точки

Зададим координаты (долготу и широту) точек и составим из них матрицу с помощью функции cbind():

longitude <- c(-116.7, -120.4, -116.7, -113.5, -115.5, -120.8, -119.5, -113.7, -113.7, -110.7)
latitude <- c(45.3, 42.6, 38.9, 42.1, 35.7, 38.9, 36.2, 39, 41.6, 36.9)
lonlat <- cbind(longitude, latitude)


Для выполнения этих операций пакет terra не нужен. А вот дальше он понадобится, так что не забудьте его загрузить с помощью library(terra).

Обратите внимание, что в отличие от географии, где первой координатой указывается широта (latitude), здесь первой указана долгота (longitude). Так принято во многих компьютерных программах для работы с пространственными данными. Здесь работают традиции не географии, а математики: долгота соответствует координате Х декартовой системы координат, которая обычно в математике указывается первой.

Для создания объектов SpatVector с нуля или из файлов данных служит функция vect пакета terra

pts <- vect(lonlat)


Фактически, vect является методом класса SpatVector. Мы будем часто называть подобные методы функциями, поскольку путаницы это не создаст.

Заглянем внутрь pts:

pts
## class : SpatVector
## geometry : points
## dimensions : 10, 0 (geometries, attributes)
## extent : -120.8, -110.7, 35.7, 45.3 (xmin, xmax, ymin, ymax)
## coord. ref. :

geom(pts)
## geom part x y hole
## [1,] 1 1 -116.7 45.3 0
## [2,] 2 1 -120.4 42.6 0
## [3,] 3 1 -116.7 38.9 0
## [4,] 4 1 -113.5 42.1 0
## [5,] 5 1 -115.5 35.7 0
## [6,] 6 1 -120.8 38.9 0
## [7,] 7 1 -119.5 36.2 0
## [8,] 8 1 -113.7 39.0 0
## [9,] 9 1 -113.7 41.6 0
## [10,] 10 1 -110.7 36.9 0


Видно, что это объект класса SpatVector, который состоит из точек (geometry: points). Всего этих точек 10 и атрибутов у данных нет (dimensions: 10, 0 (geometries, attributes)). Экстент (extent) или охват данных автоматически рассчитан по координатам точек. В свойствах объекта указана система координат (coord. ref.). При создании pts мы её не задали. Давайте сделаем это сейчас.

Задать или узнать текущую систему координат (Coordinate Reference System, CRS) можно с помощью функции crs, знакомой нам по работе с растровыми данными:

crdref <- "+proj=longlat +datum=WGS84"
crs(pts) <- crdref

pts
## class : SpatVector
## geometry : points
## dimensions : 10, 0 (geometries, attributes)
## extent : -120.8, -110.7, 35.7, 45.3 (xmin, xmax, ymin, ymax)
## coord. ref. : +proj=longlat +datum=WGS84 +no_defs


Такого же результата можно было добиться, задав систему координат при создании pts

pts <- vect(lonlat, crs=crdref)
pts


Теперь добавим к нашему объекту атрибуты (переменные). Сначала создадим таблицу, число строк которой должно совпадать с числом точек (линий, полигонов, …) в векторном объекте:

precip_val <- runif(nrow(lonlat), min=0, max=100)
dt <- data.frame(ID=1:nrow(lonlat), precip=precip_val)


Здесь мы сгенерировали случайные значения осадков (precip_val) в диапазоне от 0 до 100, которых будет столько же, сколько и точек. Затем эти значения поместили в таблицу атрибутов.

Создадим новый векторный объект ptsv с заданными атрибутами

ptsv <- vect(lonlat, atts=dt, crs=crdref)


ptsv
## class : SpatVector
## geometry : points
## dimensions : 10, 2 (geometries, attributes)
## extent : -120.8, -110.7, 35.7, 45.3 (xmin, xmax, ymin, ymax)
## coord. ref. : +proj=longlat +datum=WGS84 +no_defs
## names : ID precip
## type : <int> <num>
## values : 1 98.93
## 2 15.76
## 3 68.81


У ptsv два атрибута: идентификатор точки (ID) и значение осадков в точке (precip).

#R

BY Спутник ДЗЗ


Share with your friend now:
group-telegram.com/sputnikDZZ/3471

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

Despite Telegram's origins, its approach to users' security has privacy advocates worried. As the war in Ukraine rages, the messaging app Telegram has emerged as the go-to place for unfiltered live war updates for both Ukrainian refugees and increasingly isolated Russians alike. The S&P 500 fell 1.3% to 4,204.36, and the Dow Jones Industrial Average was down 0.7% to 32,943.33. The Dow posted a fifth straight weekly loss — its longest losing streak since 2019. The Nasdaq Composite tumbled 2.2% to 12,843.81. Though all three indexes opened in the green, stocks took a turn after a new report showed U.S. consumer sentiment deteriorated more than expected in early March as consumers' inflation expectations soared to the highest since 1981. DFR Lab sent the image through Microsoft Azure's Face Verification program and found that it was "highly unlikely" that the person in the second photo was the same as the first woman. The fact-checker Logically AI also found the claim to be false. The woman, Olena Kurilo, was also captured in a video after the airstrike and shown to have the injuries. "He has to start being more proactive and to find a real solution to this situation, not stay in standby without interfering. It's a very irresponsible position from the owner of Telegram," she said.
from us


Telegram Спутник ДЗЗ
FROM American