BigQueryにShpeFileを取り込む

### ShpeFileからBigQuery用のWKTを作る
# 目的:Google datapotalでの行政界ポリゴンがひどすぎる(超きたない)から自分で作る
# ESRI市区町村界ShapeFileを使っているが、この方法では規定違反になるので取り扱い注意
#
library(sf)
x <- st_read("japan_ver821/japan_ver821.shp")
x2 <- x$geometry
x3 <- st_as_text(x2)
z2 <- x$JCODE
z3 <- as.data.frame(z2)
df1 <- cbind(z3,x3)
df2 <- na.omit(df1)
write.table(df2,"japan_ver821.csv",row.names = F,col.names = F, sep = ",")
## GCPでの後処理
# csvをGCStregeで読み込んでからBigQueryでテーブル作成
#
# BigQueryへ読み込むスキーマ
# JCODE	STRING	NULLABLE	
# WKT_TEXT	STRING	NULLABLE
# 一旦WKT_TEXTをSTRINGで読み込んでから、クエリでWKTに変換すること。直接やるとエラーになるため(後述)
#
# WKTの変換クエリ
# SELECT *,ST_GEOGFROMTEXT(WKT_TEXT,make_valid => TRUE) AS WKT FROM `XXXX.XXXX` 
# make_valid => TRUE でポリゴンがループしている部分のエラーを修正

※ESRIのシェープファイルはMULTIPOLYGONになっています。JCODEとマルチポリゴンが一対です。

国土地理院の行政区データを小さくする(ローポリ化)

なぜ小さくするのか。国土地理院の行政区データは細かく出来ているが、データポータルでWKTを表示する場合ポリゴンのポイント総数が10000ポイント以内という制限があるためローポリ化して表示させる。

方法はマップシェーパーを使う

https://mapshaper.org/

やりかた

https://humo-life.net/memo/doku.php?id=%E3%82%B5%E3%83%BC%E3%83%90%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2:mapshaper:web%E7%89%88%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9

※CRANにrmapshperがあるので、使えるはずだが、手動でやっても簡単

小さくした後のshp,shx,dbfを使う(ここでは沖縄の行政区データ)

 library(sf)
 #library(rmapshaper)
 xx <- st_read("N03-20_47_200101_2/N03-20_47_200101.shp")
 xx2 <- xx$geometry
 xx3 <- st_as_text(xx2)
 zz2 <- xx$N03_007
 zz3 <- as.data.frame(zz2)
 ddf1 <- cbind(zz3,xx3)
 ddf2 <- na.omit(ddf1)
 write.table(ddf2,"okinawa.csv",row.names = F,col.names = F, sep = ",")

※国土地理院のシェープファイルはPOLYGONになっています。そのため同じJCODEが複数あります。

コメント欄


2164


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS