, 당신은
geometria = models.PolygonField(srid=4326, null=True, geography=True)
geodjango의 문서에서 언급 한 바와 같이
이 https://docs.djangoproject.com/en/dev/ref/contrib/gis/model-api/#geography
PostGIS와 1.5에서 지리 유형이, 지리 유형이 도입 된 설정해야합니다 - 은 지리 좌표 (예 : WGS84 경도/위도)로 표시된 공간 기능에 대한 기본 지원을 제공합니다. [7] 지리 유형에 사용되는 평면 인 과 달리 지형 유형은 구형 데이터를 사용합니다. 지리 열에서 수행되는 거리 및 측정 작업 은 자동으로 큰 원호 호 계산을 사용하고 선형 단위를 반환합니다. 즉, ST_Distance 이 두 곳에서 호출 될 때 미터 단위의 값이 리턴됩니다 (WGS84의 Geometry C 럼에서 호출 될 경우도는 과 대등합니다). 당신이 geography=True
이없는 경우
, 우리는 일반 형상으로 물건을 저장하는, 우리는 우리가 면적을 계산 할 수 없기 때문에 당신이 선호하는 측정 단위로 (부동 소수점 결과는 당신이지고) square degrees
에서 변환을 수행해야합니다 지리적 좌표에서. 우리는 대신에 변환을 할 수있는 투영 좌표 공간에 도우미 메서드를 추가 할 수 있습니다
def get_acres(self):
"""
Returns the area in acres.
"""
# Convert our geographic polygons (in WGS84)
# into a local projection for New York (here EPSG:32118)
self.polygon.transform(32118)
meters_sq = self.polygon.area.sq_m
acres = meters_sq * 0.000247105381 # meters^2 to acres
return acres
데이터의 정도에 따라 달라집니다, 어떻게 정확하게 우리가 결과를 필요로 투사 우리가 사용하는
: 여기에 내가했습니다 뉴욕의 일부분에 대한 특정 투영과 함께 설명되어 있지만, 데이터가 특별히 정확하지 않은 경우 전역 투영을 쉽게 대체하거나 간단한 수식을 사용할 수 있습니다.
self.polygon.area는 float를 반환하므로 sq_m 속성이 없습니다. – rawbeans