6

ここの投稿、R を使用した地理的テーマ マップの開発に動機付けられて、私は郵便番号に基づいてコロプレス マップを構築することを考えていました。http://www.census.gov/geo/www/cob/z52000.htmlからニューハンプシャー州とメイン州のシェープ ファイルをダウンロードしましたが、これら 2 つの州の .shp ファイルを結合またはマージすることに興味があります。 .

maptoolsを使用して 2 つの .shp ファイルを読み取った後、この種のマージまたは連結を行うためのパッケージ内のメカニズムはありますreadShapeSpatial()か? RgoogleMapsまた、パッケージを使用する方が簡単な場合などの入力も歓迎します。

4

2 に答える 2

4

私はRomanLuštrikによって投稿されたリンクをフォローアップしました。次の回答はhttp://r-sig-geo.2731867.n2.nabble.com/suggestion-to-MERGE-or-UNION-3-のわずかな変更です。 shapefiles-td5914413.html#a5916751

次のコードを使用すると、国勢調査2000 5桁の郵便番号集計領域(ZCTA)の地図作成境界ファイル.shpから取得したファイルをマージしてプロットできます。

この場合、マサチューセッツ州、ニューハンプシャー州、メイン州のファイルと.shp関連ファイルをダウンロードしました。.dbf.shx

library('maptools')
library('rgdal')

setwd('c:/location.of.shp.files')

# this location has the shapefiles for zt23_d00 (Maine), zt25_d00 (Mass.), and zt33_d00 (New Hampshire).

# columns.to.keep
# allows the subsequent spRbind to work properly

columns.to.keep <- c('AREA', 'PERIMETER', 'ZCTA', 'NAME', 'LSAD', 'LSAD_TRANS')

files <- list.files(pattern="*.shp$", recursive=TRUE, full.names=TRUE) 

uid <-1 

# get polygons from first file

poly.data<- readOGR(files[1], gsub("^.*/(.*).shp$", "\\1", files[1])) 
n <- length(slot(poly.data, "polygons"))
poly.data <- spChFIDs(poly.data, as.character(uid:(uid+n-1))) 
uid <- uid + n 
poly.data <- poly.data[columns.to.keep]

# combine remaining polygons with first polygon

for (i in 2:length(files)) {
    temp.data <- readOGR(files[i], gsub("^.*/(.*).shp$", "\\1",files[i]))
    n <- length(slot(temp.data, "polygons")) 
    temp.data <- spChFIDs(temp.data, as.character(uid:(uid+n-1))) 
    temp.data <- temp.data[columns.to.keep]
    uid <- uid + n 
    poly.data <- spRbind(poly.data,temp.data) 
}

plot(poly.data)

# save new shapefile

combined.shp <- 'combined.shp'
writeOGR(poly.data, dsn=combined.shp, layer='combined1', driver='ESRI Shapefile') 
于 2011-03-08T01:38:50.163 に答える
0

GeoMergeは、シェープファイルをマージするための無料のツールです。SHP パーツと DBF パーツをマージします。正常に動作しているように見えますが、あまりプッシュしていません。

于 2012-02-22T21:53:09.600 に答える