Rumah >pembangunan bahagian belakang >Tutorial Python >Penyelesaian: django NotSupportedError(\'Perimeter tidak boleh menggunakan medan yang tidak diunjurkan.\')

Penyelesaian: django NotSupportedError(\'Perimeter tidak boleh menggunakan medan yang tidak diunjurkan.\')

WBOY
WBOYke hadapan
2024-02-29 20:40:02959semak imbas

解决方案:django NotSupportedError(

Sebab ralat

"NotSupportedError("Perimeter tidak boleh menggunakan medan yang tidak diunjurkan.")" Ralat ini biasanya berlaku apabila anda cuba menggunakan medan yang tidak diunjurkan untuk mengira perimeter dalam Django. Terdapat dua jenis medan dalam

DjanGo: medan unjuran dan medan tidak unjur. Medan yang diunjurkan ialah medan yang mewakili maklumat geografi dalam sistem koordinat satah, manakala medan yang tidak diunjurkan ialah medan yang mewakili maklumat geografi dalam sistem koordinat elipsoid.

Jika anda melihat ralat "NotSupportedError("Perimeter cannot use a non-projected field.")" ralat, ini mungkin kerana anda cuba mengira perimeter menggunakan medan bukan unjuran. Sebagai contoh, anda mungkin melihat ralat ini jika anda menggunakan medan yang tidak diunjurkan untuk mengira perimeter angka geografi.

Untuk membetulkannya, anda perlu memastikan anda menggunakan medan unjuran untuk mengira perimeter. Contohnya, jika anda ingin mengira lilitan bulatan, anda boleh menggunakan kod berikut:

from django.contrib.GIS.measure import D

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

Semoga contoh ini membantu anda.

Cara menyelesaikan

Untuk menyelesaikan ralat "NotSupportedError("Perimeter tidak boleh menggunakan medan bukan unjuran.")", anda perlu memastikan medan unjuran digunakan untuk mengira perimeter.

Medan unjuran ialah medan yang mewakili maklumat geografi dalam sistem koordinat satah dan boleh digunakan untuk mengira perimeter. Contohnya, jika anda ingin mengira lilitan bulatan, anda boleh menggunakan kod berikut:

from django.contrib.GIS.measure import D

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

Jika anda menggunakan medan yang tidak diunjurkan untuk mengira perimeter, anda perlu menukar medan ini kepada medan yang diunjurkan. Contohnya, jika anda ingin menukar medan yang tidak diunjurkan kepada medan yang diunjurkan, anda boleh menggunakan kod berikut:

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

Semoga maklumat ini dapat membantu anda.

Contoh Penggunaan

Ya, berikut adalah contoh:

Andaikan anda mempunyai model Django yang mengandungi medan bulat seperti ini:

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

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

Anda kemudian boleh menggunakan kod berikut untuk mencipta objek MyModel baharu dan menetapkan lilitan bulatan pada medan bulatan:

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()

Perhatikan bahawa kod di atas menggunakan kelas Point untuk mencipta pusat bulatan dan kaedah penimbal() untuk mencipta bulatan. Kelas D juga digunakan untuk menentukan jejari bulatan.

Semoga contoh ini membantu anda.

Atas ialah kandungan terperinci Penyelesaian: django NotSupportedError(\'Perimeter tidak boleh menggunakan medan yang tidak diunjurkan.\'). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:lsjlt.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam