GIS奮闘記

元GISエンジニアの技術紹介ブログ。主にPythonを使用。

スポンサーリンク

geopandasを使ってShapeファイルを作成しよう! ~Airbnbのデータを可視化してみよう~

さて、今回はgeopandas第二弾です。前回はgeopandasの簡単な使い方を紹介しましたが、今回はもう少し掘り下げてShapeファイルの作成をしてみようと思います。

geopandas第一弾に関しては以下をご参照ください。
www.gis-py.com

本エントリーの後に第三弾も書きました。より詳しくgeopandasについて説明したエントリーです。ぜひ読んでみてください。
www.gis-py.com

Airbnbとは?

Airbnb(エアビーアンドビー)は、宿泊施設・民宿を貸し出す人向けのウェブサイトである。世界192カ国の33,000の都市で80万以上の宿を提供している。そうです。私は興味はあるのですが、一度も利用したことがありません・・・いつか使ってみたいですね!
Airbnb - Wikipedia

データ

以下のサイトからAirbnbのオープンデータをダウンロードすることができます。しかし、日本のデータがない!日本ではあまり人気がないからでしょうか?
Get the Data - Inside Airbnb. Adding data to the debate.

なので、今回はブログ主に馴染み深い西オーストラリアのデータを使用したいと思います。

赤枠が今回使用したデータです。上の赤枠が宿泊施設データを格納したCSV、下の赤枠が地形データを格納したgeojsonですね。
f:id:sanvarie:20181012105442p:plain

実行環境

Windows7 64bit
ArcGIS Desktop10.4.1
Python2.7.3

サンプルコード

ダウンロードしたCSVとgeojsonからShapeファイルを作成するサンプルです。

# -*- coding: utf-8 -*-
import pandas as pd
import geopandas
from shapely.geometry import Point

#csvの読み込み
df = pd.read_csv(r"D:\gis-py\geopandas\airbnb\listings.csv")

#ポイント作成
geometry = [Point(xy) for xy in zip(df.longitude, df.latitude)]
geo_df = geopandas.GeoDataFrame(df, geometry=geometry)

#Shape出力
geo_df.to_file(driver='ESRI Shapefile', filename=r"D:\gis-py\geopandas\airbnb\accommodation.shp")

#geojsonの読み込み
df2 = geopandas.read_file(r"D:\gis-py\geopandas\airbnb\neighbourhoods.geojson")

#Shape出力
df2.to_file(driver='ESRI Shapefile', filename=r"D:\gis-py\geopandas\airbnb\western_Australia.shp")

ものすごいあっさり作れてしまいました。本当に便利なライブラリですね。ArcMapを使用して作成したShapeを確認してみます。

f:id:sanvarie:20181012110339p:plain

おぉーまさしく西オーストラリアですね!そして、宿泊施設は都市部に集中していることがわかりますね。たしかオーストラリアの真ん中らへんは砂漠地帯だったと思うので、宿泊施設がほとんどないことも納得がいきます。

属性はこんな感じです。各宿泊施設のWEBサイトに載っているような情報(値段とか場所とか)が入っているみたいですね。

f:id:sanvarie:20181012111238p:plain

ちなみに西オーストラリア最大の都市であるパースの宿泊施設が何個あるか空間検索して調べてみました。

f:id:sanvarie:20181012111644p:plain

なんと710個!やはり都市部は違いますね。

今回の記事ではgeopandasを使用すれば、本当に簡単にShapeを作成することができるということがわかりました。ただ、もっと色々な機能を有しているライブラリですので、応用すればもっと色々なことができるかと思います。これを機にぜひ使ってみてはいかがでしょうか。

以上、今回は「geopandasを使ってShapeファイルを作成しよう! ~Airbnbのデータを可視化してみよう~」でした。