"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
Ich hoffe, dieses Beispiel ist hilfreich für Sie.
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
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
Ich hoffe, diese Informationen sind hilfreich für Sie.
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()
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()
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!