>백엔드 개발 >파이썬 튜토리얼 >해결 방법: django NotSupportedError(\'경계는 투영되지 않은 필드를 사용할 수 없습니다.\')

해결 방법: django NotSupportedError(\'경계는 투영되지 않은 필드를 사용할 수 없습니다.\')

WBOY
WBOY앞으로
2024-02-29 20:40:02961검색

解决方案:django NotSupportedError(

오류 원인

"NotSupportedError("Perimeter can use a non-projected field.")" 이 오류는 일반적으로 Django에서 경계를 계산하기 위해 비투영 필드를 사용하려고 할 때 발생합니다.

DjanGo에는 투영된 필드와 투영되지 않은 필드라는 두 가지 유형의 필드가 있습니다. 투영 필드는 평면 좌표계의 지리 정보를 나타내는 필드이고, 비투영 필드는 타원체 좌표계의 지리 정보를 나타내는 필드입니다.

"NotSupportedError("경계는 비투영 필드를 사용할 수 없습니다.")" 오류가 표시되는 경우, 비투영 필드를 사용하여 둘레를 계산하려고 하기 때문일 수 있습니다. 예를 들어, 투영되지 않은 필드를 사용하여 지리적 그림의 둘레를 계산하는 경우 이 오류가 나타날 수 있습니다.

이 문제를 해결하려면 투영된 필드를 사용하여 둘레를 계산해야 합니다. 예를 들어 원의 둘레를 계산하려면 다음 코드를 사용할 수 있습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 lsjlt.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제