Какой самый полезный пространственный трюк R?


44

R становится довольно сильным инструментом для обработки и анализа пространственных данных. Я узнал некоторые полезные вещи через вопросы , как это на SO и думал , что это может быть полезно иметь что - то simmilar, но более «пространственно» ориентированным.

Можете ли вы поделиться некоторыми полезными советами и рекомендациями по пространственному R?


5
сообщество вики?
2010 года


извед. Спасибо. Я думаю, что видел это, но это легко забыть.
2010 года

3
Также: rspatialtips.org.uk
radek

Я думаю, что это должна быть вики сообщества, так как это стало своего рода списком.
РК

Ответы:


38

Это не столько хитрость, сколько spplot()изящная встроенная функциональность. spplot()Способность масштабировать образцы легенды (чтобы соответствовать диапазонам разрывов классификации) служит полезным педагогическим инструментом при обсуждении распределения данных атрибутов и типов классификации. Объединение кумулятивных графиков распределения с картами помогает в этом деле.

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

Студентам нужно всего лишь изменить несколько параметров сценария, чтобы изучить типы классификации и эффекты преобразования данных. Как правило, это их первый набег в R в основном ориентированном на ArcGIS курсе.

Вот фрагмент кода:

library(rgdal) # Loads SP package by default
NE = readOGR(".", "NewEngland") # Creates a SpatialPolygonsDataFrame class (sp)

library(classInt)
library(RColorBrewer)
pal = brewer.pal(7,"Greens")
brks.qt = classIntervals(NE$Frac_Bach, n = 7, style = "quantile")
brks.jk = classIntervals(NE$Frac_Bach, n = 7, style = "jenks")
brks.eq = classIntervals(NE$Frac_Bach, n = 7, style = "equal")

# Example of one of the map plots
spplot(NE, "Frac_Bach",at=brks.eq$brks,col.regions=pal, col="transparent",
       main = list(label="Equal breaks"))
# Example of one of the cumulative dist plots
plot(brks.eq,pal=pal,main="Equal Breaks")

Ссылка: прикладной анализ пространственных данных с помощью R (Р. Биванд, Э. Пебесма и В. Гомес-Рубио)


1
очень круто! Это выглядит очень полезным.
DJN

2
PolyGeo отстой в качестве модератора
ниже радара

28

РЕДАКТИРОВАТЬ: обратите внимание, что это больше не работает 2018-10-24, из-за новых требований к источникам карты Google.

Я был очень рад найти пакет с демонстрацией геокодирования и загрузкой карт Google:

library(dismo)
x <- geocode('110 George Street, Bathurst, NSW, Australia')
a <- x[5:8] + c(-0.001, 0.001, -0.001, 0.001)
e <- extent(as.numeric(a))
g <- gmap(e, type = "satellite")

plot(g)

То есть в R 2.12.0 для Windows, установить диско и его зависимости тривиально, но не обязательно в других системах.

альтернативный текст


1
Это выглядит очень полезно - однако у меня возникают проблемы со строкой e <- extent(x[4:7] + c(-0.001, 0.001, -0.001, 0.001))объявления, и я получаю сообщение об ошибке Error: c("x", "y") %in% names(x) is not all TRUE. x[4:7]кажется, хорошо, хотя; есть мысли о том, в чем может быть проблема?
DJN

Да, вам нужен воспроизводимый пример
mdsumner

Я пытаюсь воспроизвести пример в этом ответе, и он не работает. x <- geocode('110 George Street, Bathurst, NSW, Australia')возвращает, ZERO_RESULTSнапример, и когда я использую пример, который возвращает lat / long, функцияe <- extent(x[4:7] + c(-0.001, 0.001, -0.001, 0.001)) also fails.
djq

Может быть более элегантный способ сделать это, но extentтребуется вектор чисел. Так что это работает e <- extent(c(x[,4], x[,5], x[,6], x[,7]) + c(-0.001, 0.001, -0.001, 0.001)).
djq

2
Следующее также работает:e <- extent(as.numeric(x[4:7]) + c(-0.001, 0.001, -0.001, 0.001))
snth


11

Тоже не хитрость, но вот некоторые ресурсы / примеры, которые я собрал

Пример построения небольших множественных карт данных Areal в R с использованием пакета решеток.

В StackOverflow есть несколько вопросов о отображении и R, и вот один из них с хорошим примером. Я бы посмотрел на другие ответы и ресурсы, которые они дают (а также поищу еще несколько примеров) на SO.

Другая ссылка на ту же группу r-sig-geo, которую Брэд уже дал. Это очень активно, и Роджер Биванд отвечает на вопросы практически каждый день в группе. Оба связаны с программированием и статистическим анализом.

Помимо проверки пространственной страницы крана, я бы также предложил специально проверить страницу Spatstat, поддерживаемую Адрианом Бадделей. Множество примеров, курс и будущая электронная книга. (В настоящее время я проходил курс spatstat , и я думаю, что это намного более мягкое введение, чем книга Биванда).

Не бесплатный ресурс, но для всех, кто интересуется RI, предложил бы вам воспользоваться Use R! серия от Springer. У меня есть книга « Прикладной анализ пространственных данных с непосредственным подходом к (также книга «Руководство для начинающих по R» - моя книга по изучению R.)

В бесплатной электронной книге «Практическое руководство по геостатистическому картированию» (Hengl 2009) приведены примеры применения геостатов в R, GRASS и Google Earth (KML).

Если я найду больше хороших примеров, я буду продолжать обновлять (я надеюсь, что другие люди также публикуют хорошие примеры!)


Спасибо Энди. Мне нравится пример решетки. Полностью согласен с Bivand et al. Книга - отличный ресурс.
Радек

10

Для растрового анализа растровый пакет является чрезвычайно мощным. Помимо стандартного руководства, есть несколько виньеток для начала.


Для всего, что растровый пакет не может обработать, потому что он работает с оперативной памятью, вы можете рассмотреть gdal_Utlis, который предоставляет функцию-оболочку для использования gdal, позволяющую обрабатывать большие файлы.
joaoal

7

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


Я уверен, что есть более простые способы, чем то, что я собираюсь предложить, но вы можете создать Tesselations в пакете spatstat, а затем преобразовать этот tessобъект в spобъект, используя эту функцию, предоставленную Адрианом Бадделей. Из spобъекта вы можете экспортировать его в шейп-файл, если хотите.
Энди W

5

Я наткнулся на Spatial-Analyst.net . Очень информативно, всесторонне и полезно. Более конкретно на этот вопрос и в соответствии с некоторыми из предыдущих ответов, смотрите эту страницу .



4

С помощью этой функции вы можете легко создавать пространственные объединения, но только если все области заполнены полигонами.

library(rgeos)
library(sp) 
library(maptools)
library(rgdal)
library(sp)
xy.map <- readShapeSpatial("http://www.udec.cl/~jbustosm/points.shp")
manzana.map <- readShapeSpatial("http://www.udec.cl/~jbustosm/manzanas_from.shp" )

IntersectPtWithPoly <- function(x, y) { 
# Extracts values from a SpatialPolygonDataFrame with SpatialPointsDataFrame, and appends table (similar to 
# ArcGIS intersect)
# Args: 
#   x: SpatialPoints*Frame
#   y: SpatialPolygonsDataFrame
# Returns:
# SpatialPointsDataFrame with appended table of polygon attributes

  # Set up overlay with new column of join IDs in x
  z <- overlay(y, x)

  # Bind captured data to points dataframe
  x2 <- cbind(x, z)

  # Make it back into a SpatialPointsDataFrame 
  # Account for different coordinate variable names 
  if(("coords.x1" %in% colnames(x2)) & ("coords.x2" %in% colnames(x2))) {
    coordinates(x2) <- ~coords.x1 + coords.x2  
  } else if(("x" %in% colnames(x2)) & ("x" %in% colnames(x2))) {
    coordinates(x2) <- ~x + y 
  }

  # Reassign its projection if it has one
  if(is.na(CRSargs(x@proj4string)) == "FALSE") {
    x2@proj4string <- x@proj4string  
  }
  return(x2)
}


test<-IntersectPtWithPoly (xy.map,manzana.map)

3

Пример анализа паттернов Point:

#Load library
library(spatstat) 
#create some coordinates        
x=c(78,120,150,17,20,402) 
#prepare the window range      
y=c(70,103,100,205,200,301)
win=owin(range(x),range(y)) 
#create the point pattern
p <- ppp(x,y,window=win)
#Plot it
plot(p) 

Создает точечный узор и изображает его. Пакет spatstat имеет ряд функций для анализа географических данных. Вот несколько учебных пособий по spatstat :


1

Не уверен, что это квалифицируется как «уловка», но я большой поклонник комбинации acsпакета (для выбора данных переписи США) и leafletпакета (для создания интерактивных карт javascript, которые могут быть размещены в Интернете).

Этот урок отлично справляется, иллюстрируя преимущества совместного использования этих двух пакетов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.