Tạo một raster với thông tin tham chiếu địa lý trong R


9

Đề cập đến câu hỏi trước đây của tôi , làm cách nào để "mã hóa địa lý" / chuyển đổi - sử dụng R - một hình ảnh raster được tạo thành định dạng có thể được hiển thị dưới dạng một lớp trên bản đồ? Nói tóm lại, tôi đang nhắm đến việc tạo lại kết quả của phần mềm SpatialKey ( ảnh chụp màn hình ) thương mại .

Tôi đang sử dụng một đối tượng GeoServer để lưu trữ dữ liệu cho các bản đồ, nhưng làm cách nào tôi có thể kết hợp thông tin chiếu và tọa độ cần thiết vào hình ảnh để nó sẽ căn chỉnh chính xác với vị trí địa lý thực sự của nó. Các bản đồ nhiệt mật độ được tạo ra bằng cách sử dụng dữ liệu không gian.


Vì đây chỉ là một câu hỏi lập trình nên đây không thực sự là chủ đề. Bạn đã xem thông tin gói spatstat và pdf khóa học ngắn để xem nó có được bảo hiểm ở đó không? Tôi chắc chắn rằng điều này đã xuất hiện trước đây và một tìm kiếm nhanh trên google đưa ra câu trả lời trợ giúp R ​​có liên quan này . Tôi sẽ không ngạc nhiên nếu có nhiều giải pháp trực tiếp hơn cũng như tìm kiếm thêm.
Andy W

Làm thế nào bạn đã thực hiện các hình ảnh raster tạo ra? Nó đến từ một ứng dụng khác, hoặc được thực hiện trong R?
Simbamangu

Nó được tạo trong R bằng cách sử dụng hàm image ().
Mimo

x có độ phân giải ngang và dọc không bằng nhau. Dữ liệu đó không thể được lưu trữ ở định dạng arc-ascii My x có kích thước 4684, 1950, nó phàn nàn về độ phân giải. Tôi đã làm cho nó tương tự mặc dù. Buggy

Câu trả lời:


15

Gói raster cho phép bạn tạo các raster tùy ý (kích thước, hình chiếu) hoặc sử dụng các đối tượng hiện có, như ma trận; sau đó bạn có thể chỉ định các phép chiếu và phạm vi. image()Hàm của bạn có một đối số ma trận có thể được sử dụng trực tiếp:

library(raster)    
## Create a matrix with random data & use image()
xy <- matrix(rnorm(400),20,20)
image(xy)

# Turn the matrix into a raster
rast <- raster(xy)
# Give it lat/lon coords for 36-37°E, 3-2°S
extent(rast) <- c(36,37,-3,-2)
# ... and assign a projection
projection(rast) <- CRS("+proj=longlat +datum=WGS84")
plot(rast)

Sau đó, bạn có thể sử dụng writeRaster()với bất kỳ số lượng định dạng, ví dụ:

writeRaster(rast, "~/myraster.asc", format = "ascii")

2

Có một số cách khác nhau, nhưng thực hiện một cú đâm mà bạn muốn sử dụng các công cụ nguồn mở trên Windows Tôi có thể đề xuất 3 tùy chọn:

  1. Sử dụng công cụ gdal_translate trong GDAL (thư viện thao tác raster địa lý nguồn mở). Bạn có thể cần -gcp pixel line easting northing elevationtham số trong đó pixel và dòng là x / y trên raster ( http://www.gdal.org/gdal_datamodel.html ) và hướng đông / hướng bắc tọa độ địa lý. Bạn cũng sẽ phải chỉ định một phép chiếu với-a_srs srs_def
  2. Sử dụng các ràng buộc r để GDAL và làm điều tương tự
  3. Một cách "GUI" dễ dàng hơn có thể là làm theo hướng dẫn này và sử dụng QGIS với GDAL. Nhược điểm của việc này là bạn phải thiết lập cả QGIS và GDAL nếu bạn chưa có.

Tôi sẽ xem xét cẩn thận sự phụ thuộc của từng bit phần mềm bạn cần trước khi đi xuống bất kỳ tuyến đường nào bạn chọn.

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.