# dokumentasi Django 2.0.8

# Fungsi Basisdata Geografis

The functions documented on this page allow users to access geographic database functions to be used in annotations, aggregations, or filters in Django.

Contoh:

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

Not all backends support all functions, so refer to the documentation of each function to see if your database backend supports the function you want to use. If you call a geographic function on a backend that doesn't support it, you'll get a `NotImplementedError` exception.

Ringkasan fungsi:

Pengukuran | Hubungan | Operasi | Penyunting | Bentuk keluaran | Bermacam-macam
--- | --- | --- | --- | --- | ---
`Area` | `Azimuth` | `Difference` | `ForceRHR` | `AsGeoJSON` | `IsValid`
`Distance` | `BoundingCircle` | `Intersection` | `MakeValid` | `AsGML` | `MemSize`
`Length` | `Centroid` | `SymDifference` | `Reverse` | `AsKML` | `NumGeometries`
`Perimeter` | `Envelope` | `Union` | `Scale` | `AsSVG` | `NumPoints`
| `LineLocatePoint` |  | `SnapToGrid` | `GeoHash` |
| `PointOnSurface` |  | `Transform` |  |
|  |  | `Translate` |  |

## `Area`

class `Area`(expression, **extra)

Tersedia: MySQL, Oracle, PostGIS, SpatiaLite

Accepts a single geographic field or expression and returns the area of the field as an `Area` measure.

MySQL and SpatiaLite without LWGEOM don't support area calculations on geographic SRSes.

Changed in Django 1.11:

Dalam versi terlama, nilai mentah dikembalikan pada MySQL ketika digunakan pada SRS yang diproyeksikan.

## `AsGeoJSON`

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

Ketersediaan: MySQL (≥ 5.7.5), PostGIS, SpatiaLite

Accepts a single geographic field or expression and returns a GeoJSON representation of the geometry. Note that the result is not a complete GeoJSON structure but only the `geometry` key content of a GeoJSON structure. See also Penserial GeoJSON.

Contoh:

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

Argumen Katakunci | Deskripsi
--- | ---
`bbox` | Setel ini menjadi `True` jika anda ingin membatasi kotak untuk disertakan dalam GeoJSON yang dikembalikan.
`crs` | Setel ini menjadi `True` jika anda ingin sistem acuan kordinat disertakan dalam kembalian GeoJSON. Abaikan pada MySQL.
`ketelitian` | Itu mungkin digunakan untuk menentikan sejumlah angka penting untuk kordinat dalam perwakilan GeoJSON -- nilai awalan adalah 8.

Changed in Django 2.0:

Dukungan MySQL telah ditambahkan.

## `AsGML`

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

Tersedia: Oracle, PostGIS, SpatiaLite

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan perwakilan Geographic Markup Language (GML) dari geometri.

Contoh:

    >>> 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>

Argumen Katakunci | Deskripsi
--- | ---
`ketelitian` | Menentukan sejumlah angka penting untuk kordinat dalam perwakilan GML -- nilai awalan adalah 8. Abaikan pada Oracle.
`versi` | Menentukan versi GML untuk menggunakan: 2 (awalan) atau 3.

Changed in Django 1.11:

Dukungan Oracle telah ditambahkan.

## `AsKML`

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

Tersedia: PostGIS, SpatiaLite

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan perwakilan Keyhole Markup Language (KML) dari geometri.

Contoh:

    >>> 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>

Argumen Katakunci | Deskripsi
--- | ---
`ketelitian` | Katakunci ini mungkin digunakan untuk menentukan sejumlah angka penting untuk kordinat dalam perwakilan KML -- nilai awalan adalah 8.

## `AsSVG`

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

Tersedia: PostGIS, SpatiaLite

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan sebuah perwakilan Scalable Vector Graphics (SVG) dari geometri.

Argumen Katakunci | Deskripsi
--- | ---
`relative` | Jika disetel ke `True`, jalur data akan diterapkan dalam ketentuan dari pergerakan relatif. Awalan menjadi ``False11, berarti bahwa perpindahan mutlak digunakan sebagai gantinya.
`ketelitian` | Katakunci mungkin digunakan untuk menentukan sejumlah angka penting untuk kordinat dalam perwakilan SVG -- nilai awalan adalah 8.

## `Azimuth`

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

New in Django 2.0.

Ketersediaan: PostGIS, SpatiaLite (LWGEOM)

Returns the azimuth in radians of the segment defined by the given point geometries, or `None` if the two points are coincident. The azimuth is angle referenced from north and is positive clockwise: north = `0`; east = `π/2`; south = `π`; west = `3π/2`.

## `BoundingCircle`

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

Ketersediaan: PostGIS, Oracle

Accepts a single geographic field or expression and returns the smallest circle polygon that can fully contain the geometry.

Parameter `num_seg` hanya digunakan pada PostGIS.

Changed in Django 1.11:

Dukungan Oracle telah ditambahkan.

## `Centroid`

class `Centroid`(expression, **extra)

Tersedia: MySQL, PostGIS, Oracle, SpatiaLite

Menerima bidang geografis tunggal atau mengembalikan nilai `centroid` dari geometri.

## `Difference`

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

Tersedia: MySQL (≥ 5.6.1), PostGIS, Oracle, SpatiaLite

Menerima dua bidang geografis atau pernyataan dan mengembalikan perbedaan geometri, yaitu bagian dari geometri A yang tidak berinteraksi dengan geometri B.

## `Distance`

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

Tersedia: MySQL (≥ 5.6.1), PostGIS, Oracle, SpatiaLite

Accepts two geographic fields or expressions and returns the distance between them, as a `Distance` object. On MySQL, a raw float value is returned when the coordinates are geodetic.

On backends that support distance calculation on geodetic coordinates, the proper backend function is automatically chosen depending on the SRID value of the geometries (e.g. ST_DistanceSphere on PostGIS).

Ketika jarak dihitung dengan kordinat (bersiku-siku) geodetic, seperti halnya dengan awalan SRID WGS84 (4326), anda dapat menyetel argumen kata kunci `spheroid` untuk memutuskan jika perhitungan harus berdasarkan pada bulatan sederhana (kurang akurat, kurang sumber daya-intensif) atau pada sebuah berbentuk bola (lebih akurat, lebih sumber daya-intensif)

In the following example, the distance from the city of Hobart to every other `PointField` in the `AustraliaCity` queryset is calculated:

    >>> 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
    ...

Catatan

Because the `distance` attribute is a `Distance` object, you can easily express the value in the units of your choice. For example, `city.distance.mi` is the distance value in miles and `city.distance.km` is the distance value in kilometers. See Obyek Pengukuran for usage details and the list of Satuan Didukung.

Changed in Django 1.11:

Dalam versi terlama, nilai mentah dikembalikan pada MySQL ketika digunakan pada SRS yang diproyeksikan.

## `Envelope`

class `Envelope`(expression, **extra)

Tersedia: MySQL, PostGIS, SpatiaLite

Accepts a single geographic field or expression and returns the geometry representing the bounding box of the geometry.

## `ForceRHR`

class `ForceRHR`(expression, **extra)

Tersedia: PostGIS

Accepts a single geographic field or expression and returns a modified version of the polygon/multipolygon in which all of the vertices follow the right-hand rule.

## `GeoHash`

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

Ketersediaan: MySQL (≥ 5.7.5), PostGIS, SpatiaLite (LWGEOM)

Menerima bidang geografi tunggal atau pernyataan dan mengembalikan perwakilan GeoHash dari geometri.

Argumen kata kunci `precision` mengendalikan sejumlah karakter dalam hasilnya.

Changed in Django 2.0:

Dukungan MySQL telah ditambahkan.

## `Intersection`

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

Tersedia: MySQL (≥ 5.6.1), PostGIS, Oracle, SpatiaLite

Menerima dua bidang geografi dan pernyataan dan mengembalikan persimpangan geometri diantara mereka.

## `IsValid`

class `IsValid`(expr)

Ketersediaan: MySQL (≥ 5.7.5), PostGIS, Oracle, SpatiaLite (LWGEOM)

Menerima sebuah bidang geografi atau pernyataan dan percobaan jika nilai berbentuk bagus. Mengembalikan `True` jika nilainya adalah geometri sah dan `False` sebaliknya.

Changed in Django 1.11:

Dukungan SpatiaLite dan Oracle telah ditambahkan.

Changed in Django 2.0:

Dukungan MySQL telah ditambahkan.

## `Length`

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

Tersedia: MySQL, Oracle, PostGIS, SpatiaLite

Accepts a single geographic linestring or multilinestring field or expression and returns its length as a `Distance` measure.

On PostGIS and SpatiaLite, when the coordinates are geodetic (angular), you can specify if the calculation should be based on a simple sphere (less accurate, less resource-intensive) or on a spheroid (more accurate, more resource-intensive) with the `spheroid` keyword argument.

MySQL tidak mendukung dukungan perhitungan panjang pada geografis SRS.

Changed in Django 1.11:

Dalam versi terlama, nilai mentah dikembalikan pada MySQL.

## `LineLocatePoint`

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

New in Django 2.0.

Ketersediaan: PostGIS, SpatiaLite

Returns a float between 0 and 1 representing the location of the closest point on `linestring` to the given `point`, as a fraction of the 2D line length.

## `MakeValid`

class `MakeValid`(expr)

Tersedia: PostGIS, SpatiaLite (LWGEOM)

Accepts a geographic field or expression and attempts to convert the value into a valid geometry without losing any of the input vertices. Geometries that are already valid are returned without changes. Simple polygons might become a multipolygon and the result might be of lower dimension than the input.

Changed in Django 1.11:

Dukungan SpatiaLite telah ditambahkan.

## `MemSize`

class `MemSize`(expression, **extra)

Tersedia: PostGIS

Accepts a single geographic field or expression and returns the memory size (number of bytes) that the geometry field takes.

## `NumGeometries`

class `NumGeometries`(expression, **extra)

Tersedia: MySQL, PostGIS, Oracle, SpatiaLite

Accepts a single geographic field or expression and returns the number of geometries if the geometry field is a collection (e.g., a `GEOMETRYCOLLECTION` or `MULTI*` field). Returns 1 for single geometries.

Pada MySQL, mengembalikan `None` untuk geometri tunggal.

## `NumPoints`

class `NumPoints`(expression, **extra)

Tersedia: MySQL, PostGIS, Oracle, SpatiaLite

Accepts a single geographic field or expression and returns the number of points in a geometry.

Pada MySQL, mengembalikan `None` untuk geometri bukan-`LINESTRING` apapun.

Changed in Django 1.11:

SpatiaLite mendukung untuk geometri bukan-`LINESTRING` telah ditambahkan.

## `Perimeter`

class `Perimeter`(expression, **extra)

Tersedia: PostGIS, Oracle, SpatiaLite

Accepts a single geographic field or expression and returns the perimeter of the geometry field as a `Distance` object.

## `PointOnSurface`

class `PointOnSurface`(expression, **extra)

Tersedia: PostGIS, Oracle, SpatiaLite

Accepts a single geographic field or expression and returns a `Point` geometry guaranteed to lie on the surface of the field; otherwise returns `None`.

## `Reverse`

class `Reverse`(expression, **extra)

Tersedia: PostGIS, Oracle, SpatiaLite

Accepts a single geographic field or expression and returns a geometry with reversed coordinates.

## `Scale`

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

Tersedia: PostGIS, SpatiaLite

Accepts a single geographic field or expression and returns a geometry with scaled coordinates by multiplying them with the `x`, `y`, and optionally `z` parameters.

## `SnapToGrid`

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

Tersedia: PostGIS, SpatiaLite

Accepts a single geographic field or expression and returns a geometry with all points snapped to the given grid. How the geometry is snapped to the grid depends on how many numeric (either float, integer, or long) arguments are given.

Jumlah Argumen | Deskripsi
--- | ---
1 | A single size to snap both the X and Y grids to.
2 | X and Y sizes to snap the grid to.
4 | X, Y sizes and the corresponding X, Y origins.

## `SymDifference`

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

Tersedia: MySQL (≥ 5.6.1), PostGIS, Oracle, SpatiaLite

Accepts two geographic fields or expressions and returns the geometric symmetric difference (union without the intersection) between the given parameters.

## `Transform`

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

Tersedia: PostGIS, Oracle, SpatiaLite

Accepts a geographic field or expression and a SRID integer code, and returns the transformed geometry to the spatial reference system specified by the `srid` parameter.

Catatan

What spatial reference system an integer SRID corresponds to may depend on the spatial database used. In other words, the SRID numbers used for Oracle are not necessarily the same as those used by PostGIS.

## `Translate`

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

Tersedia: PostGIS, SpatiaLite

Accepts a single geographic field or expression and returns a geometry with its coordinates offset by the `x`, `y`, and optionally `z` numeric parameters.

## `Union`

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

Tersedia: MySQL (≥ 5.6.1), PostGIS, Oracle, SpatiaLite

Menerima dua bidang geografi atau pernyataan dan mengembalikan gabungan dari kedua geometri.