Maison >développement back-end >Tutoriel Python >Solution : django NotSupportedError(\'Le périmètre ne peut pas utiliser un champ non projeté.\')

Solution : django NotSupportedError(\'Le périmètre ne peut pas utiliser un champ non projeté.\')

WBOY
WBOYavant
2024-02-29 20:40:02957parcourir

解决方案:django NotSupportedError(

La raison de l'erreur

"NotSupportedError("Le périmètre ne peut pas utiliser un champ non projeté.")" Cette erreur se produit généralement lorsque vous essayez d'utiliser un champ non projeté pour calculer le périmètre dans Django. Il existe deux types de champs dans

DjanGo : les champs projetés et les champs non projetés. Les champs projetés sont des champs qui représentent des informations géographiques dans un système de coordonnées planes, tandis que les champs non projetés sont des champs qui représentent des informations géographiques dans un système de coordonnées ellipsoïdes.

Si vous voyez l'erreur "NotSupportedError("Le périmètre ne peut pas utiliser un champ non projeté.")", c'est peut-être parce que vous essayez de calculer le périmètre à l'aide d'un champ non projeté. Par exemple, cette erreur peut s'afficher si vous utilisez un champ non projeté pour calculer le périmètre d'une figure géographique.

Pour résoudre ce problème, vous devez vous assurer d'utiliser le champ projeté pour calculer le périmètre. Par exemple, si vous souhaitez calculer la circonférence d'un cercle, vous pouvez utiliser le code suivant :

from django.contrib.GIS.measure import D

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

J'espère que cet exemple vous sera utile.

Comment résoudre

Pour résoudre l'erreur "NotSupportedError("Le périmètre ne peut pas utiliser un champ non projeté.")", vous devez vous assurer qu'un champ projeté est utilisé pour calculer le périmètre.

Le champ de projection est un champ qui représente des informations géographiques dans un système de coordonnées planes et peut être utilisé pour calculer le périmètre. Par exemple, si vous souhaitez calculer la circonférence d'un cercle, vous pouvez utiliser le code suivant :

from django.contrib.GIS.measure import D

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

Si vous utilisez des champs non projetés pour calculer le périmètre, vous devrez convertir ces champs en champs projetés. Par exemple, si vous souhaitez convertir un champ non projeté en champ projeté, vous pouvez utiliser le code suivant :

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

J'espère que ces informations vous seront utiles.

Exemple d'utilisation

Oui, voici un exemple :

Supposons que vous ayez un modèle Django contenant un champ circulaire comme celui-ci :

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

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

Vous pouvez ensuite utiliser le code suivant pour créer un nouvel objet MyModel et attribuer la circonférence du cercle au champ cercle :

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

Notez que le code ci-dessus utilise la classe Point pour créer le centre du cercle et la méthode buffer() pour créer un cercle. La classe D est également utilisée pour spécifier le rayon d'un cercle.

J'espère que cet exemple vous sera utile.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer