9

プロットのコンテンツ(線/ポリゴン)を、ArcMapで開くことができるレイヤー/シェープファイルとしてエクスポートしようとしています。これらは私が使用しているライブラリの一部です、

library(shapefiles)
library(PBSmapping)
library(adehabitatHR)
library(maptools)
library(maps)
library(rgdal)
library(igraph)

私の緯度/経度のデータは次のようになります。

tagdata<-read.table(text="meanlat  meanlong
-18.63327 147.0248
-18.6368  147.0238
-18.62068 147.294
-18.62953 147.2942
-18.62953 147.2942
-18.62091 147.2938
-18.62953 147.2942
-18.62466 147.2926
-18.73393 147.2816
-18.73393 147.2816
-18.75383 147.2541
-18.75383 147.2541
-18.75383 147.2541
-18.75383 147.2541
-18.6368  147.0238
-18.63063 147.0256
-18.63063 147.0256
-18.68133 147.1164
-18.6368  147.0238
-18.63063 147.0256
-18.63063 147.0256
-18.75383 147.2541
-18.61273 147.0682
-18.69655 147.09
-18.6368  147.0238
-18.63063 147.0256
-18.63063 147.0256
-18.63217 147.0251
-18.75383 147.2541
-18.75383 147.2541
-18.75383 147.2541
-18.63063 147.0256
-18.68133 147.1164
-18.68133 147.1164
-18.63217 147.0251
-18.69922 147.0909
-18.73393 147.2816
-18.63632 147.0792
-18.69522 147.0896
-18.6368  147.0238
-18.75383 147.2541
-18.75383 147.2541
-18.75383 147.2541",header=TRUE)

場所をプロットし、AdehabitatHRパッケージを使用して最小凸多角形(MCP)を計算しました。

plot(tagdata$meanlong,tagdata$meanlat, col="red",pch=1)                  

loc<-tagdata[ ,c("meanlong","meanlat")]
coord<-SpatialPoints(loc)
poly<-mcp(coord,percent=100)
plot(poly,add=TRUE)

ArcMapまたは同様のソフトウェアで開くことができるシェープファイルとしてポイントをエクスポート/書き込む方法を知っています。

例えば:

loc<-SpatialPoints(loc) # #convert loc to spatial points
rem<-tagdata[c(-1:-2)] 
SpatialPointsDataFrame(coords=loc,data=rem) 
obj<-SpatialPointsDataFrame(coords=loc,data=rem)
writePointsShape(obj,"myshape.shp")

ただし、ポリゴンまたはポリラインオブジェクトを使用してそれを行うための良い方法は見つかりませんでした。MCPをシェープファイルとして使用してpolyオブジェクトをエクスポート/書き込みできるようにしたいと思います。助言がありますか?

4

1 に答える 1

17

rgdalこの種のものには素晴らしいです。http://www.gdal.org/には、サポートされている形式について必要な情報のほとんどが含まれています。

この場合、 writeOGR関数が必要です

# this will create a shapefile called poly within the working directory
library(rgdal)
writeOGR(poly, dsn = '.', layer = 'poly', driver = "ESRI Shapefile")

シェープファイル(ポイント、ポリゴンなど)を作成するのと同じくらい簡単に使用できますが、それらはSpatialxxxDataFrameオブジェクトである必要があります

coorddf <-  SpatialPointsDataFrame(coord, data = data.frame(dummy = rep(1,nrow(coord@coords))))
writeOGR(coorddf, dsn = '.', layer = 'mypoints', driver = "ESRI Shapefile")
于 2012-12-18T05:36:47.463 に答える