2017-09-16 66 views
0

我试图按照第一个答案here,复制和粘贴下面的第一部分:加拿大人口普查部门:不能打开

library(rgeos) 
library(rgdal) 
library(maptools) 
library(sp) 
library(ggplot2) 

# decent, uncluttered map theme (needs devtools package tho) 
devtools::source_gist("https://gist.github.com/hrbrmstr/33baa3a79c5cfef0f6df") 

# grab the file from "Statistics Canada" 
download.file("http://www12.statcan.gc.ca/census-recensement/2011/geo/bound-limit/files-fichiers/gcd_000b11a_e.zip", 
       destfile="gcd_000b11a_e.zip") 

unzip("gcd_000b11a_e.zip") 

# this simplifies the polygons so they load/plot faster 
system("ogr2ogr canada.shp gcd_000b11a_e.shp -simplify 0.01") 

# what layers do we have? you can use this to check 
# ogrListLayers("gcd_000b11a_e/canada.shp") 
# but there are none, so the shapefile is the layer 

canada <- readOGR("gcd_000b11a_e/","canada") 

# do this to see what's available from an "identifier" standpoint 
# "CDNAME" seems to be the census district name 
# "PRNAME" seems to be the province name 
# str([email protected]) 

# rig up some data 
# make a data frame of census division areas 
# you can assign as many value columns as you like 
# they get merged in later and can be used as the fill level 
# we'll use the area as the fill level 
map_areas <- data.frame([email protected]$CDNAME, 
         area=sapply(slot(canada, "polygons"), slot, "area")) 

# this takes a while, but it makes a data frame for use with 
# ggplot and lets us use the census division name for doing things 
# like applying colors 
canada_map <- fortify(canada, region="CDNAME") 

# merge in areas 
canada_map <- merge(canada_map, map_areas, by="id") 

gg <- ggplot() 
gg <- gg + geom_map(data=canada_map, map=canada_map, 
        aes(map_id=id, x=long, y=lat, group=group, fill=log1p(area)), 
        color="white", size=0.1) 
gg <- gg + coord_map() # can choose other projections 
gg <- gg + theme_map() 
gg 

不过,我得到一些错误。第一个是:

system("ogr2ogr canada.shp gcd_000b11a_e.shp -simplify 0.01") 
/bin/sh: ogr2ogr: command not found 

搜索四周,阅读一些想法(例如here,并here)我发现,它与rgdal后一个问题。我可以加载rgdal库中没有的问题:

> library(rgdal) 
> 

但后来我看了目录/ Macintosh HD /资源库/框架,并没有GDAL_Frameworks子目录。

我正在运行Mac OSX Sierra,版本10.12.6和R版本3.4.1(单个蜡烛)。

如何正确运行system命令?

+0

会发生什么,当你试着去'系统(“这ogr2ogr”)'? – Stedy

+0

也许你应该单独安装ogr2ogr并尝试在R之外运行它? –

+0

@Stedy我点击回车键,我得到'>'符号,所以命令执行成功。 – StatsSorceress

回答

0

如果这只是Mac上系统路径的问题,您可以选择提供gdal库的完整路径。

system("/Library/Frameworks/GDAL.framework/Programs/ogr2ogr canada.shp gcd_000b11a_e.shp -simplify 0.01")

上述路径也可以是错的,以获得正确的路径在Mac终端运行which ogr2ogr。如果此路径与/Library/Frameworks/GDAL.framework/Programs/ogr2ogr交换的路径不正确。

如果你仍然有GDAL库的问题,试图从源代码安装和R中再次运行系统命令以上 brew install gdal-20 --build-from-source

+0

嗨@Gonzo,我认为这需要我安装自制软件,是吗?另外,我没有'/ Library/Frameworks/GDAL.framework' - GDAL.framework目录不存在。 – StatsSorceress

+2

强烈建议使用Homebrew '/ usr/bin/ruby​​ -e“$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”'。 看来你没有安装gdal或者安装了错误的方法。安装自制软件,比源自gdal并在R中使用完整路径系统命令。应该工作。请享用! – Gonzo