Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
オープンデータとDjangoの連携で作る地図アプリ
Search
mopinfish
February 16, 2025
0
6
オープンデータとDjangoの連携で作る地図アプリ
2025/02/15に札幌で行われたFOSS4G Hokkaidoの懇親会でのLT資料です。
Djangoのogrinspectで地理空間データを取り込む手順について発表しました。
mopinfish
February 16, 2025
Tweet
Share
More Decks by mopinfish
See All by mopinfish
OSMnx Galleryの紹介
mopinfish
0
120
HelloCyclingステーションの需要をQGISで可視化する
mopinfish
0
83
OSMnxによる街路構造の分析と可視化
mopinfish
0
220
RailsプロジェクトにVuex-ORMを導入した話
mopinfish
0
380
Featured
See All Featured
The Cult of Friendly URLs
andyhume
78
6.4k
Fireside Chat
paigeccino
37
3.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
228
22k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
What's in a price? How to price your products and services
michaelherold
245
12k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
34
2.3k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Visualization
eitanlees
146
16k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Transcript
オープンデータと Djangoの 連携で作る地図アプリ Georepublic Japan 大塚 昇 1 2025/02/15 FOSS4G Hokkaido
LT
自己紹介 • 名前 ◦ 大塚昇 • 経歴 ◦ 2010- 不動産関連サービスのWebエンジニア
◦ 2020- 現職にて行政向けアプリのPM ◦ 2020- 社会人博士課程在籍 • 趣味 ◦ 登山、旅行 2
会社紹介 • 合同会社Georepublic Japan • 位置情報系テクノロジー • タスク管理ツールLOBSTA 3
本日の内容 1. 都知事杯オープンデータハッカソンで地図アプリを作成 2. Djangoのogrinspectを使ってオープンデータをPostgresqlに 取り込み 3. Djangorestframeworkで地図アプリ化 4
都知事杯オープンデータ・ハッカソンとは • 東京都が主催する行政課 題解決のためのイベント • 東京都オープンデータカタ ログサイトに掲載されてい るオープンデータを活用し て、行政課題の解決に向 けた提案を行う
5
作成したアプリ「 OPEN3Dマップ」 • 江東区の文化財をマッピ ング • 文化財に対してAIによって 生成された3Dオブジェクト を登録・閲覧することがで きる
6
利用データ:江東区文化財一覧 7
QGISでシェープファイルに変換 8
Djangoのogrinspectとは • GeoDjangoに含まれる管 理コマンド • ShapefileやGeoJSONな どの地理空間データソー スを解析し、Djangoモデ ルとマッピング辞書を自動 生成する
9 python manage.py ogrinspect <データソース > <モデル 名> [オプション ]
ogrinspectの実行 10 # This is an auto-generated Django model module
created by ogrinspect. from django.contrib.gis.db import models class cultural_properties(models.Model): id = models.FloatField() ...(中略) geom = models.PointField(srid=6668) # Auto-generated `LayerMapping` dictionary for cultural_properties model cultural_properties_mapping = { 'id': 'id', ...(中略) 'geom': 'POINT', } python manage.py ogrinspect \ open3d_map/data/cultural_properties.shp \ cultural_properties --srid=6668 --mapping
Model classとして保存 11 class CulturalProperty(models.Model): name = models.CharField(max_length=254) name_kana =
models.CharField(max_length=254, null=True) name_gener = models.CharField(max_length=254, null=True, blank=True) name_en = models.CharField(max_length=254, null=True) category = models.CharField(max_length=254) type = models.CharField(max_length=254) place_name = models.CharField(max_length=254, null=True, blank=True) address = models.CharField(max_length=254) latitude = models.FloatField(null=True) longitude = models.FloatField(null=True) url = models.CharField(max_length=254, null=True) note = models.CharField(max_length=4094, null=True) geom = models.PointField(srid=6668)
loaderの作成 12 import os from django.contrib.gis.utils import LayerMapping, LayerMapError from
.models import CulturalProperty class CulturalPropertiesLoader: # 1. mapping定義 mapping = { 'name': 'name', ...(中略) 'geom': 'POINT', } # 2. 読み込むファイルを指定し、レイヤーマッピングに変換 path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'data', 'cultural_properties.shp')) lm = LayerMapping(CulturalProperty, cls.path, cls.mapping, transform=False, encoding='utf-8') # 3. ロード処理を実行 lm.save(strict=False, verbose=True)
loaderの実行 13 python manage.py shell >>> from open3d_map.loaders import CulturalPropertiesLoader
>>> CulturalPropertiesLoader.run() ...(中略) Saved: CulturalProperty object (2016) Saved: CulturalProperty object (2017) Saved: CulturalProperty object (2018) Saved: CulturalProperty object (2019) Saved: CulturalProperty object (2020) Saved: CulturalProperty object (2021) Saved: CulturalProperty object (2022)
読み込んだデータの確認 14
APIコンソールで確認 15
地図画面でのマッピング 16
まとめ • Djangoのogrinspectコマンドを使うことで、地理空間データを 簡単に取り込める • 取り込んだデータを返却するAPIをDjangoRestFrameworkで 作成し、地図アプリケーションを効率的に開発できる 17
ご清聴ありがとうございました 18
19