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
GeoDjango ORMと地理空間データの世界
Search
abe ryohei
October 16, 2022
Programming
0
3k
GeoDjango ORMと地理空間データの世界
PyCon JP 2022 発表資料
https://2022.pycon.jp/timetable?id=J9XNYA
abe ryohei
October 16, 2022
Tweet
Share
Other Decks in Programming
See All in Programming
php-conference-japan-2024
tasuku43
0
410
テストコードのガイドライン 〜作成から運用まで〜
riku929hr
6
1.3k
iOS開発におけるCopilot For XcodeとCode Completion / copilot for xcode
fuyan777
1
1.2k
React 19でお手軽にCSS-in-JSを自作する
yukukotani
5
530
return文におけるstd::moveについて
onihusube
1
1.4k
ISUCON14感想戦で85万点まで頑張ってみた
ponyo877
1
200
技術的負債と向き合うカイゼン活動を1年続けて分かった "持続可能" なプロダクト開発
yuichiro_serita
0
260
Package Traits
ikesyo
1
130
20年もののレガシープロダクトに 0からPHPStanを入れるまで / phpcon2024
hirobe1999
0
970
PHPカンファレンス 2024|共創を加速するための若手の技術挑戦
weddingpark
0
110
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
3
540
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
270
Featured
See All Featured
Scaling GitHub
holman
459
140k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Building an army of robots
kneath
302
44k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Music & Morning Musume
bryan
46
6.3k
Speed Design
sergeychernyshev
25
720
Docker and Python
trallard
43
3.2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
230
52k
Transcript
©OpenStreetMap contributors 2022.10.14 - PyCon2022 GeoDjango ORMと地理空間データの世界
©Project PLATEAU / MLIT Japan 阿部 涼平 自己紹介 ABE Ryohei
@selfsryo Backend engineer バックエンド担当 2021年2月からMIERUNE 北海道出身 https://selfs-ryo.com/
© 地理院地図 全国最新写真(シームレス) MIERUNEはこんな会社です MIERUNEは位置情報に関する 豊富な技術や実績を持つ ソリューションカンパニーです み え る ね
© 地理院地図 全国最新写真(シームレス) 位置情報は身近なところで使われています インフラ 防災 交通 ナビ ゲーム 環境
マーケティ ング 位置情報 データ (GIS)
©Project PLATEAU / MLIT Japan 事業紹介 •商用ソフトより使いやすく 多機能 •プラグイン開発や講習会 技術コンサルを提供中
QGIS 世界的なOSS-GISソフトウェア
©Project PLATEAU / MLIT Japan 事業紹介 •自由で美しいウェブ地図 •低廉なコストで導入可能 •カスタマイズや開発も可能 MapTiler
Google MapsやMapboxから 乗り換えませんか
©Project PLATEAU / MLIT Japan 事業紹介 •組織内に散在している データを一括で共有 •最新データがすぐわかる •ソフト無しでも閲覧可能
MIERUNE BASE GISデータ共有サービス
© 地理院地図 全国最新写真(シームレス) Python MIERUNEのソリューション QGIS DEM 点群 3D MapTiler
PLATEAU オープンソース 位置情報 可視化 標高断面図 住所検索 ルート検索 気象データ GTFS LiDAR FOSS4G OSGeo OpenStreetMap MapLible deck.gl Cesium Mapbox OpenLayers Turf.js Geoserver OpenMapTiles GeoDjango Amazon Location Service AWS Leaflet
©OpenStreetMap contributors 概要 • この題材を選んだ理由やきっかけ ◦ GISへのニーズの高まりを受けて、PyConで以下を紹介 ▪ GISデータをDjangoで扱うことができること ▪
DjangoのORMを用いてGISデータの演算ができること • このセッションで話すこと ◦ GeoDjangoについて ◦ GeoDjangoが持つORMについて
©OpenStreetMap contributors 01 GISとDjangoについて 02 PostGISと空間関数 03 GeoDjangoのセットアップ 04 ORM実行 / 表示 05 REST API紹介
06 まとめ 目次
©OpenStreetMap contributors 01 GISとDjangoについて
©Project PLATEAU / MLIT Japan • 言わずと知れた Python製 Webフレームワーク •
色々な機能が備わっている GISとDjangoについて Djangoとは
©Project PLATEAU / MLIT Japan GISとDjangoについて Djangoとは • 言わずと知れた Python製
Webフレームワーク • 色々な機能が備わっている GISデータを扱える・・?
©Project PLATEAU / MLIT Japan GISとDjangoについて GeoDjangoとは • Djangoが持つ GIS
Webフレームワーク用ライブラリ • サードパーティではなく公式 https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/
©Project PLATEAU / MLIT Japan GISとDjangoについて • 公式(日本語ページ)の紹介文によると・・・ GeoDjango は世界規模の地理情報
Web フレームワークを目指していま す。 GeoDjango の目的は、地理情報システム (GIS) のWeb アプリケー ションの開発をより簡単にし、空間データ (spatially enabled data) を活用 することにあります。 GeoDjangoとは 出典 https://docs.djangoproject.com/ja/4.1/#geographic-framework
©Project PLATEAU / MLIT Japan GISとDjangoについて • 直訳すると地理情報システム (Geographic Information
System) • 位置情報データを扱う技術 GISとは
©Project PLATEAU / MLIT Japan GISとDjangoについて • ベクタデータ ◦ ポイント(点)
◦ ライン(線) ◦ ポリゴン(面) • ラスタデータ(画像データ) GISで扱うデータ ポリゴン ポイント ライン ラスタ
©Project PLATEAU / MLIT Japan GISとDjangoについて • ベクタデータ ◦ ポイント(点)
◦ ライン(線) ◦ ポリゴン(面) • ラスタデータ(画像データ) GISで扱うデータ ポリゴン ポイント ライン ラスタ
©Project PLATEAU / MLIT Japan GISとDjangoについて GeoDjangoのフィールド • モデルに以下のようなフィールドが追加される(ジオメトリフィールド) ◦
PointField ◦ LineStringField ◦ PolygonField etc. ※ジオメトリフィールドは、型(ポイント?ポリゴン?etc.)と位置情報と座標系を持つ
©Project PLATEAU / MLIT Japan GISとDjangoについて GeoDjangoのDB https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/install/#spatial-database • 対応しているDB
◦ PostgreSQL(PostGIS) ◦ MySQL ◦ Oracle ◦ SQLite(SpatiaLite) GeoDjangoの公式で推奨
©OpenStreetMap contributors 02 PostGISと空間関数
©Project PLATEAU / MLIT Japan PostGISとは • PostgreSQLの拡張モジュール ◦ GISデータを扱うためのモジュール
◦ オープンソース ◦ ジオメトリ型が追加 ◦ 空間演算用の関数が追加(空間関数) PostGISと空間関数 http://www.refractions.net/products/postgis/ http://www.postgis.net/
©Project PLATEAU / MLIT Japan PostGISの空間関数 • PostGISで地理空間データの演算(空間演算)を行う関数 • 関数名は ST_〇〇 (〇〇は動詞などが入る)
◦ ST_Contains ◦ ST_Intersects ◦ ST_Union PostGISと空間関数
©Project PLATEAU / MLIT Japan 空間関数の例 • ST_Contains(geomA, geomB) ◦
BがAに含まれる場合True PostGISと空間関数 A B True B A False https://aginfo.cgk.affrc.go.jp/docs/pgisman/3.3.0/postgis-ja.html#ST_Contains
©Project PLATEAU / MLIT Japan 空間関数の例 PostGISと空間関数 A B True
B A False • ST_Intersects(geomA, geomB) ◦ AとBに共通部分が存在する場合True https://aginfo.cgk.affrc.go.jp/docs/pgisman/3.3.0/postgis-ja.html#ST_Intersects
©Project PLATEAU / MLIT Japan • ST_Union(geomA, geomB) ◦ AとBを結合
空間関数の例 PostGISと空間関数 A B https://aginfo.cgk.affrc.go.jp/docs/pgisman/3.3.0/postgis-ja.html#ST_Union
©Project PLATEAU / MLIT Japan • 空間演算用ORM ◦ lookup ▪
contains, intersects, etc. ◦ DB関数 ▪ Centroid, Intersection, etc. PostGISと空間関数 GeoDjangoで空間関数 https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/geoquerysets/ https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/functions/
©Project PLATEAU / MLIT Japan • オブジェクト関係マッピング(Object-Relational Mapping) ◦ オブジェクト(プログラミング言語)とRDBをマッピング
◦ SQLを直接叩くことなく、オブジェクトのメソッドでDB操作 ◦ SQLインジェクション対策 ORMとは SQL Django ORM PostGISと空間関数
©Project PLATEAU / MLIT Japan • GeoDjangoは空間演算用のORMを持っている ◦ SQLを意識せずに空間関数を実行できる ◦
地理空間用のDBで実行可能 GeoDjangoとORM • 実データを用いてORMを実行し、GeoDjangoの持つORMを紹介 PostGISと空間関数
©OpenStreetMap contributors 03 GeoDjangoのセットアップ
©Project PLATEAU / MLIT Japan • Dockerを利用 ◦ Django ◦
PostgreSQL + PostGIS ◦ その他必要なGISライブラリ GeoDjangoのセットアップ 環境構築 フロントエンド (Django Template) • リポジトリ https://github.com/selfsryo/GeoDjangoORMDemo API
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ データの可視化 • 地図ライブラリを使用 ◦
leaflet ▪ JSライブラリ ▪ ブラウザで地図表示 ▪ オープンソース • leafletでDjangoTemplateから表示 https://leafletjs.com/
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ 設定ファイル • INSTALLED_APPSにdjango.contrib.gisを追加
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ • DATABASEのENGINEをdjango.contrib.gis.db.backends.postgisに変更 設定ファイル
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ 出典:「位置参照情報ダウンロードサービス」(国土交通省)(https://nlftp.mlit.go.jp/ksj/) • 国土数値情報 「国土数値情報」は、国土形成計画、国土利用計画の策定等の国土政策の推進に
資するために、地形、土地利用、公共施設などの国土に関する基礎的な情報をGIS データとして整備したものです。そのうち公開に差し支えないものについて、「地理空 間情報活用推進基本法」等を踏まえて無償で提供しています。 使用データ(国土数値情報)
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ 使用データ(国土数値情報) 出典:「位置参照情報ダウンロードサービス 行政区域データ」(国土交通省)(https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N03-v3_1.html) 「位置参照情報ダウンロードサービス
空港データ」(国土交通省)(https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-C28-v3_0.html) • 行政区域データ ◦ 北海道 ◦ ポリゴンデータ • 空港データ ◦ 全国分 ◦ ポリゴンデータ
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ データの取り込み • Djangoのデータ取り込み ◦
データの属性を確認 ◦ models.pyを定義 ▪ 可能ならばinspectdb等 ◦ データ(fixture)を用意 ◦ 取り込みコマンド実行 ▪ loaddata • GeoDjangoのデータ取り込み ◦ データ(GISデータ)を用意 ◦ データの属性を確認 ◦ models.pyを定義 ◦ 取り込み実行 ※順番は前後
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ データの取り込み • Djangoのデータ取り込み ◦
データ構造を確認 ◦ models.pyを定義 ▪ 可能ならばinspectdb等 ◦ データ(fixture)を用意 ◦ 取り込みコマンド実行 ▪ loaddata • GeoDjangoのデータ取り込み ◦ データ(GISデータ)を用意 ◦ データの属性を確認 ◦ models.pyを定義 ◦ 取り込み実行 ※順番は前後
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ データの取り込み • Djangoのデータ取り込み ◦
データ構造を確認 ◦ models.pyを定義 ▪ 可能ならばinspectdb等 ◦ データ(fixture)を用意 ◦ 取り込みコマンド実行 ▪ loaddata • GeoDjangoのデータ取り込み ◦ データ(GISデータ)を用意 ◦ データの属性を確認 ◦ models.pyを定義 ◦ 取り込み実行 ※順番は前後
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ データの属性を確認 • 国土数値情報のページを確認 ◦
属性情報が記載 ◦ 名称、説明、型 出典:「位置参照情報ダウンロードサービス 行政区域データ」(国土交通省)(https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N03-v3_1.html)
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ データの属性を確認 • ogrinspect ◦
管理コマンド ◦ 以下を出力 ▪ データの構造 ▪ 実データとのマッピング https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/commands/#django-admin-ogrinspect
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ データの取り込み • Djangoのデータ取り込み ◦
データ構造を確認 ◦ models.pyを定義 ▪ 可能ならばinspectdb等 ◦ データ(fixture)を用意 ◦ 取り込みコマンド実行 ▪ loaddata • GeoDjangoのデータ取り込み ◦ データ(GISデータ)を用意 ◦ データの属性を確認 ◦ models.pyを定義 ◦ 取り込み実行 ※順番は前後
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ データの取り込み • LayerMapping ◦
ベクタデータをマップ ◦ 座標系の変換も可能(省略) ◦ saveメソッドで取り込み https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/layermapping/
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ 行政区域モデル • モデル名 ◦
AdminiBoundary • 今回は政令都市名または 市町村名を持つデータのみ取得
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ 空港データモデル https://leafletjs.com/ • モデル名
◦ Airport • 今回は必要なフィールドは 名称(c28_005)と ジオメトリ だけ
©Project PLATEAU / MLIT Japan • GeoJSON形式でのシリアライザがデフォルトで用意されている ◦ django.core.serializers.serialize ◦
第一引数に”geojson”と入力 ※GeoJSONとは ◦ JSON形式 ◦ type, geometory, propertiesを持つ ◦ APIに利用 GeoDjangoのセットアップ シリアライザ https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/serializers/ https://geojson.org/
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ レスポンス • 新千歳空港のポリゴンを取得
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ レスポンス • 新千歳空港のポリゴンを取得 ◦
GeoJSON形式でレスポンス
©Project PLATEAU / MLIT Japan GeoDjangoのセットアップ レスポンス • フロントエンドから確認
©OpenStreetMap contributors 04 ORM実行 / 表示
©Project PLATEAU / MLIT Japan • 空間演算用ORM ◦ lookup ▪
contains, intersects, etc. ◦ DB関数 ▪ Centroid, Intersection, etc. PostGISと空間関数 GeoDjangoで空間関数(再掲) https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/geoquerysets/ https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/functions/
©Project PLATEAU / MLIT Japan intersects • フロントエンドから確認 ◦ 苫小牧市
◦ 千歳市 ORM実行 / 表示
©Project PLATEAU / MLIT Japan • 空間演算用ORM ◦ lookup ▪
contains, intersects, etc. ◦ DB関数 ▪ Centroid, Intersection, etc. PostGISと空間関数 GeoDjangoで空間関数(再掲) https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/geoquerysets/ https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/functions/
©Project PLATEAU / MLIT Japan • DjangoのQuerySetを様々な条件で取得できる • 一般的に以下のように書く ◦
<QuerySet>.objects.filter(フィールド名__lookup=値) • 例:contains(名称に”田”の文字を含む空港データを取得) lookupとは https://docs.djangoproject.com/ja/4.1/ref/models/querysets/#field-lookups ORM実行 / 表示
©Project PLATEAU / MLIT Japan • 共通部分が存在する場合TRUE • 新千歳空港と共通部分が存在する行政界ポリゴンのみ取得 intersects
https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/geoquerysets/#intersects ORM実行 / 表示
©Project PLATEAU / MLIT Japan • 内部のみに存在する場合TRUE • 女満別空港を内部に含む行政界ポリゴンのみ取得 contains
https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/geoquerysets/#contains ORM実行 / 表示 ※新千歳空港は複数のポリゴンにまたがるためFALSEとなる
©Project PLATEAU / MLIT Japan • フロントエンドから確認 ◦ 大空町 contains
ORM実行 / 表示
©Project PLATEAU / MLIT Japan • containsと引数が逆になる • 北海道のみに含まれる空港ポリゴンのみ取得 within
https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/geoquerysets/#within ORM実行 / 表示
©Project PLATEAU / MLIT Japan • フロントエンドから確認 within ORM実行 /
表示
©Project PLATEAU / MLIT Japan • 共通部分が存在し、かつ一方がもう一方に含まれていない場合TRUE • 旭川空港と共通部分が存在し、かつ内部に含んでいない行政界ポリゴンのみ取得 overlaps
https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/geoquerysets/#overlaps ORM実行 / 表示
©Project PLATEAU / MLIT Japan • フロントエンドから確認 ◦ 旭川市 ◦
東神楽町 overlaps ORM実行 / 表示
©Project PLATEAU / MLIT Japan • 共通部分が存在しない場合TRUE • 稚内空港と共通部分が存在しない行政界ポリゴンのみ取得 disjoint
https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/geoquerysets/#disjoint ORM実行 / 表示
©Project PLATEAU / MLIT Japan • フロントエンドから確認 disjoint ORM実行 /
表示
©Project PLATEAU / MLIT Japan • 左または右に存在する場合のみTRUE • 帯広空港の左に存在する行政界ポリゴンのみ取得 https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/geoquerysets/#right
https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/geoquerysets/#left ORM実行 / 表示 left / right
©Project PLATEAU / MLIT Japan • left left / right
• right ORM実行 / 表示
©Project PLATEAU / MLIT Japan • 上または下に存在、またはoverlapsしている場合のみTRUE • 釧路空港の上に存在、またはoverlapsする行政界ポリゴンのみ取得 https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/geoquerysets/#overlaps-above
https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/geoquerysets/#overlaps-below ORM実行 / 表示 overlaps_above / overlaps_below
©Project PLATEAU / MLIT Japan overlaps_above / overlaps_below • overlaps_above
• overlaps_below ORM実行 / 表示
©Project PLATEAU / MLIT Japan • 指定した距離より大きい、または小さい場所に存在する場合のみTRUE • distance_gte、distance_lteでそれぞれ以上、以下になる(=も含む) •
中標津空港から100kmより大きい距離にある行政界ポリゴンのみ取得 https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/geoquerysets/#distance-gt https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/geoquerysets/#distance-lt ORM実行 / 表示 distance_gt / distance_lt
©Project PLATEAU / MLIT Japan • distance_gt • distance_lt ORM実行
/ 表示 distance_gt / distance_lt
©Project PLATEAU / MLIT Japan • 空間演算用ORM ◦ lookup ▪
contains, intersects, etc. ◦ DB関数 ▪ Centroid, Intersection, etc. PostGISと空間関数 GeoDjangoで空間関数(再掲) https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/geoquerysets/ https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/functions/
©Project PLATEAU / MLIT Japan • 集計関数(annotate、aggregate)、フィルタの中で利用 • GeoDjangoでは以下が追加 データベース関数とは
https://docs.djangoproject.com/en/4.1/ref/contrib/gis/functions/ ORM実行 / 表示
©Project PLATEAU / MLIT Japan • ジオメトリフィールドのGeoJSON表現を取得 • 完全なGeoJSONではなく、ジオメトリ部分のみ •
函館空港のAsGeoJSON ORM実行 / 表示 AsGeoJSON https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/functions/#asgeojson
©Project PLATEAU / MLIT Japan • 函館空港のジオメトリからGeoJSONを作成 ORM実行 / 表示
AsGeoJSON https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/functions/#asgeojson
©Project PLATEAU / MLIT Japan ORM実行 / 表示 AsGeoJSON •
フロントエンドから確認
©Project PLATEAU / MLIT Japan • 中心点のポイントのジオメトリを取得 • 紋別空港の中心点のポイントを取得 https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/functions/#centroid
ORM実行 / 表示 Centroid
©Project PLATEAU / MLIT Japan ORM実行 / 表示 • フロントエンドから確認
Centroid
©Project PLATEAU / MLIT Japan • 2つのジオメトリの距離を取得 • 新千歳空港と旭川空港の距離を取得 https://docs.djangoproject.com/ja/4.1/ref/contrib/gis/functions/#distance
ORM実行 / 表示 Distance
©OpenStreetMap contributors 05 REST API紹介
©Project PLATEAU / MLIT Japan • Django REST framework ◦
DjangoでREST API実行 ◦ サードパーティ製 ◦ ブラウザ操作可能 REST API紹介 DjangoでのREST API https://www.django-rest-framework.org/
©Project PLATEAU / MLIT Japan • django-rest-framework-gis ◦ DRFのGIS拡張ライブラリ ◦
GIS処理の機能が追加 GeoDjangoでのREST API https://github.com/openwisp/django-rest-framework-gis REST API紹介
©Project PLATEAU / MLIT Japan 機能 • URLで様々なフィルタリングが可能(distance、bbox等) • ページネーションがGeoJSON仕様
• レスポンスにbboxを含められる etc. REST API紹介
©Project PLATEAU / MLIT Japan セットアップ • INSTALLED_APPSに以下追加 ◦ rest_framework
◦ rest_framework_gis ◦ django_filters REST API紹介
©Project PLATEAU / MLIT Japan シリアライザ • geo_fieldにジオメトリのフィールド名を指定 • auto_bbox=Trueとすることでレスポンスにbboxが追加
REST API紹介
©Project PLATEAU / MLIT Japan ビュー • distanceとbboxでのフィルタを追加 REST API紹介
©Project PLATEAU / MLIT Japan • 対象のpointからの距離でフィルタ ◦ URLに以下を追加してみる (新千歳空港のpoint)
?dist=1&point=141.683497,42.784556 • 新千歳空港と札幌飛行場が返ってくる • bboxが含まれている レスポンス REST API紹介
©Project PLATEAU / MLIT Japan • django-debug-toolbarで実行されているSQLを確認 ◦ ST_DWithinが実行されている レスポンス
REST API紹介
©OpenStreetMap contributors おまけ デモアプリケーション紹介
©Project PLATEAU / MLIT Japan • フロントエンドとの疎通アプリケーション https://github.com/selfsryo/GeoDjangoORMDemo アプリケーション紹介 デモアプリ
©OpenStreetMap contributors 06 まとめ
© 地理院地図 全国最新写真(シームレス) 以下を紹介 •GISデータについて •GeoDjangoの環境構築、データ取り込み •GeoDjangoのORMで空間演算 •GeoDjangoのREST API •簡易デモアプリケーション
まとめ
© 地理院地図 全国最新写真(シームレス) 仲間を募集中 We are hiring! MIERUNE 検索 未来に挑戦する仲間を
募集しています