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
Lepaskan: 2024-02-29 20:40:02
ke hadapan
989 orang telah melayarinya

解决方案: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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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()
Salin selepas log masuk

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()
Salin selepas log masuk

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!

sumber:lsjlt.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan