2014-05-06 17 views
8

Tôi thực sự đánh giá cao một số trợ giúp/ý tưởng về một vấn đề tôi đang gặp phải với ggmap và nhị màu nước.ggmap nhị màu nước png lỗi

tôi tiếp tục nhận được thông báo lỗi tương tự mỗi khi tôi cố gắng tạo ra một bản đồ màu nước nhị:

"Error in readPNG(destfile) : file is not in PNG format" 

Dưới đây là một số ví dụ về mã đơn giản mà đang trở lại báo lỗi này:

qmap("new-york", zoom=13, source="stamen", maptype="watercolor") 

hoặc

get_map(location='Auckland', source="stamen", maptype="watercolor", zoom=13) 

tôi đang sử dụng phiên bản r: [Mặc định] [64-bit] C: \ Program Files \ R \ R-3.0.2 dưới windows 8

Tôi nhận thấy một vài người đã đăng về cùng một vấn đề này - nhưng chỉ một vài - và tôi chưa thấy bất kỳ giải thích/đề xuất nào. Tôi đang bối rối và thất vọng và tôi thực sự hy vọng một người có nhiều kinh nghiệm hơn tôi đã gặp phải (và giải quyết) vấn đề này. Cảm ơn trước hoặc bất kỳ trợ giúp nào bạn có thể cung cấp

Trả lời

2

Tôi đã gặp phải sự cố tương tự. Lưu ý rằng nếu bạn chạy

get_map(location='Auckland', source="stamen", maptype="watercolor", zoom=13) 

bạn sẽ nhận được URL (s) cho gạch bạn đang cố gắng để tải trong R. Khi tôi ghé thăm một trong những URL nhất định, nó chuyển hướng đến một .jpg, thay vì a .png. Do đó, lỗi là chính xác - các ô đang được phân phối không ở định dạng PNG - chúng là JPG.

Có vẻ như đây là lỗi trong ggmap được giới thiệu bởi một thay đổi trong API của Stamen. Có vẻ như phiên bản 2.4 sẽ giải quyết vấn đề này; xem GitHub cam kết tại đây: https://github.com/dkahle/ggmap/commit/c7c48947360351f2e86ba13d0457aa3894b51d46.

14

Là bản sửa lỗi tạm thời, bạn có thể tự mình thực hiện thay đổi. Nhập

get_stamenmap 

tại đầu cuối R. Thao tác này sẽ xóa mã để tải bản đồ. Bạn sẽ cần phải chỉnh sửa mã này và thay thế hàm trong vùng tên.

Sao chép mã để một trình soạn thảo văn bản và thực hiện nếu một chức năng một lần nữa bằng cách thay đổi dòng đầu tiên:

get_stamenmap <- function (bbox = 

Sau đó, bạn cần phải chuyển sang tải JPEG. Tìm kiếm trên png và thay đổi văn bản thành jpg. Tôi đã có hai trường hợp mà trông giống như văn bản bạn cần trong phần mở rộng tập tin, họ đã được trên dòng 64 và 71 cho tôi.

64: urls <- paste(urls, ".jpg", sep = "") 
71: destfile <- paste(filename, "jpg", sep = ".") 

On line 75 có chức năng readPNG, mà bạn cần phải thay đổi để readJPEG.

tile <- readJPEG(destfile) 

Bạn cũng cần phải đảm bảo tải gói jpeg, tức là thư viện (jpeg) vì ggmap không nhận ra điều này là cần thiết. Tôi cũng cần thư viện (plyr) nhưng tôi đã không tìm ra lý do tại sao - tôi đã làm điều này bởi vì tôi nhận được một thông báo lỗi sau về ldply() mà tôi tìm thấy trong gói đó.

Bây giờ hãy dán chức năng "tất cả mới" này vào thiết bị đầu cuối.Sau đó, bạn cần phải ghi đè lên các chức năng nhúng trong gói, đó là khác biệt so với bản sao cục bộ mà bạn vừa dán vào thiết bị đầu cuối, vì vậy bạn cần phải gõ này:

assignInNamespace("get_stamenmap",get_stamenmap,ns="ggmap") 

Bây giờ bạn phải sẵn sàng để sử dụng qmap lại . Thủ tục này làm việc cho tôi và đã được đơn giản hơn so với biên dịch lại gói với những thay đổi tương tự hoặc tải nguồn mới nhất trong đó có các bản sửa lỗi và biên dịch.

+1

nhất .... Stackoverflow ... trả lời .... bao giờ hết! (Lưu tôi rất nhiều thời gian). –

1

Một thay thế cho đến khi 2.4 được công bố trong thư viện là để tải các chức năng có sẵn trong kho và thay thế những cái đã có mặt trên các gói ggmap (như Michael trả lời). Tôi vừa tải nội dung của get_stamenmap.Rfiledrawer.R (cần thiết cho url_lookup()) là tốt để đi với bản đồ màu nước.

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