GeoDjango フォーム APILink to this heading

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

フィールドの引数Link to this heading

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

sridLink to this heading

Field.sridLink to this definition

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

geom_typeLink to this heading

Field.geom_typeLink to this definition

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

フォームフィールド クラスLink to this heading

GeometryFieldLink to this heading

class GeometryFieldLink to this definition

PointFieldLink to this heading

class PointFieldLink to this definition

LineStringFieldLink to this heading

class LineStringFieldLink to this definition

PolygonFieldLink to this heading

class PolygonFieldLink to this definition

MultiPointFieldLink to this heading

class MultiPointFieldLink to this definition

MultiLineStringFieldLink to this heading

class MultiLineStringFieldLink to this definition

MultiPolygonFieldLink to this heading

class MultiPolygonFieldLink to this definition

GeometryCollectionFieldLink to this heading

class GeometryCollectionFieldLink to this definition

フォームウィジェットLink to this heading

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

ウィジェットの属性Link to this heading

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

BaseGeometryWidget.geom_typeLink to this definition

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

BaseGeometryWidget.map_heightLink to this definition
BaseGeometryWidget.map_widthLink to this definition

ウィジェットマップの高さと幅 (デフォルトは400x600)。

BaseGeometryWidget.map_sridLink to this definition

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

BaseGeometryWidget.display_rawLink to this definition

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

BaseGeometryWidget.supports_3dLink to this definition

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

BaseGeometryWidget.template_nameLink to this definition

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

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

Code
from django.contrib.gis import forms


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

Widget クラスLink to this heading

BaseGeometryWidget

class BaseGeometryWidgetLink to this definition

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

OpenLayersWidget

class OpenLayersWidgetLink to this definition

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

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

OSMWidget

class OSMWidgetLink to this definition

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

template_nameLink to this definition

gis/openlayers-osm.html

default_latLink to this definition
default_lonLink to this definition

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

default_zoomLink to this definition

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

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