- PVSM.RU - https://www.pvsm.ru -
Ввод/вывод, изменение и визуализация геопространственных данных — задачи, общие для многих дисциплин. Поэтому многие заинтересованы в создании хороших инструментов для их решения. Набор инструментов для работы с пространственными данными постоянно растет. Мы поверхностно рассмотрим каждый из них. Подробности можно получить по ссылкам на cran или github.
Мы не пытаемся заменить уже существующие в R геопространственные библиотеки — скорее, дополнить и создать небольшие инструменты, позволяющие легко воспользоваться только необходимыми вам функциями.
geojsonio [2] — инструмент для конвертации данных из и в формат geojson. Конвертируйте данные в/из GeoJSON из различных классов R: векторов, списков, пакетов данных (data frame), векторных файлов и пространственных классов.
Например:
library("geojsonio")
geojson_json(c(-99.74, 32.45), pretty = TRUE)
#> {
#> "type": "FeatureCollection",
#> "features": [
#> {
#> "type": "Feature",
#> "geometry": {
#> "type": "Point",
#> "coordinates": [-99.74, 32.45]
#> },
#> "properties": {}
#> }
#> ]
#> }
wellknown [4] — инструмент для конвертации в и из текстовых данных в формате well-known. Конвертируйте WKT/WKB в GeoJSON и обратно. Включены функции конвертации между GeoJSON и WKT/WKB, создания GeoJSON-свойств, создания WKT/WKB из объектов R (например, списков, пакетов данных (data frame), векторов), сборки WKT.
Например:
library("wellknown")
point(data.frame(lon = -116.4, lat = 45.2))
#> [1] "POINT (-116.4000000000000057 45.2000000000000028)"
gistr [6] — это не геопространственный инструмент сам по себе, но он крайне полезен для совместного использования карт. Скажем, с помощью всего нескольких строчек можно поделиться интерактивной картой на GitHub.
Например, с помощью geojsonio
, описанного выше:
library("gistr")
cat(geojson_json(us_cities[1:100,], lat = 'lat', lon = 'long'), file = "map.geojson")
gist_create("map.geojson")
R-клиент для turf.js [9] (расширенный геопространственный анализ для браузеров и модулей).
В lawn
есть функция для каждого метода в turf.js
. А также:
view()
для легкой визуализации результатов вызова lawn
-функций.Например:
library("lawn")
lawn_hex_grid(c(-96,31,-84,40), 50, 'miles') %>% view
R-клиент для разбиения геопространственных объектов на части.
Например:
library("geoaxe")
library("rgeos")
wkt <- "POLYGON((-180 -20, -140 55, 10 0, -140 -60, -180 -20))"
poly <- rgeos::readWKT(wkt)
polys <- chop(x = poly)
plot(poly, lwd = 6, mar = c(0, 0, 0, 0))
И разделенный на части многогранник:
plot(polys, add = TRUE, mar = c(0, 0, 0, 0))
cran github [13]
R-клиент для proj4js [14], Javascript-библиотеки для проекций. proj
еще нет на CRAN.
cran github [15]
R-клиент для получения «ландсат»-данных из публичных хранилищ AWS. getlandsat
еще нет на CRAN.
Например:
library("getlandsat")
head(lsat_scenes())
#> entityId acquisitionDate cloudCover processingLevel
#> 1 LC80101172015002LGN00 2015-01-02 15:49:05 80.81 L1GT
#> 2 LC80260392015002LGN00 2015-01-02 16:56:51 90.84 L1GT
#> 3 LC82270742015002LGN00 2015-01-02 13:53:02 83.44 L1GT
#> 4 LC82270732015002LGN00 2015-01-02 13:52:38 52.29 L1T
#> 5 LC82270622015002LGN00 2015-01-02 13:48:14 38.85 L1T
#> 6 LC82111152015002LGN00 2015-01-02 12:30:31 22.93 L1GT
#> path row min_lat min_lon max_lat max_lon
#> 1 10 117 -79.09923 -139.66082 -77.75440 -125.09297
#> 2 26 39 29.23106 -97.48576 31.36421 -95.16029
#> 3 227 74 -21.28598 -59.27736 -19.17398 -57.07423
#> 4 227 73 -19.84365 -58.93258 -17.73324 -56.74692
#> 5 227 62 -3.95294 -55.38896 -1.84491 -53.32906
#> 6 211 115 -78.54179 -79.36148 -75.51003 -69.81645
#> download_url
#> 1 https://s3-us-west-2.amazonaws.com/landsat-pds/L8/010/117/LC80101172015002LGN00/index.html
#> 2 https://s3-us-west-2.amazonaws.com/landsat-pds/L8/026/039/LC80260392015002LGN00/index.html
#> 3 https://s3-us-west-2.amazonaws.com/landsat-pds/L8/227/074/LC82270742015002LGN00/index.html
#> 4 https://s3-us-west-2.amazonaws.com/landsat-pds/L8/227/073/LC82270732015002LGN00/index.html
#> 5 https://s3-us-west-2.amazonaws.com/landsat-pds/L8/227/062/LC82270622015002LGN00/index.html
#> 6 https://s3-us-west-2.amazonaws.com/landsat-pds/L8/211/115/LC82111152015002LGN00/index.html
cran github [16]
Делайте срезы GeoJSON так же легко, как получилось бы с пакетом данных (data frame). Это надстройка над jqr
, R-обертки для jq [17], обработчика JSON.
library("siftgeojson")
# данные для примера
file <- system.file("examples", "zillow_or.geojson", package = "siftgeojson")
json <- paste0(readLines(file), collapse = "")
# выбрать только округ Малтнома (Multnomah), проверить, что вернулся только округ Малтнома (Multnomah)
sifter(json, COUNTY == Multnomah) %>% jqr::index() %>% jqr::dotstr(properties.COUNTY)
#> [
#> "Multnomah",
#> "Multnomah",
#> "Multnomah",
#> "Multnomah",
#> "Multnomah",
#> "Multnomah",
#> "Multnomah",
#> "Multnomah",
#> "Multnomah",
...
Автор: Инфопульс Украина
Источник [20]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/blog-kompanii-infopul-s-ukraina/118106
Ссылки в тексте:
[1] cran: https://cran.rstudio.com/web/packages/geojsonio/
[2] github: https://github.com/ropensci/geojsonio
[3] cran: https://cran.rstudio.com/web/packages/wellknown/
[4] github: https://github.com/ropensci/wellknown
[5] cran: https://cran.rstudio.com/web/packages/gistr/
[6] github: https://github.com/ropensci/gistr
[7] cran: https://cran.rstudio.com/web/packages/lawn/
[8] github: https://github.com/ropensci/lawn
[9] turf.js: http://turfjs.org/
[10] geojson-random: https://github.com/mapbox/geojson-random
[11] cran: https://cran.rstudio.com/web/packages/geoaxe/
[12] github: https://github.com/ropenscilabs/geoaxe
[13] github: https://github.com/ropensci/proj
[14] proj4js: https://github.com/proj4js/proj4js
[15] github: https://github.com/ropenscilabs/getlandsat
[16] github: https://github.com/ropenscilabs/siftgeojson
[17] jq: https://stedolan.github.io/jq/
[18] cran: https://cran.rstudio.com/web/packages/plotly/
[19] github: https://github.com/ropensci/plotly
[20] Источник: https://habrahabr.ru/post/281400/
Нажмите здесь для печати.