LINK:[GoogleEarthとR][ShapeFileライブラリ][kmlラボ][空間的なデータの分析][Rでジオコーディング][RでGPS]
目次
論文引用・書籍等に引用する場合の著作権についての連絡>>okinawa
シェープファイル(ESRI Shapefile)は、ESRI社の提唱した、公開されたベクタデータの業界標準フォーマットです。
ESRI・ERDAS製品はもちろん、多くのGISソフトウェアで利用が可能です。
しかし、無料のソフトを用いてシェープファイルの編集・加工をすることは(一部のソフトを除いて)できませんが、Rでは shapefiles, maptools, sp, rgdal を用いてシェープファイルの編集・加工をすることが可能です。
http://www.esrij.com/getting-started/learn-more/shapefile/
http://www.esrij.com/products/data/japan-shp/
GISの基本データとなる、全国市区町村界データの整備を行うことを目的に、ESRIジャパン株式会社様が公開されている全国市区町村界データをRを用いて加工し公開する許可をいただきました。
下記のように、公開されるデータにつきましては、ESRIジャパン株式会社様の回答内容を守って取り扱っていただきますようよろしくお願いいたします。
メールの本文:
<問い合わせ内容>
はじめまして、牧山と申します。
実はR(アール)という統計ソフトのmaptoolsというライブラ
リを用いて、ESRIJapan様が公開されている全国市区町村境界
データの県別の切り出しを行いました。
県別に切り出されたデータの著作権は当然貴社に帰属するので
すが、切り出した後の県別のshapefileを別途公開することは
可能でしょうか?
県別のshapefileがあると、Rで地域研究されている先生方も大
助かりになると思います。
身勝手な相談で申し訳ございませんが、ご検討のほどよろしく
お願いいたします。
<ご質問>
公開されている全国市区町村界データの取扱について
<回答>
「ご公開可能」と回答いたします。
ただし、以下の条件を遵守願います。
(1)営利目的には利用しない。
(2)公開時には、以下の文章を入れていただく。
「本データの作成に当たっては、ESRIジャパン株式会社の全国市区町村界データを使用しました。本データの著作権はESRIジャパン株式会社に帰属します。」
[2007/10/25]追加
ShapeFileライブラリで許可いただきました内容から、更に許可範囲を広げていただきましたので、その内容を公開いたします。
このたびはお問い合わせありがとうございました。
ご質問にお答えいたします。
<問い合わせ内容>
以前、「Rを利用したShapeFileの県別の切り出し加工・公開」を許可していただいたものです。
今回、ご相談したいことは、公開されている全国市区町村行政界ShapeFileデータにつきまして
(1)現在作成されている*緯度経度座標* (*回転楕円体:GRS1980、データム:JGD2000*)から他の測地系・座標系への変換した場合の加工物(ShapeFileもしくはそれ以外のフォーマット)の公開が可能か。
(2)ShapeFileからGoogleEarthのKMLへの変換を行った加工物の公開が可能か。
<回答>
「ご公開可能」と回答いたします。 ただし、以下の条件を遵守願います。
(1)営利目的には利用しない。
(2)公開時には、以下の文章を入れていただく。
「本データの作成に当たっては、ESRIジャパン株式会社の全国市区町村界データを使用しました。本データの著作権はESRIジャパン株式会社に帰属します。」
http://d.hatena.ne.jp/murakami_tak/20080708/p1
下記のように利用の許可をいただきました。
「データの利用に関してですが,著作者の表記(書式自由)をして頂ければ自由にご利用ください。公開されたデータが非営利・営利いずれの使われ方をしても構いません。」
「もし,私の作ったデータがオープンソース・コミュニティの役に立つのであれば望外の幸せです。」
データの加工・公開にあたっては下記の文章を入れてください。
「本データの作成にあたっては、財団法人 地域地盤環境研究所 村上貴志氏のメッシュデータを使用しました。本データの著作権は村上貴志氏に帰属します。」
また、公開されるデータにつきましては、村上貴志さんの回答内容を守って取り扱っていただきますようよろしくお願いいたします。
(2009.09.12追記) 上記の利用条件を設けていましたが,これらを削除・撤回いたします。皆様の責任においてご自由にお使いください。本データを利用して得た成果を公表される際には,引用元を明示していただけると幸いです。
http://www.hcc.co.jp/solutionhp/gismap/mesh10km/download.html
北海道地図株式会社様から下記の通り許可をいただきました。
さてお問い合わせの件ですが、下記の条件を遵守いただけましたら加工・公開していただいて結構です。
�営利目的に使用しないこと。
�公開時には下記の文章を記載いただくこと。
「本データの作成に当たっては、北海道地図株式会社のメッシュインデックスデータを使用しました。本データの著作権は北海道地図株式会社に帰属します。」
以上宜しくお願い申し上げます。
公開されるデータにつきましては、北海道地図株式会社様の回答内容を守って取り扱っていただきますようよろしくお願いいたします。
http://www.globalmap.org/download/kanni01.html
利用上の注意(著作権など)
http://www.globalmap.org/download/index_kanni.html
国土数値情報データ変換ツール http://nlftp.mlit.go.jp/ksj/index.html
街区レベル位置参照情報ダウンロード http://nlftp.mlit.go.jp/isj/
http://fgd.gsi.go.jp/download/
**地域メッシュについての解説**
http://www.esrij.com/support/arcview3/material/mesh/index.html
北海道地図株式会社が公開しているメッシュインデックスデータ
UTM座標、平面直角座標の日本測地系、世界測地系の10kmメッシュインデックスデータ、第2次地域区画(日本測地系、世界測地系)のShapeFileが公開されています。
http://www.hcc.co.jp/solutionhp/gismap/mesh10km/download.html
村上さんのサイトで第1次地域区画、第2次地域区画、基準地域メッシュ、分割地域メッシュ(2分の1地域メッシュ:都道府県別)が公開されています。
http://d.hatena.ne.jp/murakami_tak/20080708/p1
> read.shape("AdmArea.shp") Error in make.names(onames, unique = TRUE) : invalid multibyte stringat 'hogehoge'といって読み込めないことがあります。 ↑読み込み方教えてください!ハジメ.タナカ@タフツ.エデュ -- 2009-09-23 (水) 10:50:24
Macで読み込む場合の前処理。dbf内のSJIS(cp932)をUTF-8に変換します。****は個人のディレクトリ名
library(foreign) f<-read.dbf("/Users/****/japan_ver71-1/japan_ver71.dbf") f$KEN<-iconv(f$KEN,"CP932","UTF-8") f$SICHO<-iconv(f$SICHO,"CP932","UTF-8") f$GUN<-iconv(f$GUN,"CP932","UTF-8") f$SEIREI<-iconv(f$SEIREI,"CP932","UTF-8") f$SIKUCHOSON<-iconv(f$SIKUCHOSON,"CP932","UTF-8") write.dbf(f,"/Users/****/japan_ver71-1/japan_ver71.dbf",factor2char = TRUE,max_nchar = 254)
分解プログラム
#function prefbuilderJP<-function(path,filename){ library(maptools) path<-path filename<-filename File<-paste(path,"/",filename,sep="") jpn<-readShapePoly(File) prefname<-c("北海道","青森県","岩手県","宮城県","秋田県","山形県","福島県", "茨城県","栃木県","群馬県","埼玉県","千葉県","東京都", "神奈川県","新潟県","富山県","石川県","福井県","山梨県","長野県", "岐阜県","静岡県","愛知県","三重県","滋賀県","京都府","大阪府", "兵庫県","奈良県","和歌山県","鳥取県","島根県", "岡山県","広島県","山口県", "徳島県","香川県","愛媛県","高知県", "福岡県","佐賀県","長崎県","熊本県","大分県","宮崎県","鹿児島県", "沖縄県") preflist<-c("hokkaido","aomori","iwate","miyagi","akita","yamagata","fukusima", "ibaraki","tochigi","gunma","saitama","chiba","tokyo", "kanagawa","niigata","toyama","isikawa","fukui","yamanasi","nagano", "gifu","sizuoka","aichi","mie","siga","kyoto","osaka", "hyogo","nara","wakayama","tottori","simane", "okayama","hirosima","yamaguti","tokusima","kagawa","ehime","kochi", "fukuoka","saga","nagasaki","kumamoto","ooita","miyazaki","kagosima","okinawa") Command<-paste(preflist,"<-subset(jpn,jpn@data$KEN=='",prefname,"')",sep="") eval(parse(text=Command)) Command3<-paste("writePolyShape(",preflist,",'",path,"/",preflist,".shp')",sep="") eval(parse(text=Command3)) } #Main prefbuilderJP("/Users/****/japan_ver71-1","japan_ver71.shp")
ESRIジャパン社より宿題を出されたのですが作成するのが大変なので、自動作成用のプログラムを作りました。
ShapeFileまでのパスとShapeFile名をパラメータに設定してください。(下記は、C:/japan_ver61フォルダ内にjapan_ver61.shpがある場合)
#function prefbuilderJP<-function(path,filename){ library(maptools) path<-path filename<-filename File<-paste(path,"/",filename,sep="") jpn<-read.shape(File) jpnpoly<-Map2poly(jpn) jpndf<-jpn$att.data prefname<-c("北海道","青森県","岩手県","宮城県","秋田県","山形県","福島県", "茨城県","栃木県","群馬県","埼玉県","千葉県","東京都", "神奈川県","新潟県","富山県","石川県","福井県","山梨県","長野県", "岐阜県","静岡県","愛知県","三重県","滋賀県","京都府","大阪府", "兵庫県","奈良県","和歌山県","鳥取県","島根県", "岡山県","広島県","山口県", "徳島県","香川県","愛媛県","高知県", "福岡県","佐賀県","長崎県","熊本県","大分県","宮崎県","鹿児島県", "沖縄県") preflist<-c("hokkaido","aomori","iwate","miyagi","akita","yamagata","fukusima", "ibaraki","tochigi","gunma","saitama","chiba","tokyo", "kanagawa","niigata","toyama","isikawa","fukui","yamanasi","nagano", "gifu","sizuoka","aichi","mie","siga","kyoto","osaka", "hyogo","nara","wakayama","tottori","simane", "okayama","hirosima","yamaguti","tokusima","kagawa","ehime","kochi", "fukuoka","saga","nagasaki","kumamoto","ooita","miyazaki","kagosima","okinawa") Command<-paste(preflist,"poly<-subset(jpnpoly,jpndf$PREF=='",prefname,"')",sep="") eval(parse(text=Command)) Command2<-paste(preflist,"df<-subset(jpndf,jpndf$PREF=='",prefname,"')",sep="") eval(parse(text=Command2)) Command3<-paste("write.polylistShape(",preflist,"poly,",preflist,"df,","'",path,"/",preflist,"')",sep="") eval(parse(text=Command3)) } #Main prefbuilderJP("C:/japan_ver61","japan_ver61.shp")
分解後のデータです。
1995年10月 | |
2002年10月 | |
2004年3月 | |
2006年4月 | |
2007年1月 | |
2007年10月 |
「本データの作成に当たっては、ESRIジャパン株式会社の全国市区町村界データを使用しました。本データの著作権はESRIジャパン株式会社に帰属します。」
**地域メッシュについての解説**
http://www.esrij.com/support/arcview3/material/mesh/index.html
「本データ(地域境界データ)の作成に当たっては、ESRIジャパン株式会社の全国市区町村界データを使用しました。本データの著作権はESRIジャパン株式会社に帰属します。」[生成元データ:Japan.zip ver4.0:2004/03]
「本データの作成にあたっては、財団法人 地域地盤環境研究所 村上貴志氏のメッシュデータを使用しました。本データの著作権は村上貴志氏に帰属します。」
R2.0.1J,maptoolsv0.4-13でShapeFileの作成に成功しました。WriteしてもRが落ちなくなりました。
library(maptools) jpn<-read.shape("japan_jdg.shp") jpn_poly<-Map2poly(jpn) jpn_df<-jpn$att.data hokkaido_poly<-subset(jpn_poly,jpn_df$PREF=="北海道") hokkaido_df<-subset(jpn_df,jpn_df$PREF=="北海道") write.polylistShape(hokkaido_poly,hokkaido_df,"hokkaido")
実行環境:WINXPSP2,R2.0.1J,maptools v0.4-13
注)なんでも掲示板の「maptoolsでshapefileの切り出し」を参照してください。
#ライブラリ宣言 library(maptools) library(gpclib) #ShapeFile読み込み #読み込むShapeFileの場所は、任意に指定してください gunma <- read.shape("c:/Program Files/R/rwww/shapefiles/gunma.shp") #Mapオブジェクトをポリゴンに変換 gunma.poly <- Map2poly(gunma) #ポリゴンの数抽出 np<-length(gunma.poly) #gpclib の座標形式に変換 gunma.union <- as(gunma.poly[[1]],"gpc.poly") #gpclibのオブジェクトに変換 for(i in 2:np){ poly <- as(gunma.poly[[i]],"gpc.poly") #gpclibのオブジェクトに変換 gunma.union<-union( gunma.union, poly) #Union(合成) } #県境plot(線種:太さ、形式、色:塗りつぶし色、線色) plot(gunma.union,poly.args= list(lwd=2,lty=1,col="green",border="blue")) #市町村境との合成 plot(gunma.poly,border="blue",add=TRUE)
library(sp) library(gpclib) library(maptools) nc1 <- readShapePoly("C:/GISdat/fukusima.shp", proj4string=CRS("+proj=longlat +datum=NAD27")) lps <- getSpPPolygonsLabptSlots(nc1) ID <- cut(lps[,1],breaks=c(min(lps[,1]),max(lps[,1])) , include.lowest=TRUE) reg4 <- unionSpatialPolygons(nc1, ID) plot(reg4,col="red")
library(sp) library(gpclib) library(maptools) nc1 <- readShapePoly("C:/GISdat/fukusima.shp", proj4string=CRS("+proj=longlat +datum=NAD27")) lps <- getSpPPolygonsLabptSlots(nc1) ID <- cut(lps[,1],breaks=c(min(lps[,1]),max(lps[,1])) , include.lowest=TRUE) reg4 <- unionSpatialPolygons(nc1, ID) getSpPPolygonsIDSlots(reg4) reg4@polygons[[1]]@ID<-"0" df<-nc1@data[1,1:length(names(nc1))] x <- SpatialPolygonsDataFrame(reg4, df)#IDとdfのナンバーを一致させる! writePolyShape(x, "C:/GISdat/fukusimakk", factor2char = TRUE)
rgdalでKMLのreadができるようになったので、KMLからShapeFileへ変換してみた。
注)あらかじめwriteOGRでkmlを作成しておくこと。GoogleEarthとRのベクターオーバーレイ rgdal:writeOGR参照
library(rgdal) x<-readOGR("c:/GISdata/gunma.kml","gunma") writeOGR(x2,"c:/GISdata/gunmak","gunmak","ESRI Shapefile")
もしくは
library(maptools) library(rgdal) x<-readOGR("c:/GISdata/gunma.kml","gunma") writePolyShape(x, "C:/GISdata/gunmak", factor2char = TRUE)
helpにも書いてあるが、KMLのバルーン内に書かれている情報はDBFには変換されなかった。readOGRでKMLを読み込むとSpatialPolygonsDataFrameクラスになっており、そこに別途データを追加することはできる。
メッシュShapeFileデータ(世界測地系:第2次地域区画)をダウンロードしてC:直下に展開
jpn<-read.shape("C:/jgd2000_mesh/mesh_jgd2000.shp") jpnpoly<-Map2poly(jpn) jpndf<-jpn$att.data poly<-subset(jpnpoly,substr(jpndf$MESH,1,4)=="5235")#京都および大阪 plot(poly) poly2<-subset(jpnpoly,jpndf$MESH=="523501")#京都首都 plot(poly2)
maptoolsとgpclibでいちいち県境を描画するのが面倒な場合、fGISを使って県境を作っておくのが便利です。
・fGISを下記のサイトからダウンロードしてください。(フリーです)
・http://www.forestpal.com/fgis.html
・fGISでShapeFileを開きます。読み込まれたShapeFileをクリックして選択します。(ハイライトします)
・[Edit]メニューから[StartEditing]を選びます。
・[pick tool](赤い矢印)で市区町村を全て[ctrl+click]して選択し、[Edit]メニューの[Union Selected Shapes]を選びます。
・[CloseShape]を選択し、保存します。
・出来上がった県ShapeFileのxxxxx.dbfをExcel等で開いて、1行目に正確な県の情報を入力して保存します。
・TatukGISEditorを下記のサイトからダウンロードしてください。(試用期間ありのデモ版、登録が必要)
・http://www.tatukgis.com/Home/home.aspx
・TatukGISEditorを起動し、[Layer]-[Add...]を選びます。
・Select Localize アイコン(矢印に+)で、市区町村を全て[ctrl+click]して選択し、[Shape]-[union shapes]を選びます。
・するとShapes unionウインドウが表示されるので、[Next>>][Next>>]でポリゴンが結合されます。
・[Layer][Export]で出力名を指定してsaveします。
・出来上がった県ShapeFileのxxxxx.dbfをExcel等で開いて、1行目に正確な県の情報を入力して保存します。
こちらで公開しているShapeFileにはJCODEが0および1999のものが含まれています。これらのコードを消去してきれいにするコードです。
0および1999のJCODEは、湖沼や島データがほとんどのようです。ただし、湖沼データでも市町村のJCODEが割り当てられているものもありました。(日光中禅寺湖など)
その場合には、ボイドにはなっていないようで、手動で消去する必要があります。
library(maptools) FileName<-"japan_jdg" jpn<-read.shape(FileName) jpn_poly<-Map2poly(jpn) jpn_df<-jpn$att.data japan_poly<-subset(jpn_poly,jpn_df$JCODE!=0) japan_df<-subset(jpn_df,jpn_df$JCODE!=0) japan_poly2<-subset(japan_poly,japan_df$JCODE!=1999) japan_df2<-subset(japan_df,japan_df$JCODE!=1999) japan_df2$CITY2<-ifelse(is.na(japan_df2$CITY2),"",as.character(japan_df2$CITY2)) japan_df2$CITY1<-ifelse(is.na(japan_df2$CITY1),"",as.character(japan_df2$CITY1)) japan_df2$TOWN1<-ifelse(is.na(japan_df2$TOWN1),"",as.character(japan_df2$TOWN1)) japan_df2$TOWN2<-ifelse(is.na(japan_df2$TOWN2),"",as.character(japan_df2$TOWN2)) write.polylistShape(japan_poly2,japan_df2,FileName)
注)bnda_trans_table2.zipは、
JCODE 都道府県 支庁名 自治体名 備考 01698 北海道 根室支庁 留別村 択捉郡 01695 北海道 根室支庁 色丹村 色丹郡 13381 東京都 三宅支庁 三宅村
のコードを追加しています。
なお、三重北牟婁郡は「北牟婁郡紀伊長島町及び海山町にまたがる入会地(大島等の島嶼)は,所属未定のため」とあり、2005年に紀北町として登録されていますが、
データマッチングさせた2002年時点では所属不明のため、コード付けはしませんでした。
別のサイトで、こちらからダウンロードしたデータにプロジェクションデータが無いという指摘がされていましたので、とりあえずjapan_jdgのものをアップしておきます。このデータをそれぞれの都道府県名に変更してShapeFileと同じところに置いてください。
BNDNET BNDNET_ID NAM LAA JCODE CITYNAME 7 3367 HOKKAIDO NEMURO-SHICHO RUBETSU-MURA ? ? 26 3302 HOKKAIDO NEMURO-SHICHO RUBETSU-MURA ? ? 28 3303 HOKKAIDO NEMURO-SHICHO RUBETSU-MURA ? ? 76 3283 HOKKAIDO NEMURO-SHICHO SHIKOTAN-MURA ? ? 80 3293 HOKKAIDO NEMURO-SHICHO SHIKOTAN-MURA ? ? 84 3287 HOKKAIDO NEMURO-SHICHO SHIKOTAN-MURA ? ? 89 3291 HOKKAIDO NEMURO-SHICHO SHIKOTAN-MURA ? ? 90 3288 HOKKAIDO NEMURO-SHICHO SHIKOTAN-MURA ? ? 3170 1608 MIE KITAMURO-GUN ? ? 3183 1634 TOKYO MIYAKE-SHICHO MIYAKE-MURA ? ? 1959 1790 KYOTO FUNI-GUN HIYOSHI-CHO 26404 日吉町
おそらく、RUBETSU-MURA および SHIKOTAN-MURA、MIYAKE-MURA というのは
JCODE 都道府県 支庁名 自治体名 備考 01698 北海道 根室支庁 留別村 択捉郡 01695 北海道 根室支庁 色丹村 色丹郡 13381 東京都 三宅支庁 三宅村
ではないかと思います。これらは、okinawa様の御判断で、あえて JCODE などを“?”とされているのでしょうか。
また、FUNI-GUN HIYOSHI-CHO というのは、「京都府 船井郡 日吉町」であって、“FUNI-GUN”は“FUNAI-GUN”の誤記であると思います。また、“KITAMURO-GUN(北牟婁郡)”だけ郡名のみのLAAとなっています(このようなLAAはここだけです)。このあたりは飛地がごちゃごちゃしている場所と記憶していますが、帰属未定の場所なんでしょうか。ただ、これらは元の地球地図のデータからしてそうなっているので、どうしたものやら。国土交通省に確認すべきでしょうか…… -- soysoy 2006-06-08 (木) 00:03:29
BNDNET BNDNET_ID NAM LAA JCODE CITYNAM 3170 1608 MIE KITAMURO-GUN ? ?
について,maptools で地図を描画して確認してみました。ここは大島という島嶼ですね。2万5千分の1地形図
http://watchizu.gsi.go.jp/cgi-bin/bl.cgi?r=1&b=340907.09&l=1362148.25
では,「大島」「紀北町入会地」という文字が見えます。
国土地理院の
http://www.gsi.go.jp/KOKUJYOHO/MENCHO/200310/mie.htm
というページの注記に「北牟婁郡紀伊長島町及び海山町にまたがる入会地(大島等の島嶼)は,所属未定のため」とあり,データ整備時点で所属未定であったために,LAAが“KITAMURO-GUN”になっていると考えてよさそうです(現在は紀伊長島町と海山町は合併して紀北町となっており,大島も上記のように紀北町に所属しています)。
前回の書き込みの「飛地が云々」というのは私の勘違いでした(南牟婁郡近辺と混同していました)。
地球地図日本には詳しい注記ファイルがないのが残念ですね。他にも所属未定地など,注釈の必要な場所はあると思うんですが……(北方領土の色丹郡・択捉郡があって国後郡などがないのは何故?とか) -- soysoy 2006-06-10 (土) 00:24:39
BNDNET BNDNET_ID NAM LAA JCODE (CITYNAME) 3202 1409 TOKUSHIMA NYOZAI-GUN ISHII-CHO 36341 (名西郡 石井町) 3232 4049 TOKUSHIMA NYOZAI-GUN KAMIYAMA-CHO 36342 (名西郡 神山町) 4303 206 KAGOSHIMA MARUMIZU-SHI 46214 (垂水市)がおかしくて,LAA は前二者では“MYOZAI-GUN”,後者では“TARUMIZU-SHI”が正しいと思います(CITYNAME は okinawa 様の対応表によります)。これは v1.1 でも直っていません。
29362 人