GeoDjangoについて
はじめに
この記事は、Django Advent Calendar 2018 12/25日の記事として記述します。
2018年はGeoDjangoを紹介することが多かったこともあり、Geo系についていろいろ紹介をしたいと思います。
2018年で私が紹介したイベント
イベントのまとめとして、GitBookに「GeoDjangoではじめる地理空間情報」を公開しているので参考にしていただければと思います。
GeoDjangoとは
GeoDjangoはDjangoに標準で含まれている地理空間データ用のモジュールです。GeoDjangoモジュールを使うことで地理情報システム (GIS) のWebアプリケーションの作成が可能になります。
GeoDjangoの主な機能としては下記があります。
・Modelに地理空間情報フィールド を追加 (GeometryField, PointField …)
・ORMで空間演算に対応 (rast__contains (ST_Contains) ….)
・Djanngoの管理画面で地理地理情報フィールドの編集 (GeoModelAdmin …)
・地理空間情報APIを追加 (GeolocationAPI …)
・Manageコマンド (GeoDjango Management Commands)
すごく雑にいうと、DjangoでGIS(地理空間情報)を使った地図やGISデータの管理、検索が出来るようになります。
地理空間データJavaScriptライブラリ
地理空間情報を使う場合、フロントサイドではJavaScriptライブラリを利用する事が多いです。これらのライブラリはそれぞれ特徴があり詳細の説明は別途したいと思いますが、最近では、2.5Dや3D表現が流行りでもあります。
・turf.js <http://turfjs.org/>
・mapbox.js <http://mapbox.com/mapbox.js/>
・leaflet.js <https://leafletjs.com/>
・OpenLayers <http://openlayers.org/>
・deck.gl <https://deck.gl/>
・Cesium <https://cesiumjs.org/>
例外として、Maps of Unity(Unity mapbox) <https://www.mapbox.com/unity/>というのもあります。
また最近は、日本製のMapray(マップレイ)<https://mapray.com/>というものも出てきました。
GeoDjango/Djangoの役割
GeoDjango/Djangoでは可視化等の表現はフロントサイドに任せてバックエンドを担うことになると思います。
PythonではGIS系の拡張をしているライブラリが多いのでそれらを利用すると空間情報処理をすることが出来るのでGeo系も触ってみていただければと思います。
例)GIS拡張例
・django-rest-framework-gis (Django REST FrameworkのGIS拡張)
・GeoPandas (PandasのGIS拡張)
DRFはデータとしてGeoフィールドが使えるようになるのと、GeoPandasでは空間演算が高速に演算することができます。
Qiitaのこの記事が参考になるかと思います。
最後に
スイスのバーゼル (Basel)では、Geo系のPythonのカンファレンスも開催されています。
GeoPython 2019
去年の実績ではこんな事がテーマで話をさてているそうです。
・Python in General
・GIS/Mapping
・Geography / Geophysics / Geodesy / Geomatics
・Earth Sciences / Environmental Sciences
・Geovisualization
・Smart Cities
・Spatial Data / Geodata
・Geospatial Webservices
・Big Data
・ Data Processing
・(Spatial) Databases
・Computer Vision
・Remote Sensing
・Image Processing
・Machine Learning / Deep Learning
・Robotics
来年は少しずつですが、ここで紹介したモジュール・ライブラリの内容の紹介をしていきたいなと思ってます。
それでは。