GIS 小應用:找出新界西是否有相對比較多的 OK 便利店

之前到元朗和屯門一帶,總是覺得 OK 便利店比較多,而 7-eleven 感覺好像比大埔和沙田區疏落一點,為了證實我的觀察,我就利用 Quantum GIS 和 SpatiaLite 幫我找出一些線索。

首先我到 OK7-eleven ,在 JSON 裡找出它們的座標資料,各自儲存成 CSV 格式,好讓 Quantum GIS 可以載入。

黃點為 7-eleven,紅點為 OK 在香港的分佈,底圖用了 GADM 提供的十八區地圖:
seven-stat1

呀,硬是有奇怪的資料,單看數字,12345 和 56789 明顯是源資料有問題啦,但我懶得處理:
seven-stat2

將圖層儲存成 SpatiaLite 格式:
seven-stat3

利用 spatialite-gui 打開資料庫,試找最接近的 OK 和 7-eleven,同時可見數據很不準確:
seven-stat4

第 1 行佐敦道和第 33 行青山道分店,它們果然連在一起:
seven-stat5
seven-stat6

7-eleven 和 7-eleven 之間呢?撇開座標不準的問題,兩分店最接近多是在港鐵站內:
seven-stat7

OK 和 OK 之間也是如此:
seven-stat8

它們的十八區分佈:
seven-stat10
seven-stat9

咦?它們的總數不等於分店數量?原來有些分店不落在十八區底圖裡(因為那底圖不夠精細和新吧,加上先前提到那錯誤),但我也懶理了,不去修正:
seven-stat12
seven-stat11

然後我寫了這一條 SQL,是用來找出 7-eleven 和 OK 各自所有分店的方圓 500 米 Buffer 範圍,也就它們各自的服務範圍。500 米是我隨意定下的,我想,超過這距離的便利店已經很遠了。GUnion 是用來將不同分店之間的服務範圍結合起來:
seven-stat13

將結果儲存成 Shapefile,在 Quantum GIS 匯入,可以看到兩間的服務範圍(粉紅色為 7-eleven,啡色為 OK)。我猜,範圍以外的,都是比較少人居住(就算多人住,也是比較寧靜的屋苑)和經濟活動比較少的地區:
seven-stat14

想不到在九龍中間都有覆蓋不了的地方:
seven-stat15
seven-stat17

之後我又寫了 SQL,用來計算 7-eleven 和 OK 各自在每一區的總覆蓋面積,和以十八區劃分,每一間分店各自的覆蓋面積總和。我將兩個數相除,若是數字愈大,代表有些分店的開設,並沒有增加集團的總覆蓋率,也就是說,它們開得接近。若然區內所有分店的範圍都不重複,數字會是 1。反之,若是分店之間比較聚集,數字會比較大,接近社區內每一個群組的平均分店數量(每一區的規劃都不同,所以不易找到最大值,所以我只能用 OK 和 7-eleven 的數字比較,而不能獨立解釋。這也說明我的計法隱含了一些假設,例如兩者的分店都在接近的區域出現):
seven-stat24
seven-stat25

另外,因為我在開頭說過,我在新界西覺得 OK 好像比新界東要多,而 7-eleven 又好像比新界東疏落,所以我做了以下比較。結果不出我所料,雖然 OK 在新界西仍是比 7-eleven 少,但它的密集度相對 7-eleven 較大埔和沙田高。反之,在大埔和沙田,OK 在數量上跟 7-eleven 的比例本身已經比較少,對應它相對 7-eleven 的密集比例亦比較少(其實要解釋下表不是一件很容易的事……):
seven-stat22

若是將我所定義的服務範圍擴展成一公里,數字會比較明顯:
seven-stat23

內部連結:
【目錄】地理/地理資訊系統/空間資料庫/大地測量內部連結

本文連結