Объекты измерения
Модуль django.contrib.gis.measure содержит объекты, позволяющие удобно представлять единицы измерения расстояния и площади. [1] В частности, в нём реализованы два объекта: Distance и Area — к обоим можно обращаться с помощью удобных псевдонимов D и A соответственно.
Пример
Объекты Distance можно создать с помощью именованного аргумента, указывающего единицы измерения. В приведённом ниже примере создаются два объекта расстояния: в километрах (km) и милях (mi):
>>> from django.contrib.gis.measure import D, Distance >>> d1 = Distance(km=5) >>> print(d1) 5.0 km >>> d2 = D(mi=5) # `D` is an alias for `Distance` >>> print(d2) 5.0 mi
Для преобразования укажите атрибут нужной единицы измерения, чтобы получить расстояние в этой единице:
>>> print(d1.mi) # Converting 5 kilometers to miles 3.10685596119 >>> print(d2.km) # Converting 5 miles to kilometers 8.04672
Кроме того, над объектами расстояния можно выполнять арифметические операции:
>>> print(d1 + d2) # Adding 5 miles to 5 kilometers 13.04672 km >>> print(d2 - d1) # Subtracting 5 kilometers from 5 miles 1.89314403881 mi
При умножении двух объектов Distance получается объект Area, в котором используются квадратные единицы измерения:
>>> a = d1 * d2 # Returns an Area object. >>> print(a) 40.2336 sq_km
Чтобы определить сокращение атрибута единицы измерения, можно использовать метод класса unit_attname:
>>> print(Distance.unit_attname("US Survey Foot"))
survey_ft
>>> print(Distance.unit_attname("centimeter"))
cm
Поддерживаемые единицы измерения
Атрибут единицы измерения | Полное название или псевдонимы |
|---|---|
| Километр |
| Миля |
| Метр |
| Ярд |
| Фут, международный фут |
| Американский фут, геодезический фут США |
| Дюйм |
| Сантиметр |
| Миллиметр |
| Микрометр |
| Британский фут (Sears 1922) |
| Британский ярд (Sears 1922) |
| Британская цепь (Sears 1922) |
| Индийский ярд |
| Ярд (Sears) |
| Фут Кларка |
| Цепь |
| Цепь (Benoit) |
| Цепь (Sears) |
| Британская цепь (Benoit 1895 B) |
| Британская цепь (усечённая, Sears 1922) |
| Фут Золотого Берега |
| Звено |
| Звено (Benoit) |
| Звено (Sears) |
| Звено Кларка |
| Морская сажень |
| Род |
| Фурлонг |
| Морская миля |
| Морская миля (Великобритания) |
| Немецкий законный метр |
Примечание
Атрибуты Area совпадают с атрибутами Distance, за исключением префикса sq_ (единицы площади являются квадратными). Например, Area(sq_m=2) создаёт объект Area, представляющий два квадратных метра.
Помимо единиц с префиксом sq_, для Area также поддерживаются следующие единицы:
Атрибут единицы измерения | Полное название или псевдонимы |
|---|---|
| Гектар |
API измерений
Distance
-
class Distance(**kwargs)[исходный код] -
Чтобы инициализировать объект расстояния, передайте именованный аргумент, соответствующий нужному названию атрибута единицы измерения, и задайте ему требуемое значение. Например, следующий код создаёт объект расстояния, представляющий 5 миль:
>>> dist = Distance(mi=5)
-
__getattr__(unit_att)
Возвращает значение расстояния в единицах, соответствующих указанному атрибуту единицы измерения. Например:
>>> print(dist.km) 8.04672
-
classmethod unit_attname(unit_name)
Возвращает название атрибута единицы измерения расстояния для указанного полного названия единицы. Например:
>>> Distance.unit_attname("Mile") 'mi' -
-
class D -
Псевдоним класса
Distance.
Area
-
class Area(**kwargs)[исходный код] -
Чтобы инициализировать объект площади, передайте именованный аргумент, соответствующий нужному названию атрибута единицы измерения, и задайте ему требуемое значение. Например, следующий код создаёт объект площади, представляющий 5 квадратных миль:
>>> a = Area(sq_mi=5)
-
__getattr__(unit_att)
Возвращает значение площади в единицах, соответствующих указанному атрибуту единицы измерения. Например:
>>> print(a.sq_km) 12.949940551680001
-
classmethod unit_attname(unit_name)
Возвращает название атрибута единицы измерения площади для указанного полного названия единицы. Например:
>>> Area.unit_attname("Kilometer") 'sq_km' -
-
class A -
Псевдоним класса
Area.
Сноски
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/6.0/ref/contrib/gis/measure/