In [1]:
Copied!
from plateaukit import load_dataset
# データの読み込み
chiyoda = load_dataset("plateau-13101-chiyoda-ku-2023")
chiyoda
from plateaukit import load_dataset
# データの読み込み
chiyoda = load_dataset("plateau-13101-chiyoda-ku-2023")
chiyoda
Out[1]:
Dataset(plateau-13101-chiyoda-ku-2023)
- 関連: 都市モデルを追加する・削除する
範囲の選択¶
読み込んだデータセットから指定範囲の都市モデルを取得するには、いくつかの方法が利用可能です。
get_area()
: 全範囲を選択します。area_from_bbox(bbox)
: 範囲を[左上のx座標 (経度), 左上のy座標 (緯度), 右下のx座標 (経度), 右下のy座標 (緯度)]
で指定します。area_from_points(point, size=[width, height])
: 範囲を一つ以上の地点の座標と範囲のサイズで指定します。area_from_postcode(postcode)
: 範囲を郵便番号で指定します。area_from_address(address)
: 範囲を住所で指定します。area_from_landmark(landmark)
: 範囲を建物等のランドマークの名前から指定します。
In [2]:
Copied!
# 住所から範囲を取得
area = chiyoda.area_from_address("東京都千代田区丸の内1-1")
area
# 住所から範囲を取得
area = chiyoda.area_from_address("東京都千代田区丸の内1-1")
area
Out[2]:
Area()
範囲のプレビュー¶
.show()
メソッドを使って選択範囲をプレビューできます。
この機能の詳細については都市モデルを表示するを参照してください。
- スクリプトとして実行している場合はブラウザで表示されます。
In [3]:
Copied!
area.show()
area.show()
Out[3]:
対象範囲が大きい場合、環境によってはプレビューに時間がかかることや表示されない場合があります。(Google Colaboratoryなど)
選択範囲のデータを取得¶
.gdf
プロパティから選択範囲の建築物のデータを Pandas (GeoPandas) のデータフレーム (geopandas.GeoDataFrame
) として取得できます。
In [4]:
Copied!
area.gdf
area.gdf
Out[4]:
buildingId | measuredHeight | storeysAboveGround | storeysBelowGround | name | usage | riverFloodingRisk | gmlId | type | geometry | longitude | latitude | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
33135 | 13102-bldg-10854 | 8.0 | 2.0 | 0.0 | None | 店舗等併用住宅 | { } | bldg_48aa415d-b82f-4e8f-97e1-7538b5cb6c86 | Building | POLYGON ((139.77169 35.68239, 139.77172 35.682... | 139.771677 | 35.682420 |
33137 | 13102-bldg-6487 | 30.6 | 7.0 | 0.0 | None | 業務施設 | { "隅田川・新河岸川流域": { "depth": 0.01, "duration": n... | bldg_a2cb7753-a45c-417f-9c16-812513dc4882 | Building | POLYGON ((139.77015 35.67928, 139.76995 35.678... | 139.770247 | 35.679053 |
33138 | 13102-bldg-8496 | 22.6 | 1.0 | 1.0 | None | 業務施設 | { } | bldg_5acb83dc-b2db-44ab-8a6e-ee42fafa51f0 | Building | POLYGON ((139.77158 35.68308, 139.77150 35.682... | 139.771581 | 35.682998 |
33139 | 13102-bldg-3709 | 17.5 | 5.0 | 1.0 | None | 店舗等併用住宅 | { "隅田川・新河岸川流域": { "depth": 0.06, "duration": n... | bldg_7448a050-4729-488a-8bc9-ccf5187bdeb4 | Building | POLYGON ((139.77348 35.67974, 139.77352 35.679... | 139.773476 | 35.679787 |
33142 | 13102-bldg-1425 | 20.3 | 6.0 | 1.0 | None | 業務施設 | { "隅田川・新河岸川流域": { "depth": 0.14, "duration": n... | bldg_d95fa555-3f54-4735-b8a6-3e7bc91a1e4f | Building | POLYGON ((139.77258 35.68240, 139.77251 35.682... | 139.772570 | 35.682330 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
35533 | 13101-bldg-3303 | 50.5 | 30.0 | 0.0 | None | 業務施設 | { "隅田川・新河岸川流域": { "depth": 0.67, "duration": n... | bldg_d842ba89-df3a-4ccc-b131-ab8ccfb439d0 | Building | POLYGON ((139.76323 35.68456, 139.76319 35.684... | 139.763198 | 35.684516 |
35556 | 13101-bldg-3969 | 150.8 | 30.0 | 0.0 | None | 業務施設 | { "神田川流域": { "depth": 0.191, "duration": null,... | bldg_b325487b-5b82-479f-8d92-a81a5e6407dc | Building | POLYGON ((139.76351 35.68457, 139.76382 35.684... | 139.763572 | 35.684719 |
35557 | 13101-bldg-1767 | 103.9 | 23.0 | 5.0 | None | 業務施設 | { "神田川流域": { "depth": 0.205, "duration": null,... | bldg_9df56993-8a78-4a60-a5ec-4847917a0eec | Building | POLYGON ((139.76348 35.68552, 139.76353 35.685... | 139.763762 | 35.685608 |
35577 | 13101-bldg-236 | 3.4 | NaN | NaN | None | None | { "隅田川・新河岸川流域": { "depth": 0.03, "duration": n... | bldg_a874edfe-2043-457f-a757-26fabc751fc4 | Building | POLYGON ((139.77003 35.68521, 139.77011 35.685... | 139.770104 | 35.685167 |
35581 | 13101-bldg-2914 | 17.6 | 3.0 | 0.0 | None | 業務施設 | { "神田川流域": { "depth": 0.212, "duration": null,... | bldg_b5d0b386-c1ce-49f2-b301-024b20260333 | Building | POLYGON ((139.76459 35.68522, 139.76469 35.685... | 139.764566 | 35.685375 |
703 rows × 12 columns
建築物以外の種類のデータも事前ビルド済みの場合、例えば道路 (tran
) であれば .layers["tran"].gdf
という形で同様にデータを取得可能です (実験的機能)。
In [5]:
Copied!
area.layers["tran"].gdf
area.layers["tran"].gdf
Out[5]:
gmlId | type | geometry | longitude | latitude | |
---|---|---|---|---|---|
4278 | tran_3cc4df7d-2578-4ede-a668-4e3ec5f33060 | Road | POLYGON ((139.76269 35.68299, 139.76283 35.683... | 139.762501 | 35.683044 |
4309 | tran_350b85d4-468f-472a-94a8-e875e542966f | Road | POLYGON ((139.76252 35.67870, 139.76278 35.679... | 139.762489 | 35.678961 |
4317 | tran_8e5aa4fe-5ee6-4e83-bcf1-1223772bdb4c | Road | POLYGON ((139.76291 35.68061, 139.76295 35.680... | 139.762457 | 35.680743 |
4320 | tran_b630087d-525d-4dd7-962f-c321ff4c8dcf | Road | POLYGON ((139.77092 35.68223, 139.77095 35.682... | 139.770771 | 35.682318 |
4322 | tran_2a054d01-ee27-4649-a76d-a8b83d92c1ac | Road | POLYGON ((139.76350 35.68223, 139.76353 35.682... | 139.763029 | 35.682285 |
... | ... | ... | ... | ... | ... |
5689 | tran_810e7d8c-2fde-4d0a-bdbe-d1498a495aa2 | Road | POLYGON ((139.76969 35.68698, 139.76969 35.686... | 139.769646 | 35.687158 |
5690 | tran_09bb1b26-ab42-4bdb-b8a5-63b6502c8ad5 | Road | POLYGON ((139.77294 35.68338, 139.77274 35.683... | 139.772823 | 35.683397 |
5713 | tran_2d925c42-e248-4e7a-b112-17b19745746d | Road | POLYGON ((139.77141 35.68547, 139.77137 35.685... | 139.771272 | 35.685230 |
5717 | tran_8c3a67c8-ca77-46bb-9a76-02e39025eda3 | Road | POLYGON ((139.77434 35.68700, 139.77432 35.687... | 139.774094 | 35.686959 |
5720 | tran_af3934fb-21d2-4382-91b7-79da4ecb30ed | Road | POLYGON ((139.77274 35.68346, 139.77265 35.683... | 139.772667 | 35.683458 |
402 rows × 5 columns
データフレームは GeoPandas の機能でもプレビュー可能です。
In [6]:
Copied!
area.layers["tran"].gdf.explore()
area.layers["tran"].gdf.explore()
Out[6]:
Make this Notebook Trusted to load map: File -> Trust Notebook
GeoJSON への変換¶
.to_geojson()
メソッドを利用して、選択範囲を GeoJSON 形式に変換できます。
In [7]:
Copied!
data = area.to_geojson()
data[:300]
data = area.to_geojson()
data[:300]
Out[7]:
'{"type": "FeatureCollection", "features": [{"id": "33135", "type": "Feature", "properties": {"buildingId": "13102-bldg-10854", "measuredHeight": 8.0, "storeysAboveGround": 2.0, "storeysBelowGround": 0.0, "name": null, "usage": "店舗等併用住宅", "riverFloodingRisk": "{ }", "gmlId": "bldg_48aa415d-b82f-4e8f-'
CityJSON への変換¶
.to_cityjson()
メソッドを利用して、選択範囲を CityJSON 形式または CityJSONSeq 形式に変換できます。
In [8]:
Copied!
area.to_cityjson("/tmp/chiyoda_bldg.city.json", target_epsg=3857, types=["bldg"])
area.to_cityjson("/tmp/chiyoda_bldg.city.json", target_epsg=3857, types=["bldg"])
In [9]:
Copied!
import json
from pprint import pprint
with open("/tmp/chiyoda_bldg.city.json", "r") as f:
data = json.load(f)
pprint(list(data["CityObjects"].items())[0])
import json
from pprint import pprint
with open("/tmp/chiyoda_bldg.city.json", "r") as f:
data = json.load(f)
pprint(list(data["CityObjects"].items())[0])
('bldg_48aa415d-b82f-4e8f-97e1-7538b5cb6c86', {'attributes': {'building_id': '13102-bldg-10854', 'measured_height': 8.0, 'river_flooding_risk': {}, 'storeys_above_ground': 2, 'storeys_below_ground': 0, 'usage': '店舗等併用住宅'}, 'geometry': [{'boundaries': [[[0, 1, 2, 3]]], 'lod': '2', 'type': 'MultiSurface'}, {'boundaries': [[[4, 5, 6, 7, 8, 9]]], 'lod': '2', 'type': 'MultiSurface'}, {'boundaries': [[[10, 11, 12, 13, 14, 15]]], 'lod': '2', 'type': 'MultiSurface'}, {'boundaries': [[[0, 5, 4, 1]]], 'lod': '2', 'type': 'MultiSurface'}, {'boundaries': [[[14, 7, 6, 15]]], 'lod': '2', 'type': 'MultiSurface'}, {'boundaries': [[[13, 8, 7, 14]]], 'lod': '2', 'type': 'MultiSurface'}, {'boundaries': [[[3, 10, 15, 6, 5, 0]]], 'lod': '2', 'type': 'MultiSurface'}, {'boundaries': [[[12, 9, 8, 13]]], 'lod': '2', 'type': 'MultiSurface'}, {'boundaries': [[[11, 2, 1, 4, 9, 12]]], 'lod': '2', 'type': 'MultiSurface'}, {'boundaries': [[[2, 11, 10, 3]]], 'lod': '2', 'type': 'MultiSurface'}], 'type': 'Building'})