Mätobjekt¶
Modulen django.contrib.gis.measure
innehåller objekt som gör det möjligt att på ett bekvämt sätt representera måttenheter för avstånd och yta. [Specifikt implementerar den två objekt, Distance
och Area
– som båda kan nås via D
respektive A
bekvämlighetsalias.
Exempel¶
Distance
-objekt kan instansieras med hjälp av ett nyckelordsargument som anger enheternas sammanhang. I exemplet nedan instansieras två olika avståndsobjekt i enheterna kilometer (km
) och miles (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
För konverteringar kan du använda attributet för önskad enhet för att få en konverterad avståndsmängd:
>>> print(d1.mi) # Converting 5 kilometers to miles
3.10685596119
>>> print(d2.km) # Converting 5 miles to kilometers
8.04672
Dessutom kan aritmetiska operationer utföras mellan avståndsobjekten:
>>> print(d1 + d2) # Adding 5 miles to 5 kilometers
13.04672 km
>>> print(d2 - d1) # Subtracting 5 kilometers from 5 miles
1.89314403881 mi
Två Distance
-objekt multiplicerade med varandra ger ett Area
-objekt, som använder kvadrerade måttenheter:
>>> a = d1 * d2 # Returns an Area object.
>>> print(a)
40.2336 sq_km
För att bestämma vad attributförkortningen för en enhet är, kan klassmetoden unit_attname
användas:
>>> print(Distance.unit_attname("US Survey Foot"))
survey_ft
>>> print(Distance.unit_attname("centimeter"))
cm
Stödda enheter¶
Enhet Attribut |
Fullständigt namn eller alias |
---|---|
|
Kilometer, Kilometer |
|
Miles |
|
Meter, Meter |
|
Gård |
|
Foot, Foot (Internationell) |
|
U.S. fot, amerikansk undersökning fot |
|
Tum |
|
Centimeter |
|
Millimeter, Millimeter |
|
Mikrometer, mikrometer |
”brittisk_ft |
Brittisk fot (Sears 1922) |
”brittisk_yd |
Brittiskt varv (Sears 1922) |
”Brittisk kedja |
Brittisk kedja (Sears 1922) |
|
Indian yard, Yard (Indian) |
|
Yard (Sears) |
|
Clarkes fot |
|
Industri |
|
Kedja (Benoit) |
|
Kedja (Sears) |
”brittisk kedja” (british_chain_benoit) |
Brittisk kedja (Benoit 1895 B) |
|
Brittisk kedja (Sears 1922 avkortad) |
”guldkust |
Gold Coast fot |
|
Länk |
|
Länk (Benoit) |
|
Länk (Sears) |
|
Clarkes länk |
|
Fathom |
|
Stång |
|
Furlong, Furrow Long |
|
Nautisk mil |
|
Nautisk mil (Storbritannien) |
|
Tysk juridisk meter |
Observera
Area
-attributen är desamma som Distance
-attributen, förutom att de inleds med sq_
(areaenheter är kvadratiska till sin natur). Till exempel: skapar Area(sq_m=2)
ett Area
-objekt som representerar två kvadratmeter.
Förutom enheter med prefixet sq_
stöds även följande enheter på Area
:
Enhet Attribut |
Fullständigt namn eller alias |
---|---|
|
Hectare |
Stöd för enheten ha
har lagts till.
Mätning API¶
Avstånd
¶
- class Distance(**kwargs)[source]¶
För att initiera ett avståndsobjekt skickar du in ett nyckelord som motsvarar det önskade enhetens attributnamn med önskat värde. Exempelvis skapar följande ett avståndsobjekt som representerar 5 miles:
>>> dist = Distance(mi=5)
- __getattr__(unit_att)¶
Returnerar avståndsvärdet i enheter som motsvarar det angivna enhetsattributet. Till exempel:
>>> print(dist.km) 8.04672
- classmethod unit_attname(unit_name)¶
Returnerar attributnamnet för avståndsenheten för det angivna fullständiga enhetsnamnet. Till exempel:
>>> Distance.unit_attname("Mile") 'mi'
Area
¶
- class Area(**kwargs)[source]¶
För att initiera ett områdesobjekt skickar du in ett nyckelord som motsvarar önskad enhet attributnamn med önskat värde. Följande skapar till exempel ett områdesobjekt som representerar 5 kvadratmil:
>>> a = Area(sq_mi=5)
- __getattr__(unit_att)¶
Returnerar områdets värde i enheter som motsvarar det angivna enhetsattributet. Till exempel:
>>> print(a.sq_km) 12.949940551680001
- classmethod unit_attname(unit_name)¶
Returnerar attributnamnet för områdesenheten för det angivna fullständiga enhetsnamnet. Till exempel:
>>> Area.unit_attname("Kilometer") 'sq_km'
Fotnoter