GeoDjango Forms API —Djangoドキュメント

提供:Dev Guides
< DjangoDjango/docs/3.2.x/ref/contrib/gis/forms-api
移動先:案内検索

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_namegis/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

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

default_zoom

デフォルトのマップズームは12です。

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