r语言 rgl 强制过程中_一个R语言中操纵矢量空间数据的标准化工具—sf
by Edzer Pebesma摘要Simple features是一種在計(jì)算機(jī)中編碼矢量空間數(shù)據(jù)(點(diǎn)、線、面等)的標(biāo)準(zhǔn)化方法。sf包在R語(yǔ)言中引入了simple features對(duì)象,它基本具備和sp、rgeos、rgdal一樣的矢量空間數(shù)據(jù)處理能力。本文主要描述此包的基本功能,其在R語(yǔ)言諸多擴(kuò)展生態(tài)系統(tǒng)中的地位,以及在連接R語(yǔ)言與其他空間計(jì)算系統(tǒng)中的潛在價(jià)值。
"Simple features" 究竟是什么?
我們可以把“Features”看做是一種包含特定空間位置或范圍的“事物”或?qū)ο?#xff1b;Featrue gemetry是指某種空間幾何特征(位置或范圍),或者你也可以直接把其當(dāng)成是一個(gè)點(diǎn)、點(diǎn)集合、線、線集合、多邊形、多邊形集合,甚至是以上多種對(duì)象的結(jié)合。簡(jiǎn)單來(lái)說(shuō),simple features就是線集合、多邊形集合的特征(這些線集合或者多邊形集合是由很多點(diǎn)連接的直線段構(gòu)成的)。Features 還包含有其他典型屬性(如時(shí)間、顏色、名稱(chēng)、質(zhì)量),我們稱(chēng)之為特征屬性。并非所有的空間現(xiàn)象都可以被輕易稱(chēng)為“事物”或“對(duì)象”。某些連續(xù)性現(xiàn)象:比如水溫或者海拔等諸如此類(lèi)的,我們最好把其看成是來(lái)自于連續(xù)空間(或時(shí)間)上的映射函數(shù)(Scheider et al., 2016),這些也經(jīng)常被作為柵格數(shù)據(jù)而非矢量數(shù)據(jù)(點(diǎn)集合、線集合、多邊形集合)。Simple feature 對(duì)象(Herring,2011)是呈現(xiàn)、編碼矢量空間數(shù)據(jù)的國(guó)際通用標(biāo)準(zhǔn),主要用于呈現(xiàn)點(diǎn)、線、多邊形等幾何對(duì)象(IOS,2004)。它被廣泛用于各種空間數(shù)據(jù)庫(kù)系統(tǒng)(Herring,2010),GeoJSON(Butler et al.,2016),GeoSPL(Perry and Herring,2012),以及開(kāi)源地理信息工具庫(kù):如GDAL(Warmerdam,2008),GEOS(GEOS Development Team,2017) 和liblwgeom(一個(gè)PostGIS的附加模塊,Obe and Hsu(2015))。
一個(gè)新包的價(jià)值
sf包(Pebesma,2018)是R語(yǔ)言中一個(gè)讀取、寫(xiě)入、操縱、計(jì)算simple features對(duì)象的工具包。它幾乎重塑了sp包中所有矢量空間數(shù)據(jù)(點(diǎn)集合、線集合、多邊形集合等)處理功能(Pebesma and Bivand,2005;Bivand et al.,2013),rgdal ( Bivand et al.,2017) 和 rgeos ( Bivand and Rundel,2017)。由于sp包具有約400個(gè)直接的反向依賴(lài)和幾千個(gè)間接依賴(lài),所以很有必要重寫(xiě)一個(gè)包來(lái)替代它。首先,在sp包的開(kāi)發(fā)期間,simple features標(biāo)準(zhǔn)還尚未出現(xiàn),ESRI shapefile那時(shí)在矢量空間數(shù)據(jù)的存儲(chǔ)和轉(zhuǎn)換上來(lái)處于統(tǒng)治地位。但是由于ESRI shapefile缺乏清晰開(kāi)放的標(biāo)準(zhǔn),其本身混亂、繁多的配置文件及其在呈現(xiàn)空間數(shù)據(jù)上的諸多缺陷,給sp包造成了不利影響,比如在呈現(xiàn)多邊形集合上的孔洞時(shí),盲目的使用封閉外邊界來(lái)標(biāo)記孔洞。這種方式嚴(yán)重影響圖形繪制,阻礙其與其他同類(lèi)型工具庫(kù)之間的兼容性。simple feature 格式標(biāo)準(zhǔn)目前已經(jīng)被廣泛采納,但是sp包仍然習(xí)以為常的將矢量空間數(shù)據(jù)強(qiáng)制轉(zhuǎn)化為R的內(nèi)部對(duì)象。這也意味著你無(wú)法靈活的進(jìn)行雙向數(shù)據(jù)操作。比如:導(dǎo)入數(shù)據(jù)、操縱數(shù)據(jù)、導(dǎo)出數(shù)據(jù)后才能得到同樣的幾何對(duì)象。但對(duì)于sf而言,這根本就是不是問(wèn)題。另一個(gè)重要原因是R語(yǔ)言在讀寫(xiě)空間數(shù)據(jù)(GDAL)以及操縱空間幾何對(duì)象(GEOS)時(shí)重度依賴(lài)的外部擴(kuò)展庫(kù)均以對(duì)simple feature標(biāo)準(zhǔn)給予了強(qiáng)有力的支持。除此之外,sp和當(dāng)前比較流行的數(shù)據(jù)操縱工具箱:如tidyverse(Wickham et., 2017)和 ggplot2(wickham,2016)等之間的兼容性較差。
- tidyverse 包不僅把操縱對(duì)象當(dāng)做是一個(gè)數(shù)據(jù)框(然而sp 對(duì)象則是通過(guò)提供方法函數(shù)來(lái)實(shí)現(xiàn)),而且把對(duì)象視作一個(gè)長(zhǎng)度相等的向量組成的列表,這一點(diǎn)兒sp包望塵莫及。
- 在使用ggplot2繪圖時(shí),先利用fortify函數(shù)將sp對(duì)象轉(zhuǎn)化成數(shù)據(jù)框(該數(shù)據(jù)框里存放著每一個(gè)多邊形構(gòu)成點(diǎn)的信息),以此來(lái)嘗試“簡(jiǎn)化”多邊形對(duì)象,這樣既不優(yōu)雅,也不高效。
基本規(guī)范
數(shù)據(jù)類(lèi)型
sf包的主要類(lèi)型如下:
- “sf”: 一個(gè)數(shù)據(jù)框(或者tl_df):包含一到 多個(gè)空間幾何對(duì)象列(通常由一組與數(shù)據(jù)框等長(zhǎng)的列表組成)、一個(gè)用于標(biāo)識(shí)當(dāng)前空間幾何對(duì)象列(sfc類(lèi))的屬性(sf_column),
- "sfc": 一個(gè)由一組空間幾何屬性組成的列表列
- "sfg":一個(gè)空間幾何列表列中的任一個(gè)元素(一個(gè)幾何要素)
- "crs": 一個(gè)坐標(biāo)參考系統(tǒng)(CRS),作為“sfc”對(duì)象的性質(zhì)存儲(chǔ)除了“sfg”對(duì)象之外,以上所有類(lèi)型均可看做列表。“sfg”對(duì)象可看做是其他類(lèi)型的子類(lèi),這些類(lèi)主要有以下幾種存儲(chǔ)格式:
POINT:一個(gè)單點(diǎn)組成的數(shù)值型向量
MULTIPOINT:每行由多點(diǎn)組成的數(shù)值矩陣
LINESTRING:每行由多點(diǎn)組成的數(shù)值矩陣
POLYGON:多個(gè)數(shù)據(jù)矩陣(每行由多點(diǎn)組成)組成的列表(多邊形邊界內(nèi)部可能嵌套若干個(gè)孔洞)
MULTILINRSTRING:多個(gè)數(shù)值矩陣(每行由多點(diǎn)組成)組成的列表
MULTIPLOYGON:POLYGON結(jié)構(gòu)組成的list
GEOMETRYCOLLECTION: 一個(gè)或多個(gè)以上幾何對(duì)象組成的結(jié)構(gòu)。所有的幾何對(duì)象都具有空值,表示幾何對(duì)象的缺失(或者NA)。
函數(shù)與方法
CategorygoryFunctions
binary predicatesst_contains,st_contains_properly,st_convered_by,st_covers,st_crosses,st_disjoint,st_equals,st_equals_exact,st_intersects,st_is_within_distance,st_within,st_touches,st_overlapsbinary operationsst_relate,st_distanceunary operationsst_dimension,st_area,st_length,st_is_longlat,st_is_simple,st_is_valid,st_jitter,st_geohash,st_geometry_type,st_sample,st_line_sample,st_join,st_interpolate_aw,st_make_grid,st_graticule,st_extSoftVersion,raw_ToHex,st_proj_infosettersst_set_agr,st_set_crsconstructorsst_sfc,st_sf,st_as_sf,st_as_sfc,st_point,st_multipoint,st_linestring,st_multilinestring,st_polygon,st_multipolygon,st_geometrycollection,st_combine,st_bind_colsin & outputst_read,st_read_db,st_write,st_write_db,read_sf,write_sf,st_drivers,st_layersplottingst_viewport,st_wrap_dateline,sf.colors表格 1:來(lái)自sf包的功能函數(shù) ,按照函數(shù)類(lèi)別順序
以上所列函數(shù)中,部分函數(shù)同時(shí)作用于屬性和幾何對(duì)象,比如:aggregate 和 summarize 計(jì)算分組統(tǒng)計(jì)量。class methods
sfgas.matrix, c, coerce, format, head, Ops, plot, print, st_as_binary, st_as_grob, st_as_text, st_transform, st_coordinates, st_geometry, st_boundary, st_buffer, st_centroid, st_convex_hull, st_difference, st_intersection, st_line_merge, st_make_valid, st_node, st_point_on_surface, st_polygonize, st_segmentize, st_simplify, st_split, st_sym_difference, st_triangulate, st_union, st_voronoi, st_cast, st_collection_extract, st_is, st_zmsfc[, [<-, as.data.frame, c, coerce, format, Ops, print, rep, st_as_binary, st_as_text, st_bbox, st_coordinates, st_crs, st_crs<-, st_geometry, st_precision, st_set_precision, str, summary, st_transform, st_boundary, st_buffer,st_centroid, st_convex_hull, st_difference, st_intersection, st_line_merge, st_make_valid, st_node, st_point_on_surface, st_polygonize, st_segmentize, st_simplify, st_split, st_sym_difference, st_triangulate, st_union, st_voronoi, st_cast, st_collection_extract, st_is, st_zm, obj_sum, type_sumsf[, [[<-, $<-, aggregate, cbind, coerce, merge, plot, print, rbind, st_agr, st_agr<-, st_bbox, st_coordinates, st_crs, st_crs<-, st_geometry, st_geometry<-, st_precision, st_set_precision, st_transform, st_boundary, st_buffer, st_centroid, st_convex_hull, st_difference, st_intersection, st_line_merge, st_make_valid, st_node, st_point_on_surface, st_polygonize, st_segmentize, st_simplify, st_split, st_sym_difference, st_triangulate, st_union, st_voronoi, st_cast, st_collection_extract, st_is, st_zm, anti_join, arrange, distinct, filter, full_join, gather, group_by, inner_join, left_join, nest, mutate, rename, right_join, sample_frac, sample_n, select, semi_join, separate, slice, spread, summarise, transmute, ungroup, unitecrs$, is.na, Ops, print, st_as_text, st_crs表格 2:sf包中的類(lèi)方法st_interpolate_aw函數(shù)可以針對(duì)幾何對(duì)象進(jìn)行基于面積加權(quán)的差值計(jì)算(Do et al., 2015)。st_join可以基于空間類(lèi)型連接成對(duì)的表格。sf包的一般方法已經(jīng)展示在上面表格2中了,其中很多方法主要服務(wù)于矢量空間數(shù)據(jù)的創(chuàng)建、抽取、轉(zhuǎn)換,當(dāng)然也有很函數(shù)屬于不經(jīng)常用到的低頻函數(shù)。在可能的情況下,方法作用于一個(gè)幾何對(duì)象(sfg)、一個(gè)幾何對(duì)象集合(sfc)或一個(gè)帶有屬性的集合對(duì)象集合(sf),同時(shí)返回一個(gè)相同類(lèi)的對(duì)象。序列化simple featrue對(duì)象定義了兩個(gè)序列化標(biāo)準(zhǔn):常見(jiàn)文本表現(xiàn)形式(WKT)和二進(jìn)制文本表現(xiàn)形式(WKB)。常見(jiàn)文本表現(xiàn)形式是日常打印時(shí)默認(rèn)的輸出格式,sfc列可以利用st_as_sfc函數(shù)從WKT格式的字符串向量中直接讀取。
> library(sf) Linking to GEOS 3.5.1, GDAL 2.1.2, proj.4 4.9.3 > (pt <- st_point(c(0,1))) POINT (0 1) > (pol <- st_polygon(list(rbind(c(0,0), c(1,0), c(1,1), c(0,1), c(0,0))))) POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)) > st_as_sfc("POINT(0 1)") # returns sfc: Geometry set for 1 feature geometry type: POINT dimension: XY bbox: xmin: 0 ymin: 1 xmax: 0 ymax: 1 epsg (SRID): NA proj4string: NA POINT (0 1)R native simple feature geometries can be written to WKB usingst_as_binary:> st_as_binary(st_point(c(0,1)))[1] 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0 3f > st_as_binary(st_polygon(list(rbind(c(0,0), c(1,0), c(1,1), c(0,1), c(0,0))))) [1] 01 03 00 00 00 01 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [26] 00 00 00 00 00 00 00 00 00 00 f0 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 [51] 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [76] f0 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00同理,二進(jìn)制編碼的幾何對(duì)象同樣可以使用sf_as_sfc函數(shù)來(lái)進(jìn)行還原。 在sf包中,所有與底層庫(kù)GDAL、GEOS和liblwgeom之間的通信,以及與空間數(shù)據(jù)庫(kù)之間進(jìn)行的空間幾何對(duì)象讀寫(xiě)操作,均使用c++編寫(xiě)的二進(jìn)制序列化和反序列化。這樣可以使得代碼高效、穩(wěn)健,對(duì)于所有可能的幾何對(duì)象類(lèi)型,都使用統(tǒng)一的接口進(jìn)行操縱。
球面幾何對(duì)象GEOS庫(kù)提供了很多用于處理二維空間的運(yùn)算函數(shù)。對(duì)于未做投影處理的地理空間數(shù)據(jù),提供的坐標(biāo)通常是經(jīng)緯度,表征的是球面上的點(diǎn),而非投影后的平面。sf包允許針對(duì)此類(lèi)數(shù)據(jù)進(jìn)行所有幾何操作,但在操作過(guò)程中,GEOS包會(huì)彈出提示信息。而像st_area、st_length、st_distance、st_is_within_distance和st_segmentze之類(lèi)的專(zhuān)門(mén)用于進(jìn)行球面運(yùn)算操作的函數(shù),則主要依賴(lài)于底層庫(kù)——lwgeom(Pebesma)。相對(duì)于geosphere包(Hijmans, 2016a)而言,這個(gè)包的主要優(yōu)勢(shì)在于,它支持所有simple feature對(duì)象的距離計(jì)算,但geosphere包只能計(jì)算點(diǎn)與點(diǎn)之間的距離。st_sample函數(shù)目前的功能已經(jīng)有所改變,現(xiàn)在主要服務(wù)于球面區(qū)域點(diǎn)采樣后的坐標(biāo)計(jì)算。
如果有一個(gè)全面的用于處理球面幾何對(duì)象的函數(shù)系統(tǒng),那當(dāng)時(shí)再好不過(guò)的事情了。目前看來(lái)具備這種潛質(zhì)的候選包主要包括s2(Rubak和Ooms, 2017)(Rubak和Ooms, 2017)、liblwgeom (PostGIS的一部分)、CGAL (Fabri和Pion, 2009)和boost.Geometry。
操縱工具在sf的開(kāi)發(fā)過(guò)程中,為了使新的數(shù)據(jù)結(jié)構(gòu)與tidyverse能夠較好的協(xié)同工作,投入了大量的精力。這方面主要體現(xiàn)在給dplyr包提供了很多用于操縱sf對(duì)象的方法(見(jiàn)表2)以及給ggplot2提供了用于快速針對(duì)sf對(duì)象進(jìn)行繪圖映射的geom系列函數(shù)。 tidyverse工具箱規(guī)定了四個(gè)主要原則,如下所示: 1.返回基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)我們僅使用R語(yǔ)言中最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),并且完全支持兩種序列化標(biāo)準(zhǔn)(WKT、WKB)
2.使用管道函數(shù)來(lái)精簡(jiǎn)代碼過(guò)程。這樣來(lái)設(shè)計(jì)函數(shù)和方法可以非常容易的適用于管道式工作流程。像st_crs之類(lèi)的替換函數(shù)建議用st_set_crs這種形式,看起來(lái)更加優(yōu)雅。
3.擁抱函數(shù)式編程。保持函數(shù)類(lèi)型安全,支持空幾何體和空列表,并通過(guò)提供縮放和移動(dòng)多邊形選項(xiàng)來(lái)創(chuàng)造性地完成了重載操作。
>pol * 2 + pt
POLYGON ((0 1, 2 1, 2 3, 0 3, 0 1))
st_join之類(lèi)的空間連接函數(shù),允許用戶傳遞一個(gè)與st_intersects兼容的連接函數(shù),從而使應(yīng)用于連接的空間謂詞完全可定制。
4.人性化設(shè)計(jì)。基于過(guò)去10年編寫(xiě)和維護(hù)sp包的經(jīng)驗(yàn),我們一直保持sf包的簡(jiǎn)介和易學(xué)。盡可能抽象通用方法,來(lái)保持底層代碼占用較少的內(nèi)存。所有函數(shù)和方法均以st_(對(duì)于“spacetime”,遵循PostGIS約定)開(kāi)頭,以保持它們的統(tǒng)一性和可識(shí)別性,并可提供tab鍵來(lái)實(shí)現(xiàn)函數(shù)的模糊提醒。
繪圖
圖1(左)顯示了具有多個(gè)屬性的“sf”對(duì)象的默認(rèn)圖:沒(méi)有提供顏色參數(shù),默認(rèn)顏色取決于變量是數(shù)值(上)還是因子(下)。圖1如下:
圖1:左圖:帶有兩個(gè)屬性的sf對(duì)象的默認(rèn)圖;右圖:帶有顏色鍵、坐標(biāo)軸和經(jīng)緯度的單個(gè)屬性的繪圖。圖2:使用ggplot2::geom_sf生成的圖,現(xiàn)在彎曲的經(jīng)緯網(wǎng)遵循固定比例的的經(jīng)緯度線。
> library(sf) > nc = read_sf(system.file("gpkg/nc.gpkg", package="sf"))` > plot(nc[, c(9,5)]) When we plot a single attribute, a color key is default (unlesskey.pos=NULL). The following command > plot(nc[, 9], key.pos = 1, axes = TRUE, graticule = TRUE)在圖一右側(cè)圖中增加經(jīng)緯網(wǎng)和坐標(biāo)軸。Figure 2 shows a plot generated byggplot2(version 2.2.1 or later): > library(ggplot2) > library(tidyr) > library(dplyr) > nc2 <- nc %>% st_transform(32119) %>% select(SID74, SID79, geom) %>%+ gather(VAR, SID, -geom) > ggplot() + geom_sf(data = nc2, aes(fill = SID)) + facet_wrap( ~ VAR, ncol = 1)圖3:sf依賴(lài)的其他R語(yǔ)言工具包及外部擴(kuò)展系統(tǒng)
柵格、時(shí)間序列和單位
對(duì)于某些用戶來(lái)說(shuō),開(kāi)始sf包的學(xué)習(xí)就如同翻開(kāi)一本新書(shū),同時(shí)合上一本舊書(shū)。但是和那本舊書(shū)相比,這本新書(shū)的內(nèi)容、頁(yè)碼完全不同。目前還不知道,那些R語(yǔ)言中數(shù)百個(gè)使用了sp包提供的類(lèi)和方法的包,是否會(huì)、以及何時(shí)會(huì)將修改為依賴(lài)sf包的類(lèi)和方法。 最常聽(tīng)到的問(wèn)題是在這本新書(shū)中柵格數(shù)據(jù)在哪里:sp為網(wǎng)格數(shù)據(jù)提供了簡(jiǎn)單的類(lèi),柵格(Hijmans, 2016b)提供了大量的類(lèi)和密集的方法來(lái)使用它們,并與sp向量類(lèi)緊密集成。當(dāng)前版本的柵格數(shù)據(jù)是通過(guò)將sf對(duì)象轉(zhuǎn)換為(較小的一組)sp對(duì)象,從而使其可以兼容其中的一小部分函數(shù)。在撰寫(xiě)本文時(shí),我們只能說(shuō),這是一個(gè)高度活躍、探索和發(fā)展中的領(lǐng)域,我們很樂(lè)意向感興趣的讀者指出,這一討論的中大家關(guān)注的主流趨勢(shì)在向何處發(fā)展。除了柵格數(shù)據(jù)之外,時(shí)間序列類(lèi)的空間特征(例如監(jiān)測(cè)站的觀測(cè)數(shù)據(jù))很難映射成sf對(duì)象:要么必須將時(shí)間切片放入列中,要么添加一個(gè)時(shí)間列,并為每個(gè)觀測(cè)重復(fù)空間幾何特征。柵格數(shù)據(jù)、空間時(shí)間序列和柵格時(shí)間序列是該項(xiàng)目今后探索的重點(diǎn)領(lǐng)域。 該軟件包的一個(gè)新功能是能夠檢索空間度量,并使用顯式度量單元設(shè)置距離參數(shù)等 (Pebesma et al., 2016):
> st_area(st_transform(nc[1, ], 2264)) # NC state plane, US foot 12244955726 US_survey_foot^2 > st_crs(2264)$units [1] "us-ft" > st_area(st_transform(nc[1, ], 2264)) %>% units::set_units(km^2) # convert: 1137.598 km^2這可能會(huì)讓人困惑,但卻有可能防止一系列的科學(xué)錯(cuò)誤。
與其他計(jì)算系統(tǒng)的連接和可伸縮性
在許多情況下,使用R分析空間數(shù)據(jù)從導(dǎo)入數(shù)據(jù)開(kāi)始,或者從文件或數(shù)據(jù)庫(kù)導(dǎo)出數(shù)據(jù)結(jié)束。這種能力主要由可見(jiàn)文本(WKT)和二進(jìn)制文本(WKB)序列化提供,它們是sf標(biāo)準(zhǔn)的一部分,并且受到sf的支持。與GDAL、GEOS和liblwgeom庫(kù)的通信都使用WKB方法。GDAL目前有93種不同的空間向量數(shù)據(jù)連接驅(qū)動(dòng)程序(文件格式、數(shù)據(jù)庫(kù)、web服務(wù))。圖3顯示了sf包和其他R包和系統(tǒng)庫(kù)的依賴(lài)關(guān)系。之所以將sf包構(gòu)構(gòu)筑于這些系統(tǒng)上,主要因?yàn)檫@些系統(tǒng)是由R語(yǔ)言外部致力于空間數(shù)據(jù)探索的研究機(jī)構(gòu)和社會(huì)組織使用和維護(hù)的,反映了這些組織在關(guān)于空間數(shù)據(jù)研究上達(dá)成的默契和共識(shí)。 除了使用GDAL之外,sf還可以直接讀寫(xiě)空間數(shù)據(jù)庫(kù)。目前主要通過(guò)RPostgreSQL來(lái)與PostGIS一起工作,當(dāng)然,使用RPostgres以及DBI來(lái)讀寫(xiě)空間數(shù)據(jù)庫(kù)的功能仍然進(jìn)一步開(kāi)發(fā)完善中。初步研究表明,使用dbplyr框架可以在R中處理大量耗費(fèi)內(nèi)存的空間數(shù)據(jù)庫(kù)。這不僅消除了R的內(nèi)存限制,而且還從這些數(shù)據(jù)庫(kù)的持久空間索引中獲益。 對(duì)于平面數(shù)據(jù),sf動(dòng)態(tài)地為空間二進(jìn)制謂詞構(gòu)建空間索引(st_intersects,st_containsetc.) 以及二進(jìn)制形式 (st_intersection,st_difference 等)。一篇關(guān)于在sf中設(shè)置空間索引的博文描述了如何使用索引操縱大內(nèi)存的空間數(shù)據(jù)集。對(duì)于球面數(shù)據(jù),還需要研究liblwgeom或s2提供的索引。
總結(jié)與延伸閱讀我們引入了一個(gè)新包 ——sf,在R語(yǔ)言中操縱simple feature對(duì)象,并且成為最前沿的用于部分替代sp包家族的潛力股。它為R語(yǔ)言中空間矢量數(shù)據(jù)的處理提供了新的基礎(chǔ)類(lèi),已經(jīng)得到了廣泛的關(guān)注和應(yīng)用。在實(shí)現(xiàn)sf過(guò)程中,維護(hù)了幾個(gè)經(jīng)過(guò)良好驗(yàn)證的概念(幾何對(duì)象與屬性的分離),為sf創(chuàng)建了新的連接(dplyr、ggplot2、空間數(shù)據(jù)庫(kù)),并探討了新的概念(單位、空間索引等)。 為了進(jìn)一步了解sf的全部功能及其原理,讀者可以參考軟件包附帶的六篇小品文。
致謝如果沒(méi)有Roger Bivand的前期工作和付出,sf包的面世幾乎是不可能的。該包的貢獻(xiàn)者包括 Ian Cook, Tim Keitt, Michael Sumner, Robin Lovelace, HadleyWickham, Jeroen Ooms, and Etienne Racin。同時(shí)也非常感謝在Githubs上面給sf項(xiàng)目提供問(wèn)題反饋的所有貢獻(xiàn)者。特別鳴謝Dirk Eddelbuettel開(kāi)發(fā)的Rcpp(Eddelbuettel et al., 2011; Eddelbuettel,2013)。 來(lái)自R語(yǔ)言聯(lián)盟的支持對(duì)于sf的開(kāi)發(fā)、面世和普及與應(yīng)用至關(guān)重要,我們對(duì)此表示感謝,同時(shí)匿名審稿人也給我們提供非常寶貴的意見(jiàn)。
總結(jié)
以上是生活随笔為你收集整理的r语言 rgl 强制过程中_一个R语言中操纵矢量空间数据的标准化工具—sf的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: matlab制作以太网数据接收上位机_P
- 下一篇: 1万条数据大概占多大空间_9月漫画数据月
