Nano Hash - криптовалюты, майнинг, программирование

разрешение растра не отображается должным образом

Я наблюдаю странное поведение, когда рисую определенный растр. Это растр с закрашенным рельефом, который я приобрел на сайте naturalearthdata.com. Вы можете скачать его здесь.

Я обнаружил, что в зависимости от того, в каком пространственном масштабе я рисую растр, он отображает другое разрешение, несмотря на то, что разрешение растра не изменяется.

library(raster)
relief <- raster('GRAY_50M_SR_W.tif')

# let's use Mexico as an example:
library(maptools)
data(wrld_simpl)
mx <- wrld_simpl[which(wrld_simpl@data$NAME == 'Mexico'),]

# Here I create a cropped version of the raster
reliefMX <- crop(relief, mx)

Чтобы проиллюстрировать проблему, я рисую Мексику, чтобы получить экстент карты, затем я рисую полный экстент растра, а затем обрезанный растр сверху.

Вы можете видеть, что растры показывают очень разные разрешения, но на самом деле они имеют одинаковое разрешение.

plot(mx)
plot(relief, col = grey(0:100/100), legend = FALSE, axes = F, box = F, add=T)
plot(reliefMX, col = grey(0:100/100), legend = FALSE, axes = F, box = F, add=T)

> res(relief)
[1] 0.03333333 0.03333333
> res(reliefMX)
[1] 0.03333333 0.03333333

введите описание изображения здесь

Любые идеи? Как мне заставить эти растры правильно отображаться?

> sessionInfo()
R version 3.4.0 (2017-04-21)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.4

Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] maptools_0.9-2 raster_2.5-8   sp_1.2-4      

loaded via a namespace (and not attached):
[1] compiler_3.4.0  rgdal_1.2-7     tools_3.4.0     foreign_0.8-68  Rcpp_0.12.10   
[6] grid_3.4.0      lattice_0.20-35
16.05.2017

Ответы:


1

Это зависит от аргумента maxpixels в вызове raster::plot:

maxpixels integer> 0. Максимальное количество ячеек для использования на графике. Если maxpixels ‹ncell (x), перед построением используется sampleRegular. Если gridded = TRUE, maxpixels можно игнорировать, чтобы получить больший образец

Когда вы строите «полную» карту, изображение автоматически понижается, чтобы сэкономить память и сократить время рендеринга. Вы можете изменить значение maxpixels, чтобы получить желаемый уровень «детализации». см. например:

plot(relief, col = grey(0:100/100), legend = FALSE, axes = F, box = F, add=F)

введите описание изображения здесь

plot(relief, col = grey(0:100/100), legend = FALSE, axes = F, box = F, add=F, maxpixels = 5000000)

введите описание изображения здесь

Хотя на этом «уровне масштабирования» это не бросается в глаза, второе изображение более детализировано. Вы можете оценить это, увеличив масштаб кадрированной области:

plot(mx)
plot(relief, col = grey(0:100/100), legend = FALSE, axes = F, box = F, add = T, maxpixels = 5000000)

введите описание изображения здесь

Еще не «хороший», как априори кадрированный (так как я еще не использую «все» пиксели), но уже лучше.

На практике это компромисс между временем / памятью рендеринга и качеством вывода. Очевидно, что если вам просто нужно нарисовать часть области, гораздо эффективнее обрезать изображение заранее.

HTH.

16.05.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..