GeoDjango Forms API
GeoDjangoは、地理的にローカライズされたデータを地図上に視覚的に表示および編集するために、いくつかの特殊なフォームフィールドとウィジェットを提供します。 デフォルトでは、 OpenLayers を利用したマップを使用し、ベースWMSレイヤーは NASA によって提供されます。
フィールド引数
通常のフォームフィールド引数に加えて、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_height
- BaseGeometryWidget.map_width
- ウィジェットマップの高さと幅(デフォルトは400x600)。
- BaseGeometryWidget.map_srid
- マップで使用されるSRIDコード(デフォルトは4326)。
- BaseGeometryWidget.display_raw
- 主にデバッグ目的で、現在のジオメトリのシリアル化された表現を示すtextarea入力を表示するかどうかを指定するブール値(デフォルトは
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={'map_width': 800, 'map_height': 500}))
ウィジェットクラス
BaseGeometryWidget
- class BaseGeometryWidget
- これは、サブクラスに必要なロジックを含む抽象ベースウィジェットです。 このウィジェットをジオメトリフィールドに直接使用することはできません。 GeoDjangoウィジェットのレンダリングは、 template_name クラス属性で識別されるテンプレートに基づいていることに注意してください。
OpenLayersWidget
- class OpenLayersWidget
これは、すべてのGeoDjangoフォームフィールドで使用されるデフォルトのウィジェットです。
template_name
はgis/openlayers.html
です。OpenLayersWidget
および OSMWidget は、cdnjs.cloudflare.com
コンテンツ配信ネットワークでホストされているopenlayers.js
ファイルを使用します。 これらのウィジェットをサブクラス化して、内部Media
クラスのjs
プロパティでOpenLayers.js
ファイルの独自のバージョンを指定できます(静的定義としてアセットを参照) )。
OSMWidget
- class OSMWidget
このウィジェットは、OpenStreetMapベースレイヤーを使用して地理オブジェクトを表示します。 属性は次のとおりです。
- template_name
gis/openlayers-osm.html
- default_lat
- default_lon
デフォルトの中心緯度と経度は、それぞれ
47
と5
で、フランス東部の場所です。
- default_zoom
デフォルトのマップズームは
12
です。
上記のJavaScriptファイルホスティングに関する OpenLayersWidget の注意事項もここに適用されます。 マップタイルへの
https
アクセスについては、この FAQ回答も参照してください。