# dokumentasi Django 2.2.9.dev20191202104323

# Fungsi Basisdata Geografis

Fungsi-fungsi terdokumentasi pada halaman ini mengizinkan pengguna mengakses fungsi basisdata geografis untuk digunakan dalam keterangan, pengumpulan, atau penyaringan dalam Django.

Contoh:

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

Tidak semua backend mendukung semua fungsi, jadi mengacu pada dokumentasi dari setiap fungsi untuk melihat jika backend basisdata anda mendukung anda ingin gunakan. Jika anda memanggil fungsi geografis pada backend yang tidak mendukung itu, anda akan mendapatkan pengecualian `NotImplementedError`.

Ringkasan fungsi:

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

## `Area`

class `Area`(expression, **extra)

Ketersediaan: MySQL, Oracle, PostGIS, SpatiaLite

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan kawasan bidang sebagai sebuah ukuran `Area`.

MySQL dan SpatiaLite tanpa LWGEOM tidak akan mendukung kawasan perhitungan pada geografis SRSes.

## `AsGeoJSON`

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

Ketersediaan: MySQL (≥ 5.7.5), PostGIS, SpatiaLite

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan perwakilan GeoJSON dari geometri. Catat bahwa hasil bukan struktur GeoJSON lengkap tetapi hanya isi kunci `geometry` dari struktur GeoJSON. Lihat juga 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.

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

## `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)

Ketersediaan: PostGIS, SpatiaLite (LWGEOM)

Mengembalikan azimut dalam radian dari segmen ditentukan oleh titik geometri yang diberikan, atau `None` jila dia titik bertemu. Azimut adalah sudut diacukan dari utara dan positif jarumg jam: utara = `0`; timur= `π/2`; selatan = `π`; barat = `3π/2`.

## `BoundingCircle`

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

Tersedia: PostGIS, Oracle

menerima bidang geografis tunggal atau pernyataan dan mengembalikan lingkaran poligon terkecil yang dapat sepenuhnya mengandung geometri.

Parameter `num_seg` hanya digunakan pada PostGIS.

## `Centroid`

class `Centroid`(expression, **extra)

Ketersediaan: MySQL, PostGIS, Oracle, SpatiaLite

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

## `Difference`

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

Ketersediaan: MySQL, 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)

Ketersediaan: MySQL, PostGIS, Oracle, SpatiaLite

Menerima dua bidang geografis atau pernyataan dan mengembalikan jarak diantara mereka, seperti sebuah obyek `Distance`, nilai float mentah dikembalikan ketika kordinat adalah geodetik.

Pada backend yang mendukung perhitungan jarak pada kordinat geodetik, fungsi backend sesuai otomatis dipilih tergantung pada nilai SRID dari geometri (misalnya ST_DistanceSphere pada 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)

Dalam contoh berikut, jarak dari kota Hobart ke semua selain queryset `PointField` dalam `AustraliaCity` dihitung:

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

Karena atibut `distance` adalah sebuah obyek `Distance`, anda dapat dengan menudah menyatakan nilai dalam satuan dari pilihan anda. Sebagai contoh, `city.distance.mi` adalah jarak dalam mil dan `city.distance.km` adalah nilai jarak dalam kilometer. Lihat Obyek Pengukuran untuk rincian penggunaan dan daftar dari Satuan Didukung.

## `Envelope`

class `Envelope`(expression, **extra)

Tersedia: MySQL, Oracle, PostGIS, SpatiaLite

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan geometri mewakili kotak batasan dari geometri.

Changed in Django 2.2:

Dukungan Oracle telah ditambahkan.

## `ForcePolygonCW`

class `ForcePolygonCW`(expression, **extra)

New in Django 2.1.

Ketersediaan: PostGIS, SpatiaLite

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan versi terubah dari poligon/banyak poligon dimana semua lingkaran eksterior diorientasikan searah jarum jam dan semua lingkaran interior berorientasikan berlawanan jarum jam. Geometri bukan-geometri dikembalikan tidak berubah.

## `ForceRHR`

class `ForceRHR`(expression, **extra)

Ditinggalkan sejak versi 2.1: Gunakan `ForcePolygonCW` sebagai gantinya.

Tersedia: PostGIS

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan versi terubah dari poligon/banyak poligon dimana semua simpul mengikuti aturan tangan-kanan.

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

## `Intersection`

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

Ketersediaan: MySQL, 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.

## `Length`

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

Ketersediaan: MySQL, Oracle, PostGIS, SpatiaLite

Menerima bidang linestring geografis tunggal atau banyak linestring atau pernyataan dan mengembalikan panjangnya sebagai ukuran `Distance`.

Pada PostGIS dan SpatiaLite, ketika kordinat adalah geodetik (siku), anda dapat menentukan jika perhitungan harus berdasarkan pada bidang sederhana (kurang akurat, kurang sumber-daya-intensif) atau pada sebuah bidang (lebih akurat, lebih sumber-daya-intensif) dengan argumen kata kunci `spheroid`.

MySQL tidak mendukung dukungan perhitungan panjang pada geografis SRS.

## `LineLocatePoint`

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

Ketersediaan: PostGIS, SpatiaLite

Mengembalikan sebuah float diantara 0 dan 1 mewakili tempat dari titik terdekat di `linestring` pada `point` yang diberikan, sebagai sebuah pecahan dari panjang garis 2D.

## `MakeValid`

class `MakeValid`(expr)

Tersedia: PostGIS, SpatiaLite (LWGEOM)

Menerima bidang geografis tunggal atau pernyataan dan berusaha merubah nilai menjadi geometri sah tanpakehilangan masukan simpul apapun. Geometri yang sudah sah dikembalikan tanpa perubahan. Poligon sederhana mungkin menjadi poligon banyak dan hasil mungkin berupa dimensi rendah daripada masukan.

## `MemSize`

class `MemSize`(expression, **extra)

Tersedia: PostGIS

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan ukuran memori (sejumlah byte) yang bidang geometri ambil.

## `NumGeometries`

class `NumGeometries`(expression, **extra)

Ketersediaan: MySQL, PostGIS, Oracle, SpatiaLite

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan sejumlah geometri jika bidang geometri adalah kumpulan (misalnya, bidang `GEOMETRYCOLLECTION` atau `MULTI*`). mengembalikan 1 untuk geometri tunggal.

Pada MySQL, mengembalikan `None` untuk geometri tunggal.

## `NumPoints`

class `NumPoints`(expression, **extra)

Ketersediaan: MySQL, PostGIS, Oracle, SpatiaLite

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan sejumlah titik dalam sebuah geometri.

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

## `Perimeter`

class `Perimeter`(expression, **extra)

Tersedia: PostGIS, Oracle, SpatiaLite

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan lingakran dari bidang geometri sebagai sebuah obyek `Distance`.

## `PointOnSurface`

class `PointOnSurface`(expression, **extra)

Tersedia: PostGIS, Oracle, SpatiaLite

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan `Point` geometri dijamin berbohong pada permukaan dari bidang; sebaliknya mengembalikan `None`.

## `Reverse`

class `Reverse`(expression, **extra)

Tersedia: PostGIS, Oracle, SpatiaLite

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan geometri dengan kordinat terbalik.

## `Scale`

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

Tersedia: PostGIS, SpatiaLite

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan geometri dengan kordinat ditingkatkan dengan mengalikan mereka dengan parameter `x`, `y`, dan pilihannya `z`.

## `SnapToGrid`

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

Tersedia: PostGIS, SpatiaLite

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan geometri dengan semua titik diambil pada jala yang diberikan. Bagaimana geometri diambil pada jala tergantung pada seberapa banyak argumen numerik (baik itu float, integer, atau long) diberikan.

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 | Ukuran X, Y dan berhubungan asli X,Y.

## `SymDifference`

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

Ketersediaan: MySQL, PostGIS, Oracle, SpatiaLite

Menerima dua bidang geografis atau pernyataan dan mengembalikan perbedaan simetrik geografis (penyatuan tanpa persimpangan) diantara parameter diberikan.

## `Transform`

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

Tersedia: PostGIS, Oracle, SpatiaLite

Menerima sebuah bidang geografis atau pernyataan dan kode integer SRID, dan mengembalikan geometri diubah ke sistem acuan spasial ditentukan oleh parameter `srid`.

Catatan

Apa sistem acuan spasial sebuah integer SRID berhubungan mungkin bergantung pada basisdata spasial yang digunakan. Dengan kata lain, angka SRID digunakan untuk Oracle tidak perlu sama seperti itu yang digunakan oleh PostGIS.

## `Translate`

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

Tersedia: PostGIS, SpatiaLite

Menerima bidang geografis tunggal atau pernyataan dan mengembalikan geometri dengan kordinat penyeimbangnya oleh parameter angka `x`, `y`, dan pilihannya `z`.

## `Union`

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

Ketersediaan: MySQL, PostGIS, Oracle, SpatiaLite

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