Heim > Backend-Entwicklung > Python-Tutorial > Lösung: django NotSupportedError(\'Perimeter kann kein nicht projiziertes Feld verwenden.\')

Lösung: django NotSupportedError(\'Perimeter kann kein nicht projiziertes Feld verwenden.\')

WBOY
Freigeben: 2024-02-29 20:40:02
nach vorne
956 Leute haben es durchsucht

解决方案:django NotSupportedError(

Der Grund für den Fehler

"NotSupportedError("Perimeter kann kein nicht projiziertes Feld verwenden.")" Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, ein nicht projiziertes Feld zur Berechnung des Umfangs in Django zu verwenden. Es gibt zwei Arten von Feldern in

DjanGo: projizierte Felder und nicht projizierte Felder. Projizierte Felder sind Felder, die geografische Informationen in einem ebenen Koordinatensystem darstellen, während nicht projizierte Felder Felder sind, die geografische Informationen in einem Ellipsoid-Koordinatensystem darstellen.

Wenn Sie den Fehler „NotSupportedError(„Perimeter kann kein nicht projiziertes Feld verwenden.“)“ sehen, liegt das möglicherweise daran, dass Sie versuchen, den Umfang mithilfe eines nicht projizierten Felds zu berechnen. Dieser Fehler kann beispielsweise auftreten, wenn Sie ein nicht projiziertes Feld verwenden, um den Umfang einer geografischen Figur zu berechnen.

Um dies zu beheben, müssen Sie sicherstellen, dass Sie das projizierte Feld zur Berechnung des Umfangs verwenden. Wenn Sie beispielsweise den Umfang eines Kreises berechnen möchten, können Sie den folgenden Code verwenden:

from django.contrib.GIS.measure import D

# Assume that "circle" is a projected field of type Circle
perimeter = circle.perimeter
Nach dem Login kopieren

Ich hoffe, dieses Beispiel ist hilfreich für Sie.

Lösung

Um den Fehler „NotSupportedError(„Perimeter kann kein nicht projiziertes Feld verwenden.“)“ zu beheben, müssen Sie sicherstellen, dass ein projiziertes Feld zur Berechnung des Umfangs verwendet wird.

Das Projektionsfeld ist ein Feld, das geografische Informationen in einem ebenen Koordinatensystem darstellt und zur Berechnung des Umfangs verwendet werden kann. Wenn Sie beispielsweise den Umfang eines Kreises berechnen möchten, können Sie den folgenden Code verwenden:

from django.contrib.gis.measure import D

# Assume that "circle" is a projected field of type Circle
perimeter = circle.perimeter
Nach dem Login kopieren

Wenn Sie zur Berechnung des Umfangs nicht projizierte Felder verwenden, müssen Sie diese Felder in projizierte Felder umwandeln. Wenn Sie beispielsweise ein nicht projiziertes Feld in ein projiziertes Feld konvertieren möchten, können Sie den folgenden Code verwenden:

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
Nach dem Login kopieren

Ich hoffe, diese Informationen sind hilfreich für Sie.

Anwendungsbeispiel

Ja, hier ist ein Beispiel:

Angenommen, Sie haben ein Django-Modell, das ein kreisförmiges Feld wie dieses enthält:

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

class MyModel(models.Model):
circle = gis_models.CircleField()
Nach dem Login kopieren

Mit dem folgenden Code können Sie dann ein neues MyModel-Objekt erstellen und dem Kreisfeld den Umfang des Kreises zuweisen:

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()
Nach dem Login kopieren

Beachten Sie, dass der obige Code die Point-Klasse verwendet, um den Mittelpunkt des Kreises zu erstellen, und die buffer()-Methode, um einen Kreis zu erstellen. Die D-Klasse wird auch verwendet, um den Radius eines Kreises anzugeben.

Ich hoffe, dieses Beispiel ist hilfreich für Sie.

Das obige ist der detaillierte Inhalt vonLösung: django NotSupportedError(\'Perimeter kann kein nicht projiziertes Feld verwenden.\'). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:lsjlt.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage