5

私のモデルでは、ポリゴンフィールドを介して定義しています

polygon = models.PolygonField(srid=4326, geography=True, null=True, blank=True)

ポリゴンの面積を決定したいときは、

area_square_degrees = object.polygon.area

しかし、GeoDjango を使用し て平方度の結果を m2 に変換するにはどうすればよいですか? method がないため、この回答は機能しません。組み込みの変換はありますか?areasq_m

4

4 に答える 4

5

データを正しい空間参照系に変換する必要があります。

area_square_local_units = object.polygon.transform(srid, clone=False).area

英国では、メーターを使用する 27700 の British National Grid SRID を使用する場合があります。

area_square_meters = object.polygon.transform(27700, clone=False).area

変換されていない状態で他に何かをする必要があるかどうかに応じて、ジオメトリのクローンを作成する必要がある場合としない場合があります。

ドキュメントはこちらhttps://docs.djangoproject.com/en/1.8/ref/contrib/gis/geos/

于 2015-08-23T20:43:02.710 に答える
3

きれいな解決策が見つからなかったため、これには多くの苦労がありました。トリックは、postgis 機能を使用する必要があることです (したがって、postgis でのみ動作します..):

from django.contrib.gis.db.models.functions import Area
loc_obj = Location.objects.annotate(area_=Area("poly")).get(pk=??)  
# put the primary key of the object

print(loc_obj.area_)  # distance object, result should be in meters, but you can change to the unit you want, e.g  .mi for miles etc..

models.py:

class Location(models.Model):
    poly = gis_models.PolygonField(srid=4326, geography=True)

投影ではなく地理座標を扱う必要がある場合は、これが最善の方法だと思います。地球の曲線計算を処理し、距離/面積が大きくても結果は正確です

于 2017-09-01T09:43:25.743 に答える
-3

あなたが話している地球の表面積の場合、1 平方度は 12,365.1613 平方 km です。したがって、平方度を掛けて 10^6 を掛けてメートルに変換します。

于 2014-01-22T09:30:17.463 に答える