---
title: "Geografiska databasfunktioner"
version: 5.2
locale: sv
source: https://docs.djangoproject.com/sv/5.2/ref/contrib/gis/functions/
canonical: https://djangodocs.dev/sv/5.2/ref/contrib/gis/functions/
---
# Geografiska databasfunktioner

De funktioner som dokumenteras på den här sidan ger användare tillgång till geografiska databasfunktioner som kan användas i anteckningar, aggregeringar eller filter i Django.

Exempel:

```pycon
>>> from django.contrib.gis.db.models.functions import Length
>>> Track.objects.annotate(length=Length("line")).filter(length__gt=100)
```

Alla backends stöder inte alla funktioner, så läs dokumentationen för varje funktion för att se om din databasbackend stöder den funktion du vill använda. Om du anropar en geografisk funktion på en backend som inte stöder den, får du ett `NotImplementedError` undantag.

## Mått

### `Area`

#### `class Area(expression, **extra)`

*Tillgänglighet*: MariaDB, [MySQL](https://dev.mysql.com/doc/refman/en/gis-polygon-property-functions.html#function_st-area), Oracle, [PostGIS](https://postgis.net/docs/ST_Area.html), SpatiaLite

Accepterar ett enda geografiskt fält eller uttryck och returnerar fältets area som ett [`Area`](/sv/5.2/ref/contrib/gis/measure/#django.contrib.gis.measure.Area)-mått.

MySQL och SpatiaLite utan LWGEOM/RTTOPO stöder inte områdesberäkningar på geografiska SRS:er.

### `Avstånd`

#### `class Distance(expr1, expr2, spheroid=None, **extra)`

*Tillgänglighet*: MariaDB, [MySQL](https://dev.mysql.com/doc/refman/en/spatial-relation-functions-object-shapes.html#function_st-distance), [PostGIS](https://postgis.net/docs/ST_Distance.html), Oracle, SpatiaLite

Accepterar två geografiska fält eller uttryck och returnerar avståndet mellan dem, som ett [`Distance`](/sv/5.2/ref/contrib/gis/measure/#django.contrib.gis.measure.Distance)-objekt. På MySQL returneras ett rått floatvärde när koordinaterna är geodetiska.

På backends som stöder avståndsberäkning på geodetiska koordinater väljs automatiskt rätt backend-funktion beroende på geometriernas SRID-värde (t.ex. [ST\_DistanceSphere](https://postgis.net/docs/ST_DistanceSphere.html) på PostGIS).

När avstånd beräknas med geodetiska (vinkel-) koordinater, vilket är fallet med standard SRID:en WGS84 (4326), kan du ange nyckelordsargumentet `spheroid` för att bestämma om beräkningen ska baseras på en enkel sfär (mindre noggrann, mindre resurskrävande) eller på en sfäroid (mer noggrann, mer resurskrävande).

I följande exempel beräknas avståndet från staden Hobart till alla andra [`PointField`](/sv/5.2/ref/contrib/gis/model-api/#django.contrib.gis.db.models.PointField) i frågeuppsättningen `AustraliaCity`:

```pycon
>>> from django.contrib.gis.db.models.functions import Distance
>>> pnt = AustraliaCity.objects.get(name="Hobart").point
>>> for city in AustraliaCity.objects.annotate(distance=Distance("point", pnt)):
...     print(city.name, city.distance)
...
Wollongong 990071.220408 m
Shellharbour 972804.613941 m
Thirroul 1002334.36351 m
...
```

> **Note**
>
> Eftersom attributet `distance` är ett [`Distance`](/sv/5.2/ref/contrib/gis/measure/#django.contrib.gis.measure.Distance)-objekt kan du enkelt uttrycka värdet i de enheter du väljer. Till exempel: är `city.distance.mi` avståndsvärdet i miles och `city.distance.km` är avståndsvärdet i kilometer. Se [Mätobjekt](/sv/5.2/ref/contrib/gis/measure/) för detaljer om användning och listan över [Stödda enheter](/sv/5.2/ref/contrib/gis/measure/#supported-units).

### `GeometryDistance`

#### `class GeometryDistance(expr1, expr2, **extra)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/geometry_distance_knn.html)

Accepterar två geografiska fält eller uttryck och returnerar avståndet mellan dem. När den används i en [`order_by()`](/sv/5.2/ref/models/querysets/#django.db.models.query.QuerySet.order_by)-klausul ger den indexassisterade resultatuppsättningar för närmaste granne.

### `Längd`

#### `class Length(expression, spheroid=True, **extra)`

*Tillgänglighet*: MariaDB, [MySQL](https://dev.mysql.com/doc/refman/en/gis-linestring-property-functions.html#function_st-length), Oracle, [PostGIS](https://postgis.net/docs/ST_Length.html), SpatiaLite

Tar emot ett geografiskt fält eller uttryck med en eller flera strängar och returnerar dess längd som ett [`Distance`](/sv/5.2/ref/contrib/gis/measure/#django.contrib.gis.measure.Distance)-mått.

I PostGIS och SpatiaLite, när koordinaterna är geodetiska (vinkel), kan du ange om beräkningen ska baseras på en enkel sfär (mindre exakt, mindre resurskrävande) eller på en sfäroid (mer exakt, mer resurskrävande) med nyckelordsargumentet ”sfäroid”.

MySQL stöder inte längdberäkningar på geografiska SRS:er.

### `Perimeter`

#### `class Perimeter(expression, **extra)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_Perimeter.html), Oracle, SpatiaLite

Accepterar ett enda geografiskt fält eller uttryck och returnerar geometriområdets omkrets som ett [`Distance`](/sv/5.2/ref/contrib/gis/measure/#django.contrib.gis.measure.Distance)-objekt.

## Relationer

### ”Azimut

#### `class Azimuth(point_a, point_b, **extra)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_Azimuth.html), SpatiaLite (LWGEOM/RTTOPO)

Returnerar azimut i radianer för det segment som definieras av de givna punktgeometrierna, eller `None` om de två punkterna sammanfaller. Azimuten är vinkelrefererad från norr och är positiv medurs: norr = `0`; öster = `π/2`; söder = `π`; väster = `3π/2`.

### `BoundingCircle`

#### `class BoundingCircle(expression, num_seg=48, **extra)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_MinimumBoundingCircle.html), [Oracle](https://docs.oracle.com/en/database/oracle/oracle-database/21/spatl/SDO_GEOM-reference.html#GUID-82A61626-BB64-4793-B53D-A0DBEC91831A), SpatiaLite 5.1+

Accepterar ett enda geografiskt fält eller uttryck och returnerar den minsta cirkelpolygon som helt kan innehålla geometrin.

Parametern `num_seg` används endast på PostGIS.

> **Changed in Django 5.1**
>
> Stöd för SpatiaLite 5.1+ har lagts till.

### `Centroid`

#### `class Centroid(expression, **extra)`

*Tillgänglighet*: MariaDB, [MySQL](https://dev.mysql.com/doc/refman/en/gis-polygon-property-functions.html#function_st-centroid), [PostGIS](https://postgis.net/docs/ST_Centroid.html), Oracle, SpatiaLite

Accepterar ett enda geografiskt fält eller uttryck och returnerar geometrins `centroid`-värde.

### `Närmaste punkt`

#### `class ClosestPoint(expr1, expr2, **extra)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_ClosestPoint.html), SpatiaLite

Accepterar två geografiska fält eller uttryck och returnerar den 2-dimensionella punkt på geometri A som ligger närmast geometri B.

### `Kuvert`

#### `class Envelope(expression, **extra)`

*Tillgänglighet*: MariaDB, [MySQL](https://dev.mysql.com/doc/refman/en/gis-general-property-functions.html#function_st-envelope), [Oracle](https://docs.oracle.com/en/database/oracle/oracle-database/21/spatl/spatial-operators-reference.html#GUID-ACED800F-3435-44AA-9606-D40934A23ED0), [PostGIS](https://postgis.net/docs/ST_Envelope.html), SpatiaLite

Accepterar ett enda geografiskt fält eller uttryck och returnerar den geometri som representerar geometrins begränsningsbox.

### `LineLocatePoint`

#### `class LineLocatePoint(linestring, point, **extra)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_LineLocatePoint.html), SpatiaLite

Returnerar en flottör mellan 0 och 1 som representerar platsen för den närmaste punkten på `linjestring` till den angivna `punkten`, som en bråkdel av 2D-linjens längd.

### `PointOnSurface`

#### `class PointOnSurface(expression, **extra)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_PointOnSurface.html), MariaDB, Oracle, SpatiaLite

Accepterar ett enda geografiskt fält eller uttryck och returnerar en geometrisk `Point` som garanterat ligger på fältets yta; annars returneras `None`.

## Åtgärder

### ”Skillnad

#### `class Difference(expr1, expr2, **extra)`

*Tillgänglighet*: MariaDB, [MySQL](https://dev.mysql.com/doc/refman/en/spatial-operator-functions.html#function_st-difference), [PostGIS](https://postgis.net/docs/ST_Difference.html), Oracle, SpatiaLite

Accepterar två geografiska fält eller uttryck och returnerar den geometriska skillnaden, det vill säga den del av geometri A som inte skär geometri B.

### `Intersektion`

#### `class Intersection(expr1, expr2, **extra)`

*Tillgänglighet*: MariaDB, [MySQL](https://dev.mysql.com/doc/refman/en/spatial-operator-functions.html#function_st-intersection), [PostGIS](https://postgis.net/docs/ST_Intersection.html), Oracle, SpatiaLite

Accepterar två geografiska fält eller uttryck och returnerar den geometriska skärningspunkten mellan dem.

### `SymDifference`

#### `class SymDifference(expr1, expr2, **extra)`

*Tillgänglighet*: MariaDB, [MySQL](https://dev.mysql.com/doc/refman/en/spatial-operator-functions.html#function_st-symdifference), [PostGIS](https://postgis.net/docs/ST_SymDifference.html), Oracle, SpatiaLite

Tar emot två geografiska fält eller uttryck och returnerar den geometriskt symmetriska skillnaden (union utan intersektion) mellan de angivna parametrarna.

### `Union`

#### `class Union(expr1, expr2, **extra)`

*Tillgänglighet*: MariaDB, [MySQL](https://dev.mysql.com/doc/refman/en/spatial-operator-functions.html#function_st-union), [PostGIS](https://postgis.net/docs/ST_Union.html), Oracle, SpatiaLite

Accepterar två geografiska fält eller uttryck och returnerar sammanslagningen av de båda geometrierna.

## Redigerare

### `ForcePolygonCW`

#### `class ForcePolygonCW(expression, **extra)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_ForcePolygonCW.html), SpatiaLite

Accepterar ett enda geografiskt fält eller uttryck och returnerar en modifierad version av polygonen/multipolygonen där alla yttre ringar är orienterade medurs och alla inre ringar är orienterade moturs. Icke-polygonala geometrier returneras oförändrade.

### `MakeValid`

#### `class MakeValid(expr)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_MakeValid.html), SpatiaLite (LWGEOM/RTTOPO)

Accepterar ett geografiskt fält eller uttryck och försöker konvertera värdet till en giltig geometri utan att förlora någon av de ingående hörnen. Geometrier som redan är giltiga returneras utan ändringar. Enkla polygoner kan bli en multipolygon och resultatet kan ha en lägre dimension än indata.

### `Reverse`

#### `class Reverse(expression, **extra)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_Reverse.html), Oracle, SpatiaLite

Accepterar ett enda geografiskt fält eller uttryck och returnerar en geometri med omvända koordinater.

### `Skala`

#### `class Scale(expression, x, y, z=0.0, **extra)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_Scale.html), SpatiaLite

Tar emot ett enda geografiskt fält eller uttryck och returnerar en geometri med skalade koordinater genom att multiplicera dem med parametrarna `x`, `y` och eventuellt `z`.

### `SnapToGrid`

#### `class SnapToGrid(expression, *args, **extra)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_SnapToGrid.html), SpatiaLite

Accepterar ett enda geografiskt fält eller uttryck och returnerar en geometri med alla punkter knäppta till det angivna rutnätet.  Hur geometrin knäpps till rutnätet beror på hur många numeriska argument (antingen float, integer eller long) som anges.

| Antal argument | Beskrivning |
| --- | --- |
| 1 | En enda storlek för att fästa både X- och Y-rutnätet till. |
| 2 | X- och Y-storlekar för att fästa rutnätet. |
| 4 | X- och Y-storlekar och motsvarande X- och Y-ursprung. |

### `Transform`

#### `class Transform(expression, srid, **extra)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_Transform.html), Oracle, SpatiaLite

Tar emot ett geografiskt fält eller uttryck och en SRID-heltalskod och returnerar den transformerade geometrin till det rumsliga referenssystem som anges av parametern `srid`.

> **Note**
>
> Vilket rumsligt referenssystem ett heltals-SRID motsvarar kan bero på vilken rumslig databas som används.  Med andra ord är de SRID-nummer som används för Oracle inte nödvändigtvis desamma som de som används av PostGIS.

### `Translate`

#### `class Translate(expression, x, y, z=0.0, **extra)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_Translate.html), SpatiaLite

Tar emot ett enda geografiskt fält eller uttryck och returnerar en geometri med koordinaterna förskjutna med de numeriska parametrarna `x`, `y` och eventuellt `z`.

## Inmatningsformat

### `FrånWKB`

#### `class FromWKB(expression, srid=0, **extra)`

*Tillgänglighet*: MariaDB, [MySQL](https://dev.mysql.com/doc/refman/en/gis-wkb-functions.html#function_st-geomfromwkb), Oracle, [PostGIS](https://postgis.net/docs/ST_GeomFromWKB.html), SpatiaLite

Skapar geometri från [Well-known binary (WKB)](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary) representation. Det valfria argumentet `srid` gör det möjligt att ange SRID för den resulterande geometrin. `srid` ignoreras i Oracle.

> **Changed in Django 5.1**
>
> Argumentet `srid` lades till.

### `FrånWKT`

#### `class FromWKT(expression, srid=0, **extra)`

*Tillgänglighet*: MariaDB, [MySQL](https://dev.mysql.com/doc/refman/en/gis-wkt-functions.html#function_st-geomfromtext), Oracle, [PostGIS](https://postgis.net/docs/ST_GeomFromText.html), SpatiaLite

Skapar geometri från [Well-known text (WKT)](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry) representation. Det valfria argumentet `srid` gör det möjligt att ange SRID för den resulterande geometrin. `srid` ignoreras i Oracle.

> **Changed in Django 5.1**
>
> Argumentet `srid` lades till.

## Utdata format

### `AsGeoJSON`

#### `class AsGeoJSON(expression, bbox=False, crs=False, precision=8, **extra)`

*Tillgänglighet*: MariaDB, [MySQL](https://dev.mysql.com/doc/refman/en/spatial-geojson-functions.html#function_st-asgeojson), Oracle, [PostGIS](https://postgis.net/docs/ST_AsGeoJSON.html), SpatiaLite

Accepterar ett enda geografiskt fält eller uttryck och returnerar en [GeoJSON](https://geojson.org/) representation av geometrin. Observera att resultatet inte är en komplett GeoJSON-struktur utan endast nyckelinnehållet `geometry` i en GeoJSON-struktur. Se även [GeoJSON Serializer](/sv/5.2/ref/contrib/gis/serializers/).

Exempel:

```pycon
>>> City.objects.annotate(json=AsGeoJSON("point")).get(name="Chicago").json
{"type":"Point","coordinates":[-87.65018,41.85039]}
```

| Sökord Argument | Beskrivning |
| --- | --- |
| `bbox` | Ställ in detta på `True` om du vill att bounding box ska ingå i den returnerade GeoJSON. Ignoreras på Oracle. |
| `crs` | Sätt detta till `True` om du vill att koordinatreferenssystemet ska ingå i den returnerade GeoJSON. Ignoreras på MySQL och Oracle. |
| `precision` | Det kan användas för att ange antalet signifikanta siffror för koordinaterna i GeoJSON-representationen - standardvärdet är 8. Ignoreras i Oracle. |

### `AsGML`

#### `class AsGML(expression, version=2, precision=8, **extra)`

*Tillgänglighet*: Oracle, [PostGIS](https://postgis.net/docs/ST_AsGML.html), SpatiaLite

Accepterar ett enda geografiskt fält eller uttryck och returnerar en -representation av geometrin.

Exempel:

```pycon
>>> qs = Zipcode.objects.annotate(gml=AsGML("poly"))
>>> print(qs[0].gml)
<gml:Polygon srsName="EPSG:4326"><gml:OuterBoundaryIs>-147.78711,70.245363 ...
-147.78711,70.245363</gml:OuterBoundaryIs></gml:Polygon>
```

| Sökord Argument | Beskrivning |
| --- | --- |
| `precision` | Anger antalet signifikanta siffror för koordinaterna i GML-representationen – standardvärdet är 8. Ignoreras i Oracle. |
| `version` | Anger vilken GML-version som ska användas: 2 (standard) eller 3. |

### `AsKML`

#### `class AsKML(expression, precision=8, **extra)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_AsKML.html), SpatiaLite

Accepterar ett enda geografiskt fält eller uttryck och returnerar en -representation av geometrin.

Exempel:

```pycon
>>> qs = Zipcode.objects.annotate(kml=AsKML("poly"))
>>> print(qs[0].kml)
<Polygon><outerBoundaryIs><LinearRing><coordinates>-103.04135,36.217596,0 ...
-103.04135,36.217596,0</coordinates></LinearRing></outerBoundaryIs></Polygon>
```

| Sökord Argument | Beskrivning |
| --- | --- |
| `precision` | Detta nyckelord kan användas för att ange antalet signifikanta siffror för koordinaterna i KML-representationen - standardvärdet är 8. |

### `AsSVG`

#### `class AsSVG(expression, relative=False, precision=8, **extra)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_AsSVG.html), SpatiaLite

Accepterar ett enda geografiskt fält eller uttryck och returnerar en SVG-representation (SVG = Scalable Vector Graphics) av geometrin.

| Sökord Argument | Beskrivning |
| --- | --- |
| `relativ` | Om inställningen är `True` implementeras sökvägsdata i form av relativa förflyttningar. Standardvärdet är `False`, vilket innebär att absoluta förflyttningar används istället. |
| `precision` | Detta nyckelord kan användas för att ange antalet signifikanta siffror för koordinaterna i SVG-representationen - standardvärdet är 8. |

### `AsWKB`

#### `class AsWKB(expression, **extra)`

*Tillgänglighet*: MariaDB, [MySQL](https://dev.mysql.com/doc/refman/en/gis-format-conversion-functions.html#function_st-asbinary), Oracle, [PostGIS](https://postgis.net/docs/ST_AsBinary.html), SpatiaLite

Accepterar ett enda geografiskt fält eller uttryck och returnerar en [Well-known binary (WKB)](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary)-representation av geometrin.

Exempel:

```pycon
>>> bytes(City.objects.annotate(wkb=AsWKB("point")).get(name="Chelyabinsk").wkb)
b'\x01\x01\x00\x00\x00]3\xf9f\x9b\x91K@\x00X\x1d9\xd2\xb9N@'
```

### `AsWKT`

#### `class AsWKT(expression, **extra)`

*Tillgänglighet*: MariaDB, [MySQL](https://dev.mysql.com/doc/refman/en/gis-format-conversion-functions.html#function_st-astext), Oracle, [PostGIS](https://postgis.net/docs/ST_AsText.html), SpatiaLite

Accepterar ett enda geografiskt fält eller uttryck och returnerar en [Well-known text (WKT)](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry)-representation av geometrin.

Exempel:

```pycon
>>> City.objects.annotate(wkt=AsWKT("point")).get(name="Chelyabinsk").wkt
'POINT (55.137555 61.451728)'
```

### `GeoHash`

#### `class GeoHash(expression, precision=None, **extra)`

*Tillgänglighet*: [MySQL](https://dev.mysql.com/doc/refman/en/spatial-geohash-functions.html#function_st-geohash), [PostGIS](https://postgis.net/docs/ST_GeoHash.html), SpatiaLite (LWGEOM/RTTOPO)

Accepterar ett enda geografiskt fält eller uttryck och returnerar en -representation av geometrin.

Nyckelordsargumentet `precision` styr antalet tecken i resultatet.

## Diverse

### `IsEmpty`

#### `class IsEmpty(expr)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_IsEmpty.html)

Accepterar ett geografiskt fält eller uttryck och testar om värdet är en tom geometri. Returnerar `True` om dess värde är tomt och `False` annars.

### `IsValid`

#### `class IsValid(expr)`

*Tillgänglighet*: [MySQL](https://dev.mysql.com/doc/refman/en/spatial-convenience-functions.html#function_st-isvalid), [PostGIS](https://postgis.net/docs/ST_IsValid.html), Oracle, SpatiaLite

Tar emot ett geografiskt fält eller uttryck och testar om värdet är välformat. Returnerar `True` om dess värde är en giltig geometri och `False` annars.

### `MemSize`

#### `class MemSize(expression, **extra)`

*Tillgänglighet*: [PostGIS](https://postgis.net/docs/ST_MemSize.html)

Accepterar ett enda geografiskt fält eller uttryck och returnerar den minnesstorlek (antal byte) som det geometriska fältet tar.

### `NumGeometries`

#### `class NumGeometries(expression, **extra)`

*Tillgänglighet*: MariaDB, [MySQL](https://dev.mysql.com/doc/refman/en/gis-geometrycollection-property-functions.html#function_st-numgeometries), [PostGIS](https://postgis.net/docs/ST_NumGeometries.html), Oracle, SpatiaLite

Accepterar ett enda geografiskt fält eller uttryck och returnerar antalet geometrier om geometrifältet är en samling (t.ex. ett fält `GEOMETRYCOLLECTION` eller `MULTI*`). Returnerar 1 för enstaka geometrier.

På MySQL returneras `None` för enstaka geometrier.

### `NumPoints`

#### `class NumPoints(expression, **extra)`

*Tillgänglighet*: MariaDB, [MySQL](https://dev.mysql.com/doc/refman/en/gis-linestring-property-functions.html#function_st-numpoints), [PostGIS](https://postgis.net/docs/ST_NPoints.html), Oracle, SpatiaLite

Accepterar ett enda geografiskt fält eller uttryck och returnerar antalet punkter i en geometri.

På MySQL returneras `None` för alla geometrier som inte är `LINESTRING`.
