ホームページ >バックエンド開発 >Python チュートリアル >解決策: django NotSupportedError(\'境界は非投影フィールドを使用できません。\')

解決策: django NotSupportedError(\'境界は非投影フィールドを使用できません。\')

WBOY
WBOY転載
2024-02-29 20:40:02957ブラウズ

解决方案:django NotSupportedError(\

エラーの原因

"NotSupportedError("境界線は非投影フィールドを使用できません。")" このエラーは通常、Django を実行しようとしたことが原因で発生します。 非投影フィールドを使用して周囲を計算するときに発生します。

DjanGo には、投影されたフィールドと投影されていないフィールドの 2 種類のフィールドがあります。投影フィールドは平面座標系で地理情報を表すフィールドであり、非投影フィールドは楕円体座標系で地理情報を表すフィールドです。

「NotSupportedError("Perimeter can use a non-projected field.")」エラーが表示される場合は、非投影フィールドを使用して周囲を計算しようとしている可能性があります。たとえば、非投影フィールドを使用して地理的図形の周囲長を計算すると、このエラーが発生する可能性があります。

これを修正するには、投影されたフィールドを使用して周長を計算する必要があります。たとえば、円の円周を計算したい場合は、次のコードを使用できます:

from django.contrib.GIS.measure import D

# Assume that "circle" is a projected field of type Circle
perimeter = circle.perimeter

この例がお役に立てば幸いです。

解決方法

「NotSupportedError("境界線は非投影フィールドを使用できません。")」エラーを解決するには、境界線の計算に投影フィールドが使用されていることを確認する必要があります。 。

投影フィールドは、平面座標系で地理情報を表すフィールドであり、周長の計算に使用できます。たとえば、円の円周を計算したい場合は、次のコードを使用できます:

from django.contrib.GIS.measure import D

# Assume that "circle" is a projected field of type Circle
perimeter = circle.perimeter

非投影フィールドを使用して周囲を計算している場合は、これらのフィールドを投影フィールドに変換する必要があります。たとえば、非投影フィールドを投影フィールドに変換する場合は、次のコードを使用できます:

from django.contrib.gis.measure import D

# Assume that "circle" is a non-projected field of type Circle
perimeter = circle.transfORM(4326, clone=True).perimeter

この情報がお役に立てば幸いです。

使用例

はい、例を示します:

次のような円形フィールドを含む Django モデルがあるとします:

from django.db import models
from django.contrib.gis.db import models as gis_models

class MyModel(models.Model):
circle = gis_models.CircleField()

次に、次のコードを使用して新しい MyModel オブジェクトを作成し、円の円周を円フィールドに割り当てることができます:

from django.contrib.gis.geos import Point
from django.contrib.gis.measure import D

# Create a point
point = Point(x=1.0, y=2.0)

# Create a circle with radius of 10 meters
circle = point.buffer(D(m=10))

# Create a new MyModel object and set the circle field
my_model = MyModel(circle=circle)
my_model.save()

上記のコードでは、Point クラスを使用して円の中心を作成し、buffer() メソッドを使用して円を作成していることに注意してください。 D クラスは、円の半径を指定するためにも使用されます。

この例がお役に立てば幸いです。

以上が解決策: django NotSupportedError(\'境界は非投影フィールドを使用できません。\')の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlsjlt.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。