Cách xuất một tập dữ liệu với dịch vụ SpatialPolygonsDataFrame 'dưới dạng shapefile


12

Làm cách nào để xuất bộ dữ liệu không gian trong R, chẳng hạn như tornadosbộ dữ liệu trong GISToolsgói, dưới dạng shapefile với cùng tham chiếu không gian chính xác và các giá trị chính xác?

library(GISTools)

data(tornados)

Mong muốn:

  • "SpatialPolygonsDataFrame" thành "shapefile"
  • "(Buộc) SpatialPointsDataFrame" thành "shapefile"
  • "(Không bắt buộc) SpatialPointsDataFrame" thành "shapefile"
  • "SpatialLinesDataFrame" thành "shapefile".

1
rgdal::writeOGR
hrbrmstr

Buộc ở đây có nghĩa là gì?
mdsumner

Tôi không chắc "Buộc" nghĩa là gì nhưng tôi đã tìm thấy nó trong tài liệu "GISTools" dưới kiểu dữ liệu lốc xoáy.
Mokhless

Câu trả lời:


16

Câu trả lời của Wesley là chính xác. Vì vậy, để xuất cụ thể dữ liệu lốc xoáy bạn cần làm:

library(GISTools)
library(rgdal)
data(tornados)

writeOGR(obj=torn, dsn="tempdir", layer="torn", driver="ESRI Shapefile") # this is in geographical projection

writeOGR(obj=torn2, dsn="tempdir", layer="torn2", driver="ESRI Shapefile") # this is in equal area projection

Đối với R, cả hai bộ dữ liệu này được coi đơn giản là SpatialPointsDataFrames.

> class(torn)
[1] "SpatialPointsDataFrame"
attr(,"package")
[1] "sp"

> class(torn2)
[1] "SpatialPointsDataFrame"
attr(,"package")
[1] "sp"

8

Lưu ý rằng cũng có một chức năng trong maptoolsgói để thực hiện việc này, cụ thể là writeSpatialShape:

library(maptools)
writeSpatialShape(torn, "torn").

Xem ?writeSpatialShapeđể có các lựa chọn.


2
Hàm này không giữ lại thông tin proj4 chuỗi.
Jeffrey Evans

@JeffreyEvans: vậy có cách nào để vượt qua điều đó không? có lẽ chỉ định lại nó trong gói GIS.
val

@val chỉ cần sử dụngwriteOGR
MichaelChirico

@MichaelChirico: thx nhưng đó là nơi tôi đã bắt đầu và vấn đề là nó bị cắt cụt thành một lỗi ... các trường trùng lặp. Có bài viết về nó.
val

6

Bạn nên xem gói rgdal , cụ thể là writeOGRchức năng.

Ví dụ, lần đầu tiên tôi đã tải xuống các hình dạng "Các tiểu bang và tỉnh" có độ phân giải 110m từ Trái đất tự nhiên , giải nén chúng về ~/scratch/ne_110m_admin_1_states_provinces. Tôi đọc chúng vào R thông qua:

library(rgdal)
setwd("~/scratch")
states <- readOGR(dsn="ne_110m_admin_1_states_provinces",
    layer="ne_110m_admin_1_states_provinces")

Tại thời điểm này, đối tượng stateslà a SpatialPolygonsDataFrame. Bây giờ tôi tạo một thư mục mới (" tempdir") và lưu các shapefiles ở đó:

dir.create("tempdir")
writeOGR(obj=states, dsn="tempdir", layer="states", driver="ESRI Shapefile")

Các hình dạng hiện được lưu vào thư mục ~/scratch/tempdir, dưới dạng tệp state.shp, v.v. Bạn có thể làm điều tương tự với a SpatialPointsDataFrame, chỉ cần xem ví dụ đầu tiên trong tài liệu của writeOGRhàm.


4
library(raster)
shapefile(tornados, filename='path/to/file.shp')

Hãy chắc chắn rằng bạn có (hoặc đã cho mình) quyền ghi vào thư mục.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.