0

我不知道如何开始这个,因为我在 R 中玩的 GIS 一直是使用 ggplot2 和其他使用 latlong 坐标的包来绘制东西。我现在需要做的是在 Microstrategy 中使用可视化组件,该组件使用 HTML 文件形式的 shapefile,其中包含绘图的 xy 坐标(即左上角为 0,0)。状态级文件的一个示例是:

<HTML><HEAD><TITLE>untitled</TITLE></HEAD><BODY>
<IMG SRC="" USEMAP="#myMap" WIDTH="812" HEIGHT="713" BORDER="0" />
<MAP NAME="myMap">
<AREA SHAPE="POLY" HREF="#" ALT="Texas" COORDS="299,363,299,360,....." />
</MAP></BODY></HTML>

“坐标”中列出的点是相对于 812 x 713 的“图像”的 X 和 Y 点,该图像是动态绘制和着色的。

我有来自http://www.vdstech.com/usa-data.aspx的 Zip3 和 Zip5 的 shp、shx、dbf 文件,但我不确定从哪里开始转换!我不介意手动格式化 HTML 文件的繁重工作,这是我坚持的 XY 转换(生锈,很长一段时间没有碰过 GIS):

以下代码将 shapefile 导入 R

library(rgdal)
zip3 <- readOGR(dsn = '/Users/adempsey/Downloads/zip3'), layer = 'zip3')

之后我被卡住了,目前正在寻找如何将 zip3 + xy 坐标提取到数据框中的教程,然后我可以用它来创建我的最终文件

更新 2

使用以下内容,我可以转换为数据框,但我无法提取关联的 zip3 代码,该代码似乎存储在关联的 dbf 文件中

Row long      lat order  hole piece group id
1 -151.0604 70.41873     1 FALSE     1   0.1  0
2 -150.7620 70.49722     2 FALSE     1   0.1  0

是的,这超出了我目前生锈的 R

update3 此代码将邮政编码转储到数据框 zip3.codes <- as.data.frame(zip3) 应该可以与 zip3.df <- fortify(zip3@polygons[[1000]]) 之类的东西组合,其中 1000将替换为与特定 zip3 关联的所有行 zip3.codes

4

1 回答 1

1

您可以使用fastshp包来加载数据:

 install.packages("fastshp",,"http://rforge.net")
 library(fastshp)
 s <- read.shp("zip5.shp", format="polygon")

s现在是所有 ZIP 形状的列表。您对xy组件感兴趣-例如,要绘制第一个 ZIP,只需使用类似

 plot(s[[1]]$x, s[[1]]$y, asp=1.25)
 polygon(s[[1]]$x, s[[1]]$y, col="#eeeeee")

要匹配名称,请使用read.dbffrom foreign

 library(foreign)
 d <- read.dbf("zip5.dbf", as.is=TRUE)
 names(s) <- d$ZIP5

有关?read.shp可用格式的更多详细信息,请参阅。“多边形”NA用于分隔单个多边形,“列表”使用索引为您提供零件。

顺便说一句,数据集有些可疑,您可能想查看 TIGER/Line 人口普查 ZCTA5 数据(最近的是 2010 年)。

于 2013-02-14T04:07:19.640 回答