PyCon JP 2022

ロケール設定が保存されました。pretalxでは英語のサポートが充実していると思っていますが、問題やエラーが発生した場合は、ぜひご連絡ください。

GeoDjango ORMと地理空間データの世界
2022/10/14 , pyconjp_1
言語: 日本語

Webフレームワークとして世界中で使われているDjangoですが、そのDjangoには標準でGeoDjangoというモジュールが含まれており、サーバーサイドで地理空間データを扱う際に広く利用されています(公式ドキュメント)。GeoDjangoには特有のORMが用意されており、実際にSQLを書くことなく地理空間データの処理(空間演算)を行うことができます。しかし、現在GeoDjangoのORMに関するまとまった情報は少なく、GeoDjangoを利用していてもそれらの機能を生かしきれてないパターンもあるかと思います。そこで本セッションでは、GeoDjangoが持つ便利なORMの紹介、および実装プロセスを簡易な地図アプリケーションでのデータ可視化を交えつつお伝えします。


GeoDjangoは、Djangoの地理空間用モジュールで、Django公式ドキュメントのトップページには以下のように紹介されています。

GeoDjango は世界規模の地理情報 Web フレームワークを目指しています。 GeoDjango の目的は、地理情報システム (GIS) のWeb アプリケーションの開発をより簡単にし、空間データ (spatially enabled data) を活用することにあります。

この一文が示すとおり、GIS的な処理をサーバーサイドで行う際、OSSの中では第一にGeoDjangoという選択肢が上がるといっても過言ではありません。また、django-rest-framework-gisというライブラリ(DjangoのREST API用ライブラリDjango REST frameworkの拡張)を導入することで、簡単にAPIサーバーとして地理空間データの処理・配信を行うことが可能になります。GeoDjangoおよびこれらの拡張ライブラリは、GISの界隈で広く使われているスタックとなっています。

そんなGeoDjangoですが、地理空間データを扱う上で便利な機能が多く実装されており、中でもデータ処理に関しては、GeoDjango特有のORMを利用することで、開発者はGeoDjangoを介して安全で手軽に空間演算を行うことができます。

本セッションでは、GeoDjangoの持つORMに焦点を当てつつ、GeoDjangoの紹介からORMを用いたデータ処理、ならびにAPI配信についてをお話しします。Djangoは知っているけどGeoDjangoは触ったことのない方、触ったことはあるけれどGeoDjango ORMに馴染みのない方、単純にGISに興味のある方にとって、GeoDjangoおよびそれらの持つORMの素晴らしさをお伝えできるようなセッションにしたいと考えています。

予定稿

  • 自己紹介 (1分)
  • 本セッションの概要説明 (1分)
  • GISについて(2分)
    • 概要(1分)
    • 身近で使われているGISの技術(1分)
  • Django / GeoDjangoの概要説明(2分)
  • Postgres / PostGISの概要説明(1分)
  • GeoDjangoのセットアップ(3分)
    • 環境構築(1分)
    • インストール(1分)
    • セットアップ(1分)
  • データの説明(3分)
    • ラスタデータ(1分)
    • ベクタデータ(1分)
    • 使用するデータの説明(1分)
  • 空間参照系の説明(1分)
  • データ取り込み(2分)
  • ORMの紹介、実行(6分)
    • GeoDjangoの持つlookups(3分)
    • データベース関数(3分)
  • REST APIの導入(3分)
    • django-rest-framework-gisの説明(1分)
    • セットアップ(1分)
    • API操作(1分)
  • フロントエンドアプリケーション紹介(1分)
  • フロントエンドとのREST API通信デモ(2分)
  • まとめ(2分)

このトークで話さないこと

  • 一般的なDjangoおよびDjango REST frameworkの機能
  • GeoDjangoのデータ関連以外の機能詳細
  • django-rest-framework-gisの機能詳細
  • GISの歴史、詳細
  • フロントエンド実装

エンジニア2年目です。株式会社MIERUNEでバックエンドエンジニアをやっています。