GeoDjango フォーム API

GeoDjango はジオローカライズされたデータを地図上に視覚的に表示・編集するために、いくつかの特殊なフォームフィールドとウィジェットを提供します。デフォルトでは、 NASA が提供する WMS レイヤーをベースとした OpenLayers を利用した地図を使います。

フィールドの引数

通常の フォームフィールドの引数 に加えて、 GeoDjango のフォームフィールドは以下のオプションの引数を取ります。

srid

Field.srid

これはフィールドの値を変換するSRIDコードです。例えば、マップウィジェットのSRIDがアプリケーションやデータベースで一般的に使われるSRIDと異なる場合、フィールドは入力値を自動的にそのSRIDに変換します。

geom_type

Field.geom_type

通常、その属性を設定または変更する必要はありません。この属性はフィールドクラスに応じて設定されるべきです。これはOpenGIS標準のジオメトリ名に一致します。

フォームフィールド クラス

GeometryField

class GeometryField[ソース]

PointField

class PointField[ソース]

LineStringField

class LineStringField[ソース]

PolygonField

class PolygonField[ソース]

MultiPointField

class MultiPointField[ソース]

MultiLineStringField

class MultiLineStringField[ソース]

MultiPolygonField

class MultiPolygonField[ソース]

GeometryCollectionField

class GeometryCollectionField[ソース]

フォームウィジェット

GeoDjango のフォームウィジェットを使うと、ビジュアルマップ上に地理情報を表示したり編集したりできます。現在利用可能なウィジェットはどれも 3D ジオメトリをサポートしていないので、 ジオメトリフィールドは Textarea ウィジェットを使ってフォールバックします。

ウィジェットの属性

GeoDjango ウィジェットはテンプレートベースなので、その属性のほとんどは他の Django ウィジェットの属性と異なります。

BaseGeometryWidget.geom_type

OpenGIS ジオメトリタイプ。通常、フォームフィールドによって設定されます。

BaseGeometryWidget.map_srid

地図で使用されるSRIDコード (デフォルトは4326)。

BaseGeometryWidget.display_raw

主にデバッグのために、現在のジオメトリのシリアライズされた表現を示すテキストエリア入力を表示するかどうかを指定するブール値 (デフォルトは False).

BaseGeometryWidget.supports_3d

ウィジェットが3Dデータの編集をサポートしているかどうかを示します (デフォルトは False です) 。

BaseGeometryWidget.template_name

地図ウィジェットのレンダリングに使用されるテンプレート。

ウィジェットの属性は、他のDjangoウィジェットと同じように渡すことができます。例えば、次のようにします:

from django.contrib.gis import forms


class MyGeoForm(forms.Form):
    point = forms.PointField(widget=forms.OSMWidget(attrs={"display_raw": True}))

Widget クラス

BaseGeometryWidget

class BaseGeometryWidget[ソース]

これは、サブクラスが必要とするロジックを含む抽象ベースウィジェットです。このウィジェットを直接ジオメトリフィールドに使うことはできません。GeoDjango ウィジェットのレンダリングは template_name クラス属性で識別されるテンプレートに基づいていることに注意してください。

OpenLayersWidget

class OpenLayersWidget[ソース]

これはすべての GeoDjango フォームフィールドで使用されるデフォルトウィジェットです。template_namegis/openlayers.html です。

OpenLayersWidgetOSMWidgetcdn.jsdelivr.net のコンテンツ配信ネットワークでホストされている ol.js ファイルを使用します。これらのウィジェットをサブクラス化することで、内部の Media クラスの js プロパティに ol.js ファイルの独自のバージョンを指定できます (定数として定義されたアセット を参照) 。

OSMWidget

class OSMWidget[ソース]

このウィジェットは地理情報オブジェクトを表示するためにOpenStreetMapベースレイヤーを使用します。属性は以下の通りです:

template_name

gis/openlayers-osm.html

default_lat
default_lon

デフォルトの中心緯度と経度はそれぞれ 475 で、フランス東部の位置です。

default_zoom

デフォルトの地図の縮尺は 12 です。

OpenLayersWidget の JavaScript ファイルのホスティングに関する注意はここにも適用されます。マップタイルへの https アクセスに関する FAQ answer も参照してください。

Back to Top