2011-03-05 33 views
6

Được kích hoạt bởi bài đăng ở đây, Developing Geographic Thematic Maps with R, tôi đã suy nghĩ về việc xây dựng một bản đồ choropleth dựa trên mã zip. Tôi đã tải xuống các tệp hình dạng cho New Hampshire và Maine từ http://www.census.gov/geo/www/cob/z52000.html, nhưng tôi quan tâm đến việc kết hợp hoặc hợp nhất các tệp .shp từ hai trạng thái này.tạo một choropleth trong R: hợp nhất shapefile mã zip từ nhiều tiểu bang

Có cơ chế trong gói maptools để thực hiện loại hợp nhất hoặc ghép nối này của hai tệp .shp sau khi bạn đọc chúng bằng cách sử dụng readShapeSpatial() không? Cũng là đầu vào chào mừng nếu ví dụ: sử dụng gói RgoogleMaps sẽ dễ dàng hơn.

+1

Liên kết này (http://r-sig-geo.2731867.n2.nabble.com/suggestion-to-MERGE-or-UNION-3-shapefiles-td5914413.html#a5916751) khi hợp nhất. Các kho lưu trữ nabble nên là một mỏ vàng để xử lý dữ liệu không gian. –

+0

Mmm ... không biết R-sig-geo đã biến nó thành Nabble. Thật không may là nó không được nhóm lại với các diễn đàn R khác. – Sharpie

+3

Tôi mất gần năm năm GIS để nhận ra điều này nhưng ... đó là "choropleth" không phải "chloropleth" –

Trả lời

4

Tôi theo dõi liên kết được đăng bởi Roman Luštrik và câu trả lời sau đây là một sửa đổi nhỏ của http://r-sig-geo.2731867.n2.nabble.com/suggestion-to-MERGE-or-UNION-3-shapefiles-td5914413.html#a5916751.

Mã sau đây sẽ cho phép bạn hợp nhất các tệp .shp thu được từ Census 2000 5-Digit ZIP Code Tabulation Areas (ZCTAs) Cartographic Boundary Files và vẽ chúng.

Trong trường hợp này, tôi đã tải xuống các tệp .shp và liên kết .dbf.shx tệp cho Massachusetts, New Hampshire và Maine.

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') 
0

GeoMerge là công cụ miễn phí để hợp nhất Shapefiles. Hợp nhất các phần SHP và DBF. Dường như làm việc OK, nhưng tôi đã không đẩy nó quá nhiều.

Các vấn đề liên quan