一覧へ 前へ<< >>次へ
イギリスの地方行政区の境界線のダウンロード (2016年11月24日更新)
下準備 |
まず、作業の始める前に、イギリスのサイトから、地方行政区ごとの人口のデータをダウンロードしました。
人口データだけに加工したExcelファイルはこちら ↓ england_population.zip
解凍するとExcelデータの先頭行に lad2014_code と書かれた列があります。
多分、2014年版のLocal administrative (地方行政区)のコードという意味なのでしょう。
E06000001 E06000002 E06000003 E06000004 E06000005 E06000006 …
とありますが、これら(UK boundary lat long data E06000001、など)をキーワードに検索してみると、境界データを提供しているサイトにたどりつきました。
|
ダウンロードサイト |
ここのサイトから地方行政区の境界データをダウンロード
http://statistics.data.gov.uk/doc/statistical-geography/E06000005 |
ダウンロード用マクロ |
|
---|
手入力は大変なので、Excelマクロを利用して、3秒間隔で順次ダウンロードさせました。 三流君というサイトの例を参考に組み換え。Do whileのところはもう少しマシな書き方があると思いますが、やっつけ仕事的に進めてしまいました。
'URLDownloadToFile API from URLMON. Private Declare Function URLDownloadToFile Lib "urlmon" Alias _ "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _ szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Sub repeat_download()
Dim strFNAME As String 'ダウンロード先(パス+ファイル名) Dim returnValue
a = 1
For i = 2 To 370
strURL = Worksheets(1).Cells(i, 3) strFNAME = Worksheets(1).Cells(i, 1) & ".json"
'ファイル名をブックのパス+test.pdfとする strFNAME = "C:\Users\Takayuki\Desktop\UK\" & strFNAME
'URLDownloadToFile API をコールする returnValue = URLDownloadToFile(0, strURL, strFNAME, 0, 0)
'結果の表示 MsgBox "結果は:" & returnValue 'MsgBox strFNAME & "に保存されました" '読みこみ完了まで待つ '30秒後を計算して、待つ time10 = DateAdd("s", 3, Now()) Do While a = 1 DoEvents If time10 < Now() Then Exit Do End If DoEvents Loop Next i
End Sub |
|
残念ながら、EnglandとWalesのみしかデータが存在せず、北アイルランドとスコットランドのものがありませんでした。
ダウンロードできた全てのjsonデータを圧縮したもの。
↓
UK_Boundaries.zip
|
文字の変換 |
|
---|
で、ダウンロードしたデータを開くと、
-1.242824973767965,54.722253435826524],[-1.239264136944496,54.72138459394879],[-1.2272829
こんな感じで、扱いにくい印象の並びであったので、再びExcelマクロにてReplace関数を利用して、 ],[ を改行(vbCrLf)に変換、,をvbTabでタブに変換。
以下の例は、E06000001_boundary.jsonを対象として処理しているものです。
Sub データ変換()
Open ThisWorkbook.Path + "\E06000001_boundary.json" For Input As #1
Do While Not EOF(1) Line Input #1, strText Loop
Close #1
strText = Replace(strText, "],[", vbCrLf)
'strText = Replace(strText, "[[", "") 'strText = Replace(strText, "]]", "") strText = Replace(strText, "}}", "") strText = Replace(strText, ",", vbTab)
Open ThisWorkbook.Path + "\test.txt" For Output As #1
Print #1, strText
Close #1
End Sub
|
変換した緯度経度データで散布図を描く |
|
---|
Hartlepoolという街のデータのようですが、
-1.242505139 54.72242039 -1.241920567 54.7227133 -1.241956476 54.72245291
のように、緯度経度のデータとして、散布図を作成。 |
地図で見ると |
 こんな形のようなので、だいたい合っているようです。
追々、全てのデータを変換して、自作地図ソフトで表示させてみます。 |
|