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: |

Perpetrators of such fraud use various marketing techniques to attract subscribers on their social media channels. Some people used the platform to organize ahead of the storming of the U.S. Capitol in January 2021, and last month Senator Mark Warner sent a letter to Durov urging him to curb Russian information operations on Telegram. Oleksandra Matviichuk, a Kyiv-based lawyer and head of the Center for Civil Liberties, called Durov’s position "very weak," and urged concrete improvements. Elsewhere, version 8.6 of Telegram integrates the in-app camera option into the gallery, while a new navigation bar gives quick access to photos, files, location sharing, and more. Again, in contrast to Facebook, Google and Twitter, Telegram's founder Pavel Durov runs his company in relative secrecy from Dubai.
from ar


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