Объекты измерения
Модуль 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
Для преобразований можно получить преобразованное значение расстояния, обратившись к атрибуту preferred_unit:
>>> 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
Поддерживаемые единицы
Атрибут единицы |
Полное название или псевдонимы |
|---|---|
|
Километр |
|
Миля |
|
Метр |
|
Ярд |
|
Фут |
|
Фут (США) |
|
Дюйм |
|
Сантиметр |
|
Миллиметр |
|
Микрометр |
|
Британский фут (Сears 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:
Атрибут единицы |
Полное название или псевдонимы |
|---|---|
|
Гектар |
Добавлена поддержка единицы ha.
API измерения
Расстояние
-
class Distance(**kwargs)[source] -
Для инициализации объекта расстояния передайте ключевое слово, соответствующее нужному названию атрибута единицы с желаемым значением. Например, следующее создаёт объект расстояния, представляющий 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.
Площадь
-
class Area(**kwargs)[source] -
Для инициализации объекта площади передайте ключевое слово, соответствующее нужному названию атрибута единицы с желаемым значением. Например, следующее создаёт объект площади, представляющий 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/5.2/ref/contrib/gis/measure/