API GDAL

GDAL kepanjangan untuk Geospatial Data Abstraction Library, dan adalah sungguh "Swiss army knife" dari kegunaan data GIS. Sebuah bagian dari GDAL adalah OGR Simple Features Library, yang khusus dalam membaca dan menulis data geografis vektor dalam beragam bentuk standar.

GeoDjango menyediakan antarmuka python tingkat-tinggi untuk beberapa dari kemampuan dari OGR, termasuk membaca dan perubahan kordinat dari data spasial vektor dan dukungan minimal untuk fitur-fitur GDAL dengan sehubungan data (gambar) raster.

Catatan

Meskipun modul dinamakan gdal, GeoDjango hanya mendukung beberapa kemampuan dari OGR dan fitur-fitur raster GDAL saat ini.

Ikhtisar

Data Contoh

Alat GDAL/OGR digambarkan disini adalah dirancang untuk membantu anda membaca data geospasial anda, untuk kebanyakan mereka menjadi berguna anda harus memiliki beberapa data untuk bekerja. Jika anda sedang memulai dan tidak mempunyai data apapun dari anda sendiri untuk digunakan, percobaan GeoDjango mengandung sejumlah kumpulan data sederhana yang anda dapat gunakan untuk percobaan. Anda dapat mengunduh mereka disini:

$ wget https://raw.githubusercontent.com/django/django/master/tests/gis_tests/data/cities/cities.{shp,prj,shx,dbf}
$ wget https://raw.githubusercontent.com/django/django/master/tests/gis_tests/data/rasters/raster.tif

Vector Data Source Object

DataSource

DataSource adalah sebuah pembungkus untuk obyek sumber data OGR yang mendukung membaca data dari beragam dari bentuk berkas geospasial didukung-OGR dan sumber data menggunakan sederhana, konsisten antarmuka. Setiap sumber data diwakili oleh sebuah obyek DataSource yang mengandung satu atau lebih lapisan data. Setiap lapisan, diwakili oleh Layer object, mengandung beberapa nomor dari fitur-fitur geografik (Feature), informasi tentang jenis dari fitur-fitur mengandung di lapisan itu (misalnya titik, poligon, dll.), sama halnya nama-nama dan jenis-jenis dari bidang tambahan apapun (Field) dari data yang mungkin terhubung dengan setiap fitur di lapisan itu.

class DataSource(ds_input, encoding='utf-8')

Pembangun untuk DataSource hanya membutuhkan satu parameter: jalur dari berkas anda ingin baca. Bagaimanapun, OGR juga mendukung beragam sumber data lebih rumit, termasuk basisdata, yang mungkin diakses dengan melewatkan string nama khusus daripada jalur. Untuk informasi lebih, lihat dokumentasi OGR Vector Formats. Sifat name dari sebuah instance DataSource memberikan nama OGR dari sumber data pokok yang itu sedang gunakan.

Pilihan parameter encoding mengizinkan anda menentukan penyandian bukan-standar dari string di sumber. Ini khususnya berguna ketika anda mendapatkan pengecualian DjangoUnicodeDecodeError selagi membaca nilai bidang.

Sekali anda telah membuat DataSource anda, anda dapat menemukan seberapa banyak lapisan data itu kandung dengan mengakses sifat layer_count, atau (setara) dengan menggunakan fungsi len(). Untuk informasi pada mengakses lapisan dari data mereka sendiri, lihat bagian lain:

>>> from django.contrib.gis.gdal import DataSource
>>> ds = DataSource('/path/to/your/cities.shp')
>>> ds.name
'/path/to/your/cities.shp'
>>> ds.layer_count                  # This file only contains one layer
1
layer_count

Mengembalikan sejumlah lapisan di sumber data.

name

Mengembalikan nama dari sumber data.

Lapisan

class Layer

Layer adalah sebuah pembungkus untuk lapisan dari data di obyek DataSource. Anda tidak pernah membuat obyek Layer secara langsung. Sebagai gantinya, anda mengambil mereka dari obyek DataSource, yang pada dasarnya wadah standar Python dari obyek Layer. Sebagai contoh, anda dapat mengakses lapisan khusus dengan indeksnya (misalnya ds[0] untuk mengakses lapisan pertama), atau anda dapat mengulang terhadap semua lapisan di wadah dalam perulangan loop. Layer itu sendiri bertindak sebagai sebuah wadah untuk fitur-fitur geometris.

Khususnya, semua fitur di lapisan yang diberikan mempunyai jenis geometri sama. Sifat geom_type dari lapisan adalah sebuah OGRGeomType yang mencirikan jenis fitur. Kami dapat menggunakan itu untuk mencetak beberapa informasi dasar tentang setiap lapisan di DataSource:

>>> for layer in ds:
...     print('Layer "%s": %i %ss' % (layer.name, len(layer), layer.geom_type.name))
...
Layer "cities": 3 Points

Keluaran contoh adalah dari sumber data kota, dimuat diatas, yang ternyata mengandung satu lapisan, dipanggil "cities", yang mengandung tida titik fitur. Untuk kemudahan, contoh-contoh diatas menganggap bahwa anda telah menyimpan lapisan itu di variabel layer:

>>> layer = ds[0]
name

Mengembalikan nama lapisan ini di sumber data.

>>> layer.name
'cities'
num_feat

Mengembalikan sejumlah fitur-fitur di lapisan. Sama seperti len(layer):

>>> layer.num_feat
3
geom_type

Mengembalikan jenis geometri dari lapisan, sebagai sebuah obyek OGRGeomType:

>>> layer.geom_type.name
'Point'
num_fields

Mengembalikan sejumlah bidang di lapisan, yaitu sejumlah bidang dari data terhubung dengan setiap fitur di lapisan:

>>> layer.num_fields
4
fields

Mengembalikan daftar nama dari setiap bidang di lapisan ini:

>>> layer.fields
['Name', 'Population', 'Density', 'Created']

Mengembalikan daftar dari jenis-jenis data dari setiap bidang di lapisan ini. Ini adalah subkelas dari Field, diobrolkan dibawah:

>>> [ft.__name__ for ft in layer.field_types]
['OFTString', 'OFTReal', 'OFTReal', 'OFTDate']
field_widths

Mengembalikan daftar dari bidang maksimal untuk setiap bidang dalam lapisan ini:

>>> layer.field_widths
[80, 11, 24, 10]
field_precisions

Mengembalikan daftar dari angka ketelitian untuk setiap dari bidang-bidang dalam lapisan ini. Ini tidak berarti (dan disetel ke nol) untuk bidang bukan-numerik:

>>> layer.field_precisions
[0, 0, 15, 0]
extent

Mengembalikan tingkatan spasial dari lapisan ini, sebagai sebuah obyek Envelope:

>>> layer.extent.tuple
(-104.609252, 29.763374, -95.23506, 38.971823)
srs

Sifat yang mengembalikan SpatialReference terkait dengan lapisan ini:

>>> print(layer.srs)
GEOGCS["GCS_WGS_1984",
    DATUM["WGS_1984",
        SPHEROID["WGS_1984",6378137,298.257223563]],
    PRIMEM["Greenwich",0],
    UNIT["Degree",0.017453292519943295]]

Jika Layer tidak mempunyai informasi acuan spasial terkait dengan itu, `` None`` dikembalikan.

spatial_filter

Sifat mungkin digunakan untuk mengambil atau menyetel penyaring spasial untuk lapisan ini. Sebuah penyaring spasial hanya dapat disetel dengan sebuah instance OGRGeometry, sebuah perpanjangan 4-tuple, atau None. Ketika menyetel dengan sesuatu selain dari None, hanya fitur-fitur yang saling menyilang penyaring akan dikembalikan ketika memutar terhadap lapisan:

>>> print(layer.spatial_filter)
None
>>> print(len(layer))
3
>>> [feat.get('Name') for feat in layer]
['Pueblo', 'Lawrence', 'Houston']
>>> ks_extent = (-102.051, 36.99, -94.59, 40.00) # Extent for state of Kansas
>>> layer.spatial_filter = ks_extent
>>> len(layer)
1
>>> [feat.get('Name') for feat in layer]
['Lawrence']
>>> layer.spatial_filter = None
>>> len(layer)
3
get_fields()

Sebuah metode yang mengembalikan sebuah daftar dari nilai-nilai dari bidang yang diberikan untuk setiap fitur dalam lapisan:

>>> layer.get_fields('Name')
['Pueblo', 'Lawrence', 'Houston']
get_geoms(geos=False)

Sebuah metode yang mengembalikan sebuah list mengandung geometri dari setiap fitur dalam lapisan. Jika argumen pilihan geos disetel menjadi True kemudian geometri dirubah ke obyek GEOSGeometry. Sebaliknya, mereka dikembalikan sebagai obyek OGRGeometry:

>>> [pt.tuple for pt in layer.get_geoms()]
[(-104.609252, 38.255001), (-95.23506, 38.971823), (-95.363151, 29.763374)]
test_capability(capability)

Mengembalikan boolean menunjukkan apakah lapisan ini mendukung kemampuan yang diberikan (sebuah string). Contoh dari kemampuan sah termasuk: 'RandomRead', 'SequentialWrite', 'RandomWrite', 'FastSpatialFilter', 'FastFeatureCount', 'FastGetExtent', 'CreateField', 'Transactions', 'DeleteFeature', dan 'FastSetNextByIndex'.

Feature

class Feature

Feature membungkus fitur OGR. Anda tidak pernah membuat obyek Feature secara langsung. Sebagai gantinya, anda mengambil mereka dari obyek Layer. Setiap fitur terdiri dari sebuah geometri dan sekumpulan bidang mengandung sifat-sifat tambahan. Geometri dari sebuah bidang adalah dapat diakses melalui sifat geom nya, yang mengembalikan sebuah obyek OGRGeometry. Sebuah Feature berperilaku seperti wadah Python standar untuk bidangnya, yang itu dikembalikan sebagai obyek Field: anda dapat mengakses sebuah bidang secara langsung berdasarkan indeks atau namanya, atau dapat berulang terhadap bidang-bidang fitur, misalnya di sebuah perulangan for.

geom

Mengembalikan geometri untuk fotur ini, sebagai sebuah obyek OGRGeometry:

>>> city.geom.tuple
(-104.609252, 38.255001)
get

Sebuah metode yang mengembalikan nilai dari bidang yang diberikan (ditentukan oleh nama) untuk fitur ini, bukan sebuah obyek pembungkus Field:

>>> city.get('Population')
102121
geom_type

Mengembalikan jenis geometri untuk fitur ini, sebagai sebuah obyek OGRGeomType. Ini akan sama untuk semua fitur dalam lapisan yang diberikan dan setara pada sifat Layer.geom_type dari obyek Layer fitur berasal.

num_fields

Mengembalikan sejumlah bidang-bidang dari data terkait dengan fitur. Ini akan sama untuk semua fitur dalam lapisan yang diberikan dan setara pada sifat Layer.num_fields dari obyek Layer fitur berasal.

fields

Mengembalikan daftar dari nama-nama dari bidang data terkait dengan fitur. Ini akan sama untuk semua fitur dalam lapisan yang diberikan dan setara pada sifat Layer.fields dari fitur obyek Layer yang datang.

fid

Mengembalikan penciri fitur dalam lapisan:

>>> city.fid
0
layer_name

Mengembalikan nama dari Layer yang berasal fitur. Ini akan menjadi sama untuk semua fitur dalam lapisan yang diberikan:

>>> city.layer_name
'cities'
index

Sebuah metode yang mengembalikan indeks dari nama bidang yang diberikan. Ini akan sama untuk semua fitur-fitur dalam lapisan yang diberikan:

>>> city.index('Population')
1

Field

class Field
name

Mengembalikan nama dari bidang ini:

>>> city['Name'].name
'Name'
type

Mengembalikan jenis OGR dari bidang ini, sebagai sebuah integer. Dictionary FIELD_CLASSES memetakan nilai-nilai ini kedalam subkelas dari Field:

>>> city['Density'].type
2
type_name

Mengembalikan string dengan nama dari jenis data dari bidang ini:

>>> city['Name'].type_name
'String'
value

Mengembalikan nilai dari bidang ini. Kelas Field itu sendiri mengembalikan nilai sebagai sebuah string, tetapi setiap subkelas mengembalikan nilai dalam bentuk paling sesuai:

>>> city['Population'].value
102121
width

Mengembalikan lebar bidang ini:

>>> city['Name'].width
80
precision

Mengembalikan ketelitian numerik dari bidang ini. Ini tidak berarti (dan disetel ke nol) untuk bidang-bidang bukan-numerik:

>>> city['Density'].precision
15
as_double()

Mengembalikan nilai dari bidang sebagai double (float):

>>> city['Density'].as_double()
874.7
as_int()

Mengembalikan nilai dari bidang sebagai integer:

>>> city['Population'].as_int()
102121
as_string()

Mengembalikan nilai dari bidang sebagai deretan kalimat:

>>> city['Name'].as_string()
'Pueblo'
as_datetime()

Mengembalikan nilai dari bidang sebagai tuple dari komponen tanggal dan waktu:

>>> city['Created'].as_datetime()
(c_long(1999), c_long(5), c_long(23), c_long(0), c_long(0), c_long(0), c_long(0))

Driver

class Driver(dr_input)

Kelas Driver digunakan secara mendalam untuk membungkus sebuah driver DataSource OGR.

driver_count

Mengembalikan sejumlah driver vektor OGR saat ini terdaftar.

Geometri OGR

OGRGeometry

Obyek-obyek OGRGeometry berbagi fungsi mirip dengan obyek GEOSGeometry dan pembungkus tipis disekitar perwakilan geometri internal OGR. Dengan demikian, mereka mengizinkan untuk lebih efektid mengakses ke data ketika menggunakan DataSource. Tidak seprti pasangan GEOS nya, OGRGeometry mendukung sistem acuan spasial dan perubahan kordinat:

>>> from django.contrib.gis.gdal import OGRGeometry
>>> polygon = OGRGeometry('POLYGON((0 0, 5 0, 5 5, 0 5))')
class OGRGeometry(geom_input, srs=None)

Obyek ini adalah sebuah pembungkus untuk kelas OGR Geometry. Obyek-obyek ini diinstasiasikan secara langsung dari parameter geom_input yang diberikan, yang mungkin berupa string mengandung WKT, HEX, GeoJSON, sebuah buffer mengandung data WKB, atau sebuah obyek OGRGeomType. Obyek-obyek ini juga dikembalikan dari atribut Feature.geom, ketika membaca data vektor dari Layer (yaitu pada giliran bagian dari sebuah DataSource).

classmethod from_gml(gml_string)

Membangun sebuah OGRGeometry dari string GML yang diberikan.

classmethod from_bbox(bbox)

Membangun sebuah Polygon dari kotak-terikat diberikan (4-tuple).

__len__()

Mengembalikan sejumlah titik dalam sebuah LineString, sejumlah geometri dalam sebuah GeometryCollection. Tidak diberlakukan ke jenis geometri lain.

__iter__()

Perulangan terhadap titik-titik dalam sebuah LineString, lingkaran dalam Polygon, atau geometri dalam sebuah GeometryCollection. Tidak dapat diterapkan pada jenis-jenis geometri lain.

__getitem__()

Mengembalikan titik pada indeks yang ditentukan untuk LineString, lingkaran dalam pada indeks ditentukan untuk Polygon, atau geometri pada indeks ditentukan dalam sebuah GeometryCollection. Tidak dapat diberlakukan pada jenis-jenis geometri lain.

dimension

Mengembalikan sejumlah dimensi kordinat dari geometri, yaitu 0 untuk titik, 1 untuk baris, dan sebagainya:

>> polygon.dimension
2
coord_dim

mengembalikan atau menyetel dimensi kordinat dari geometri ini. Sebagai contoh, nilai akan berupa 2 untuk geometri dua-dimensi.

geom_count

Mengembalikan sejumlah unsur dalam geometri ini:

>>> polygon.geom_count
1
point_count

Mengembalikan sejumlah titik digunakan untuk menggambarkan geometri ini:

>>> polygon.point_count
4
num_points

Nama lain untuk point_count.

num_coords

Nama lain untuk point_count.

geom_type

Mengembalikan jenis dari geometri ini, sebagai sebuah obyek OGRGeomType.

geom_name

Mengembalikan nama dari jenis dari geometri ini:

>>> polygon.geom_name
'POLYGON'
area

Mengembalikan kawasan dari geometri ini, atau 0 untuk geometri yang tidak mengandung sebuah kawasan:

>>> polygon.area
25.0
envelope

Mengembalikan sampul dari geometri ini, sebagai sebuah obyek Envelope.

extent

Mengembalikan amplop dari geometri ini sebagai 4-tuple, sebagai ganti dari Envelope object:

>>> point.extent
(0.0, 0.0, 5.0, 5.0)
srs

Sifat ini mengendalikan acuan spasial untuk geometri ini, atau None jika tidak ada sisterm acuan spasia telah diberikan ke itu. Jika diberikan, mengakses sifat ini mengembalikan sebuah obyek SpatialReference. Itu mungkin disetel dengan obyek SpatialReference lain, atau masukan apapun yang SpatialReference terima. Contoh:

>>> city.geom.srs.name
'GCS_WGS_1984'
srid

Mengembalikan atau menyetel penciri acuan berhubungan pada SpatialReference dari geometri ini. Mengembalikan None jika tidak ada informasi acuan spasial terkait dengan geometri ini, atau jika sebuah SRID tidak dapat ditentukan.

geos

Mengebalikan obyek GEOSGeometry sesuai pada geometri ini.

gml

Mengembalikan sebuah string perwakilan dari geometri ini dalam bentuk GML:

>>> OGRGeometry('POINT(1 2)').gml
'<gml:Point><gml:coordinates>1,2</gml:coordinates></gml:Point>'
hex

Mengembalikan perwakilan string dari geometri ini dalam bentuk HEX WKB:

>>> OGRGeometry('POINT(1 2)').hex
'0101000000000000000000F03F0000000000000040'
json

Mengembalikan string perwakilan dari geometri ini dalam bentuk JSON:

>>> OGRGeometry('POINT(1 2)').json
'{ "type": "Point", "coordinates": [ 1.000000, 2.000000 ] }'
kml

Mengembalikan perwakilan string dari geometri ini dalam bentuk KML.

wkb_size

Mengembalikan ukuran dari penyangga WKB untuk menahan perwakilan WKB dari geometri ini:

>>> OGRGeometry('POINT(1 2)').wkb_size
21
wkb

Mengembalikan sebuah buffer mengandung perwakilan WKB dari geometri ini.

wkt

Mengembalikan perwakilan string dari geometri ini dalam bentuk WKT.

ewkt

Mengembalikan perwakilan EWKT dari geometri ini.

clone()

Mengembalikan klon baru OGRGeometry dari obyek geometri ini.

close_rings()

Jika ada lingkaran apapun dalam geometri ini yang belum ditutup, rutin ini akan melakukannya dengan menambahkan titik awalan ke akhiran:

>>> triangle = OGRGeometry('LINEARRING (0 0,0 1,1 0)')
>>> triangle.close_rings()
>>> triangle.wkt
'LINEARRING (0 0,0 1,1 0,0 0)'
transform(coord_trans, clone=False)

Merubah geometri ini menjadi sistem acuan spasial berbeda. Mungkin ambil obyek CoordTransform, sebuah obyek SpatialReference, atau masukan apapun yang diterima oleh SpatialReference (termasuk WKT acuan spasial dan string PROJ.4, atau integer SRID).

Secara awalan dikembalikan dan geometri dirubah di-tempat. Bagaimanapun, jika kata kunci clone disetel menjadi True kemudian kloningan dirubah dari geometri dikembalikan sebagai gantinya

intersects(other)

Mengembalikan True jika geometri ini memotong ke lain, sebaliknya mengembalikan False.

equals(other)

Mengembalikan True jika geometri ini setara dengan lain, sebaliknya mengembalikan True.

disjoint(other)

Mengembalikan True jka geometri ini secara spasial menguraikan ke (yaitu tidak bersimpangan) lain, sebaliknya mengembalikan False.

touches(other)

Mengembalikan True jika geometri ini menyentuh lainnya, sebaliknya mengembalikan False.

crosses(other)

Mengembalikan True jika geometri ini bersilangan ke lainnya, sebaliknya mengembalikan False.

within(other)

Mengembalikan True jika geometri ini mengandung dalam yang lain, sebaliknya mengembalikan False.

contains(other)

Mengembalikan True jika geometri ini mengandung yang lainnya, sebaliknya mengembalikan False.

overlaps(other)

Mengembalikan True jika geometri ini tumpang tindih yang lain, sebaliknya mengembalikan False.

boundary()

Batasan geometri ini , sebagai sebuah obyek OGRGeometry baru.

convex_hull

Poligon cembung terkecil yang megnandung geometri ini, sebagai sebuah obyek OGRGeometry baru.

difference()

Mengembalikan kawasan terdiri dari perbedaan dari geometri dan lainnya, seperti obyek OGRGeometry baru.

intersection()

Mengembalikan kawasan terdiri dari persimpangan dari geometri dan lainnya, seperti obyek OGRGeometry baru.

sym_difference()

Mengembalikan kawasan terdiri dari perbedaan simetris dari geometri dan lainnya, seperti obyek OGRGeometry baru.

union()

Mengembalikan kawasan terdiri dari penggabungan dari geometri dan lainnya, seperti obyek OGRGeometry baru.

tuple

Mengembalikan kordinat-kordinat dari titik geometri sebagai sebuah tuple, kordinat-kordinat dari baris geometri sebagai sebuah tuple dari tuple, dan sebagainya:

>>> OGRGeometry('POINT (1 2)').tuple
(1.0, 2.0)
>>> OGRGeometry('LINESTRING (1 2,3 4)').tuple
((1.0, 2.0), (3.0, 4.0))
coords

Sebuah nama lain untuk tuple.

class Point
x

Mengembalikan kordinat X dari titik ini:

>>> OGRGeometry('POINT (1 2)').x
1.0
y

Mengembalikan kordinat Y dari titik ini:

>>> OGRGeometry('POINT (1 2)').y
2.0
z

Mengembalikan kordinat Z pada titik ini, atau None jika titik tidak memiliki kordinat Z:

>>> OGRGeometry('POINT (1 2 3)').z
3.0
class LineString
x

Mengembalikan sebuah daftar dari kordinat X dalam baris ini:

>>> OGRGeometry('LINESTRING (1 2,3 4)').x
[1.0, 3.0]
y

Mengembalikan sebuah daftar dari kordinat Y dalam baris ini:

>>> OGRGeometry('LINESTRING (1 2,3 4)').y
[2.0, 4.0]
z

Mengembalikan list dari kordinat Z pada baris ini, atau None jika baris tidak memiliki kordinat Z:

>>> OGRGeometry('LINESTRING (1 2 3,4 5 6)').z
[3.0, 6.0]
class Polygon
shell

Mengembalikan cangkang atau eksterior lingkaran dari poligon ini, sebagai geometri LinearRing.

exterior_ring

Sebuah nama lain untuk shell.

centroid

Mengembalikan Point mewakili pust dari poligon ini.

class GeometryCollection
add(geom)

Menambah geometri ke kumpulan geometri. Tidak dapat diterapkan pada jenis geometri lain.

OGRGeomType

class OGRGeomType(type_input)

Kelas ini mengizinkan untuk gambaran dari jenis geometri OGR dalam beberapa cara:

>>> from django.contrib.gis.gdal import OGRGeomType
>>> gt1 = OGRGeomType(3)             # Using an integer for the type
>>> gt2 = OGRGeomType('Polygon')     # Using a string
>>> gt3 = OGRGeomType('POLYGON')     # It's case-insensitive
>>> print(gt1 == 3, gt1 == 'Polygon') # Equivalence works w/non-OGRGeomType objects
True True
name

Mengembalikan formulir string tangan-pendek dari jenis geometri OGR:

>>> gt1.name
'Polygon'
num

Mengembalikan sejumlah kaitan pada jenis geometri OGR:

>>> gt1.num
3
django

Mengembalikan jenis bidang Django (sebuah subkelas dari GeometryField) untuk digunakan menyimpan jenis OGR ini, atau None jika tidak ada jenis Django yang sesuai:

>>> gt1.django
'PolygonField'

Envelope

class Envelope(*args)

mewakili sebuah struktur Sampul OGR yang mengandung kordinat minimual dan maksimal X, Y untuk kotak pembatas empat persegi panjang. Penamaan dari variabel adalah cocok dengan struktur Sampul OGR C.

min_x

Nilai minimal kordinat X

min_y

Nilai maksimal kordinat X.

max_x

Nilai minimal kordinat Y.

max_y

Nilai maksimal kordinat Y.

ur

Kordinat atas-kanan, sebagai sebuah tuple.

ll

Kordinat kiri-bawah, sebagai sebuah tuple.

tuple

Sebuah tuple mewakili bungkus.

wkt

Sebuah string mewakili amplop ini sebagai poligon dalam bentuk WKT.

expand_to_include(*args)

Coordinate System Object

SpatialReference

class SpatialReference(srs_input)

Obyek acuan spasial diinisialisasikan pada srs_input diberikan, yang mungkin satu dari berikut:

  • OGC Well Known Text (WKT) (sebuah string)
  • Kode EPSG(integer atau string)
  • String PROJ.4
  • Sebuah string tulisan cepat untuk standar dikenal-baik ('WGS84', 'WGS72', 'NAD27', 'NAD83')

Contoh:

>>> wgs84 = SpatialReference('WGS84') # shorthand string
>>> wgs84 = SpatialReference(4326) # EPSG code
>>> wgs84 = SpatialReference('EPSG:4326') # EPSG string
>>> proj4 = '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs '
>>> wgs84 = SpatialReference(proj4) # PROJ.4 string
>>> wgs84 = SpatialReference("""GEOGCS["WGS 84",
DATUM["WGS_1984",
     SPHEROID["WGS 84",6378137,298.257223563,
         AUTHORITY["EPSG","7030"]],
     AUTHORITY["EPSG","6326"]],
 PRIMEM["Greenwich",0,
     AUTHORITY["EPSG","8901"]],
 UNIT["degree",0.01745329251994328,
     AUTHORITY["EPSG","9122"]],
 AUTHORITY["EPSG","4326"]]""") # OGC WKT
__getitem__(target)

Mengembalikan nilai dari node atribut string diberikan, None jika node tidak ada. Dapat juga mengambil sebuah tuple sebagai sebuah parameter, (sasaran anak), dimana anak adalah indeks dari atriut dalam WKT. Sebagai contoh:

>>> wkt = 'GEOGCS["WGS 84", DATUM["WGS_1984, ... AUTHORITY["EPSG","4326"]]')
>>> srs = SpatialReference(wkt) # could also use 'WGS84', or 4326
>>> print(srs['GEOGCS'])
WGS 84
>>> print(srs['DATUM'])
WGS_1984
>>> print(srs['AUTHORITY'])
EPSG
>>> print(srs['AUTHORITY', 1]) # The authority value
4326
>>> print(srs['TOWGS84', 4]) # the fourth value in this wkt
0
>>> print(srs['UNIT|AUTHORITY']) # For the units authority, have to use the pipe symbol.
EPSG
>>> print(srs['UNIT|AUTHORITY', 1]) # The authority value for the units
9122
attr_value(target, index=0)

Nilai atribut untuk node sasaran diberikan (misalnya 'PROJCS'). Kata kunci indeks menentukan sebuah indeks dari node anak untuk kembali.

auth_name(target)

Mengembalikan nama wewenang untuk node sasaran string yang diberikan.

auth_code(target)

Mengembalikan kode wewenang untuk node sasaran string yang diberikan.

clone()

Mengembalikan kloning dari obyek acuan spasial ini.

identify_epsg()

Metode ini memeriksa WKT dari SpatialReference ini dan akan menambahkan node-node wewenang EPSG dimana sebuah penciri EPSG dapat diterapkan.

from_esri()

Morphs this SpatialReference from ESRI's format to EPSG

to_esri()

Morphs this SpatialReference to ESRI's format.

validate()

Memeriksa untuk melihat jika acuan spasial diberikan adalah sah, jika tidak sebuah pengecualian akan dimunculkan.

import_epsg(epsg)

Impor acuan spasial dari kode EPSG.

import_proj(proj)

Impor acuan spasial dari string PROJ.4.

import_user_input(user_input)
import_wkt(wkt)

Impor acuan spasial dari WKT.

import_xml(xml)

Mengimpor acuan spasial dari XML.

name

Mengembalikan nama dari Spatial Reference ini.

srid

Mengembalikan SRID dari otoritas tingkat-tinggi, atau None jika tidak ditentukan.

linear_name

Mengambalikan nama dari satuan linear.

linear_units

Mengembalikan nilai dari satuan linear.

angular_name

Mengembalikan nama dari satuan sudut."

angular_units

Mengembalikan nilai dari satuan sudut.

units

Mengembalikan 2-tuple dari nilai satuan dan nama satuan dan akan otomatis menentukan apakah mengembalikan satuan segaris atau bersinggungan.

ellipsoid

Mengembalikan sebuah tuple dari parameter ellipsoid untuk acuan spasial ini: (sumbu semimajor, sumbu semiminor, dan kebalikan terbalik).

semi_major

Mengembalikan sumbu semi major dari ellipsoid untuk acuan spasial ini.

semi_minor

Mengembalikan sumbu semi minor dari ellipsoid untuk acuan spasial ini.

inverse_flattening

Mengembalikan kebalikan terbalik dari ellipsoid untuk acuan spasial ini.

geographic

Mengembalikan True jika acuan spasial ini adalah geografis (node akar adalah GEOGCS).

local

Mengembalikan True jika acuan spasial ini adalah lokal (node akar adalah LOCAL_CS).

projected

Mengembalikan True jika acuan spasial ini adalah sistem kordinat terproyeksi (node akar adalah PROJCS).

wkt

Mengembalikan perwakilan WKT dari acuan spasial ini.

pretty_wkt

Mengembalikan perwakilan 'pretty' dari WKT.

proj

Mengembalikan perwakilan PROJ.4 dari acuan spasial ini.

proj4

Nama lain untuk SpatialReference.proj.

xml

Mengembalikan perwakilan XML dari acuan spasial ini.

CoordTransform

class CoordTransform(source, target)

Mewakili sebuah perubahan bentuk sistem kordinat. Itu diinisialisasikan dengan dua SpatialReference, mewakili sumber dan sasaran sistem kordinat, masing-masing. Obyek-obyek ini harus digunakan ketika melakukan perubahan bentuk kordinat yang sama secara berulang pada geometri berbeda:

>>> ct = CoordTransform(SpatialReference('WGS84'), SpatialReference('NAD83'))
>>> for feat in layer:
...     geom = feat.geom # getting clone of feature geometry
...     geom.transform(ct) # transforming

Obyek Data Raster

GDALRaster

GDALRaster adalah pembungkus untuk obyek sumber raster GDAL yang mendukung membaca data dari beragam bentuk berkas geospasial didukung GDAL dan sumber data menggunakan antarmuka sederhana, konsisten. Setiap sumber data diwakilkan oleh obyek GDALRaster yang mengandung satu atau lebih lapisan dari pita data bernama. Setiap pita, diwakili oleh obyek GDALBand, mengandung data gambar bereferensi geo. Sebagai contoh, sebuah gambar RGB diwakili sebagai tiga pita: saru untuk merah, satu untuk hijau, dan satu untuk biru.

Catatan

Untuk data raster tidak ada perbedaan diantara instance raster dan sumber datanya. Tidak seperti obyek Geometri, obyek GDALRaster adalah selalu sumber data. Raster-raster sementara dapat di instantiasi dalam memori menggunakan driver yang berhubungan, tetapi mereka akan menjadi kelas sama seeprti sumber-sumber raster berdasarkan-berkas.

class GDALRaster(ds_input, write=False)

aPembangunan untuk GDALRaster menerima dua parameter. Parameter pertama menentukan sumber raster, dan parameter kedua ditentukan jika raster harus dibuka dalam suasana tulis. Untuk raster baru-dibuat, parameter kedua diabaikan dan raster baru selalu dibuat dalam suasana tulis.

Parameter pertama dapat mengambil tiga bentuk: string mewakili jalur berkas, dictionary dengan nilai-nilai menentukan raster baru, atau obyek byte mewakili berkas raster.

Jika masukan adalah jalur berkas, raster dibuka dari sana. Jika masukan adalah mentah dalam dictionary, parameter width, height, dan srid diwajibkan. Jika masukan adalah obyek byte, itu akan dibuka menggunakan sistem berkas maya GDAL.

Untuk gambaran rinci pada bagaimana membuat raster menggunakan masukan dictionary, lihat Membuat raster dari data. Untuk gambaran rinci pada bagaimana membuat raster-raster dalam sistem berkas maya, lihat Menggunakan Virtual Filesystem GDAL.

Contoh berikut menunjukkan bagaimana raster-raster dapat dibuat dari sumber masukan berbeda (menggunakan data contoh dari percobaan GeoDjango; lihat juga bagian Data Contoh).

>>> from django.contrib.gis.gdal import GDALRaster
>>> rst = GDALRaster('/path/to/your/raster.tif', write=False)
>>> rst.name
'/path/to/your/raster.tif'
>>> rst.width, rst.height  # This file has 163 x 174 pixels
(163, 174)
>>> rst = GDALRaster({  # Creates an in-memory raster
...     'srid': 4326,
...     'width': 4,
...     'height': 4,
...     'datatype': 1,
...     'bands': [{
...         'data': (2, 3),
...         'offset': (1, 1),
...         'size': (2, 2),
...         'shape': (2, 1),
...         'nodata_value': 5,
...     }]
... })
>>> rst.srs.srid
4326
>>> rst.width, rst.height
(4, 4)
>>> rst.bands[0].data()
array([[5, 5, 5, 5],
       [5, 2, 3, 5],
       [5, 2, 3, 5],
       [5, 5, 5, 5]], dtype=uint8)
>>> rst_file = open('/path/to/your/raster.tif', 'rb')
>>> rst_bytes = rst_file.read()
>>> rst = GDALRaster(rst_bytes)
>>> rst.is_vsi_based
True
>>> rst.name  # Stored in a random path in the vsimem filesystem.
'/vsimem/da300bdb-129d-49a8-b336-e410a9428dad'
Changed in Django 2.0:

Ditambahkan kemampuan membaca dan menulis raster dalam sistem berkas maya berdasarkan-memori GDAL. Obyek-obyek GDALRaster sekarang dapat dirubah menjadi dan dari data biner dalam-memori.

name

Nama dari sumber yang setara pada jalur berkas masukan atau nama disediakan ketika instansiasi.

>>> GDALRaster({'width': 10, 'height': 10, 'name': 'myraster', 'srid': 4326}).name
'myraster'
driver

Nama dari driver GDAL digunakan untuk menangani berkas masukan. Untuk GDALRaster dibuat dari berkas, jenis driver dikenali otomatis. Pembuatan dari raster dari goresan adalah taster dalam-memori secara awalan ('MEM'), tetapi dapat dirubah sesuai kebutuhan. Sebagai contoh, gunakan GTiff untuk berkas GeoTiff. Untuk daftar dari jenis-jenis berkas, lihat juga list GDAL Raster Formats.

Raster dalam-memori dibuat melalui contoh berikut:

>>> GDALRaster({'width': 10, 'height': 10, 'srid': 4326}).driver.name
'MEM'

Sebuah berkas berdasarkan raster GeoTiff dibuat melalui contoh berikut:

>>> import tempfile
>>> rstfile = tempfile.NamedTemporaryFile(suffix='.tif')
>>> rst = GDALRaster({'driver': 'GTiff', 'name': rstfile.name, 'srid': 4326,
...                   'width': 255, 'height': 255, 'nr_of_bands': 1})
>>> rst.name
'/tmp/tmp7x9H4J.tif'           # The exact filename will be different on your computer
>>> rst.driver.name
'GTiff'
width

Lebar dari sumber dalam pixel (sumbu-X).

>>> GDALRaster({'width': 10, 'height': 20, 'srid': 4326}).width
10
height

Lebar dari sumber dalam pixel (sumbu-Y).

>>> GDALRaster({'width': 10, 'height': 20, 'srid': 4326}).height
20
srs

Sistem acuan spasial dari raster, seperti instance SpatialReference. SRS dapat dirubah dengan merubah itu ke SpatialReference lain atau menyediakan masukan apapun yang diterima oleh pembangun SpatialReference.

>>> rst = GDALRaster({'width': 10, 'height': 20, 'srid': 4326})
>>> rst.srs.srid
4326
>>> rst.srs = 3086
>>> rst.srs.srid
3086
srid

Spatial Reference System Identifier (SRID) dari raster. Sifat ini adalah jalan pintas untuk mendapatkan atau menyetel SRID melalui atribut srs.

>>> rst = GDALRaster({'width': 10, 'height': 20, 'srid': 4326})
>>> rst.srid
4326
>>> rst.srid = 3086
>>> rst.srid
3086
>>> rst.srs.srid  # This is equivalent
3086
geotransform

Matriks perubahan affine digunakan untuk pengacuan geo sumber, sebagai sebuah tuple dari enam koefisien yang memetakan kordinat pixel/baris menjadi ruang acuan geo menggunakan hubungan berikut:

Xgeo = GT(0) + Xpixel*GT(1) + Yline*GT(2)
Ygeo = GT(3) + Xpixel*GT(4) + Yline*GT(5)

Nilai-nilai sama dapat diambil dengan mengakses sifat attr:origin (indeks 0 dan 3), scale (indeks 1 dan 5) dan skew (indeks 2 dan 4).

Awalnya adalah [0.0, 1.0, 0.0, 0.0, 0.0, -1.0].

>>> rst = GDALRaster({'width': 10, 'height': 20, 'srid': 4326})
>>> rst.geotransform
[0.0, 1.0, 0.0, 0.0, 0.0, -1.0]
origin

Kordinat-kordinat dari kiri atas asli dari raster dalam sistem acuan spasial dari sumber, sebagai sebuah obyek titik dengan anggota x dn y.

>>> rst = GDALRaster({'width': 10, 'height': 20, 'srid': 4326})
>>> rst.origin
[0.0, 0.0]
>>> rst.origin.x = 1
>>> rst.origin
[1.0, 0.0]
scale

Lebar dan tinggi pixel digunakan untuk pengacuan geo raster, sebagai sebuah obyek titik dengan anggota x dan y. Lihat geotransform untuk informasi lebih.

>>> rst = GDALRaster({'width': 10, 'height': 20, 'srid': 4326})
>>> rst.scale
[1.0, -1.0]
>>> rst.scale.x = 2
>>> rst.scale
[2.0, -1.0]
skew

Koefisien tidak simetris digunakan untuk pengacuan geo raster, sebagai sebuah obyek titik dengan anggota x dan y. Dalam kasus gambar ke utara, koefisien ini keduanya 0.

>>> rst = GDALRaster({'width': 10, 'height': 20, 'srid': 4326})
>>> rst.skew
[0.0, 0.0]
>>> rst.skew.x = 3
>>> rst.skew
[3.0, 0.0]
extent

Perpanjang (nilai-nilai batasan) dari sumber raster, sebagai sebuah 4-tuple (xmin, ymin, xmax, ymax) dalam sistem acuan spasial dari sumber.

>>> rst = GDALRaster({'width': 10, 'height': 20, 'srid': 4326})
>>> rst.extent
(0.0, -20.0, 10.0, 0.0)
>>> rst.origin.x = 100
>>> rst.extent
(100.0, -20.0, 110.0, 0.0)
bands

Daftar pita dari sumber, seperti contoh GDALBand.

>>> rst = GDALRaster({"width": 1, "height": 2, 'srid': 4326,
...                   "bands": [{"data": [0, 1]}, {"data": [2, 3]}]})
>>> len(rst.bands)
2
>>> rst.bands[1].data()
array([[ 2.,  3.]], dtype=float32)
warp(ds_input, resampling='NearestNeighbour', max_error=0.0)

Mengembalikan versi melengkung dari raster ini.

Parameter pelengkungan dapat ditentukan melalui argumen ds_input. Penggunaan ds_input sejalan pada argumen berhubungan dari pembangun kelas. Itu adalah sebuah dictionary dengan karakteristik dari sasaran raster. Nilai-nilai kunci dictionary yang diizinkan adalah lebar, tinggi, SRID, asli, skala, kemiringan, jenis data, driver, dan nama (nama berkas).

Secara awalan, fungsi melengkung menjaga kebanyakan parameter setara pada nilai-nilai dari raster sumber asli, jadi hanya parameter yang harus dirubah butuh ditentukan. Catat bahwa ini termasuk driver, jadi untuk raster berdasarkan berkas fungsi melengkung akan membuat raster baru pada cakram.

Parameter yang hanya disetel berbeda dari raster sumber adalah nama. Nilai awalan dari nama raster adalah nama dari sumber raster ditambahkan dengan '_copy' + source_driver_name. Untuk raster berdasarkan-berkas itu dianjurkan untuk menyediakan jalur berkas dari raster sasaran.

Algoritma contoh ulang digunakan untuk melengkungkan dapat ditentukan dengan argumen resampling. Awalan adalah NearestNeighbor, dan nilai lainnya diizinkan adalah Bilinear, Cubic, CubicSpline, Lanczos, Average, dan Mode.

Argumen max_error dapat digunakan untuk menentukan kesalahan maksimal diukur dalam masukan pixel yang diizinkan dalam mendekati perubahan. Awalan adalah 0.0 untuk perhitungan tepat.

Untuk pengguna akrab dengan GDAL, fungsi ini mempunyai fungsionalitas mirip pada kegunaan baris-perintah gdalwarp.

Sebagai contoh, fungsi pembungkus dapat digunakan untuk mengumpulkan raster untuk menggandakan dari skala pixel aslinya.

>>> rst = GDALRaster({
...     "width": 6, "height": 6, "srid": 3086,
...     "origin": [500000, 400000],
...     "scale": [100, -100],
...     "bands": [{"data": range(36), "nodata_value": 99}]
... })
>>> target = rst.warp({"scale": [200, -200], "width": 3, "height": 3})
>>> target.bands[0].data()
array([[  7.,   9.,  11.],
       [ 19.,  21.,  23.],
       [ 31.,  33.,  35.]], dtype=float32)
transform(srid, driver=None, name=None, resampling='NearestNeighbour', max_error=0.0)

Mengembalikan versi dirubah dari raster ini dengan SRID ditentukan.

Fungsi ini merubah raster saat ini mejadi sistem acuan spasial baru yang dapat ditentukan dengan sebah srid. Itu menghitung batasan dan skala dari raster saat ini dalam sistem acuan spasial baru dan memlengkungkan raster menggunakan fungsi warp.

Secara awalan, driver dari sumber raster digunakan dan nama dari raster adalah nama asli ditambahkan dengan '_copy' + source_driver_name. Sebuah driver berbeda dapat ditentukan dengan argumen driver dan name.

Algoritma contoh ulang adalah NearestNeighbour tetapi dapat dirubah menggunakan argumen resmpling. Maksimal kesalahan awalan diizinkan untuk contoh ulang adalah 0.0 dan dapat dirubah menggunakan argumen max_error. Obrolkan dokumen warp untuk rincian pada argumen-argumen tersebut.

>>> rst = GDALRaster({
...     "width": 6, "height": 6, "srid": 3086,
...     "origin": [500000, 400000],
...     "scale": [100, -100],
...     "bands": [{"data": range(36), "nodata_value": 99}]
... })
>>> target = rst.transform(4326)
>>> target.origin
[-82.98492744885776, 27.601924753080144]
info
New in Django 2.0:

Mengembalikan string dengan ringkasan dari raster. Ini setara pada kegunaan baris perintah gdalinfo.

metadata
New in Django 2.0:

Metadata dari raster ini, diwakili sebagai dictionary bersarang. Kunci tingkat-pertama adalah ranah metadata. Tingkat-kedua mengandung barang metadata dan nilai dari setiap ranah.

Untuk menyetel atau memperbaharui barang metadata, lewatkan barang metadata berhubungan ke metode menggunakan struktur bersarang digambarkan diatas. Hanya kunci-kunci yang dalam dictionary ditentukan adalah diperbaharui; sisa dari metadata tetap tidak berubah.

Untuk memindahkan barang metadata, gunakan None sebagai nilai metadata.

>>> rst = GDALRaster({'width': 10, 'height': 20, 'srid': 4326})
>>> rst.metadata
{}
>>> rst.metadata = {'DEFAULT': {'OWNER': 'Django', 'VERSION': '1.0'}}
>>> rst.metadata
{'DEFAULT': {'OWNER': 'Django', 'VERSION': '1.0'}}
>>> rst.metadata = {'DEFAULT': {'OWNER': None, 'VERSION': '2.0'}}
>>> rst.metadata
{'DEFAULT': {'VERSION': '2.0'}}
vsi_buffer
New in Django 2.0:

Sebuah bytes perwakilan dari raster ini. Mengembalikan None untuk raster-raster yang tidak disimpan dalam sistem berkas maya GDAL.

is_vsi_based
New in Django 2.0:

Sebuah boolean menunjukkan jika raster ini disimpan dalam sistem berkas maya GDAL.

GDALBand

class GDALBand

Instance-instance GDALBand tidak dibuat tegas, tetapi daripada mengambil dari obyek GDALRaster, melalui atribut bands nya. GDALBand mengandung nilai pixel sebenarnya dari raster.

description

Nama dari gambaran dari pita, jika ada.

width

Lebar dari pita dalam pixel (sumbu-X).

height

Lebar dari pita dalam pixel (sumbu-Y).

pixel_count

Jumlah angka dari pixel dalam pita ini. Adalah setara pada width * height.

statistics(refresh=False, approximate=False)

Menghitung statistik pada nilai pixel dari pita ini. Nilai kembalian adalah sebuah tuple diikuti struktur berikut: (minimum, maximum, mean, standard deviation).

Jika argumen approximate disetel menjadi True, statistik mungkin dihitung berdasarkan pada tinjauan atau subset dari ubin-ubin gambar.

Jika argumen refresh disetel menjadi True, statistik akan dihitung dari data langsung, dan cache akan diperbaharui dengan hasil.

Jika nilai cache tetap ditemukan, nilai itu dikembalikan. Untuk bentuk raster menggunakan layanan Persistent Auxiliary Metadata (PAM), statistik mungkin di cache dalam berkas bantu. Dalam beberapa kasus metadata ini mungkin diluar sinkronisasi dengan nilai pixel atau menyebabkan nilai dari panggilan sebelumnya dikembalikan yang tidak mencerminkan nilai dari argumen approximate. Dalam kasus itu, gunakan argumen resfresh untuk mendapatkan nilai pembaharuan dan menyimpan mereka dalam cache.

Untuk pita kosong (dimana semua nilai pixel adalah "no data"), semua statistik dikembalikan sebagai None.

Statistik dapat juga diambil langsung dengan mengakses milik min, max, mean, dan std.

min

Nilai pixel minimal dari pita (tidak termasuk nilai "no data").

max

Nilai pixel maksimal dari pita (tidak termasuk nilai "no data").

mean

Arti dari semua nilai-nilai pixel dari pita (tidak termasuk nilai "no data").

std

Penyimpangan standar dari semua nilai pixel dari pita (tidak termasuk nilai "no data").

nodata_value

Nilai "no data" untuk pita umumnya penanda khusus nilai digunakan untuk menandai pixel yang bukan data sah. Pixel tersebut harus umtumnya jangan ditampilkan, ataupun membantu menganalisa tindakan-tindakan.

Untuk menghapus nilai "no data" yang ada, setel sifat ini menjadi None (membutuhkan GDAL ≥ 2.1).

datatype(as_string=False)

Jenis data terkandung dalam pita, sebagai ketetapan integer diantara 0 (Tidak diketahui) dan 11. Jika as_string adalah True, jenis data dikembalikan sebagai string dengan nilai-nilai kemungkinan sebagai berikut: GDT_Unknown, GDT_Byte, GDT_UInt16, GDT_Int16, GDT_UInt32, GDT_Int32, GDT_Float32, GDT_Float64, GDT_CInt16, GDT_CInt32, GDT_CFloat32, dan GDT_CFloat64.

color_interp(as_string=False)
New in Django 2.0:

Tafsiran warna untuk pita, sebagai integer diantara 0 dan 16. Jika as_string adlah True, jenis data dikembalikan sebagai string dengan nilai kemungkinan berikut: GCI_Undefined, GCI_GrayIndex, GCI_PaletteIndex, GCI_RedBand, GCI_GreenBand, GCI_BlueBand, GCI_AlphaBand, GCI_HueBand, GCI_SaturationBand, GCI_LightnessBand, GCI_CyanBand, GCI_MagentaBand, GCI_YellowBand, GCI_BlackBand, GCI_YCbCr_YBand, GCI_YCbCr_CbBand, dan GCI_YCbCr_CrBand. GCI_YCbCr_CrBand juga mewakili GCI_Max karena keduanya berhubungan pada integer 16, tetapi hanya GCI_YCbCr_CrBand dikembalikan sebagai string.

data(data=None, offset=None, size=None, shape=None)

Pengakses ke nilai-nilai pexel dari GDALBand. Mengembalikan larik data lengkap jika tidak ada parameter disediakan. Sebuah subset dari larik pixel dapat diminta dengan menentukan sebuah penyeimbang dan ukuran blok sebagai tuple.

Jika NumPy tersedia, data dikembalikan sebagai larik NumPy. Untuk alasan penampilan, sangat dianjurkan menggunakan NumPy.

Data ditulis pada GDALBand jika parameter data disediakan. Masukan dapat berupa satu dari jenis-jenis berikut - string paket, buffer, list, senarai, dan senarai NumPy. Jumlah barang-barang dalam masukan harus biasanya menanggapi pada jumlah angka dari pixel dalam pita, atau pada angka pixel untuk blok khusus dari nilai pixel jika parameter offset dan size disediakan.

Jika sejumlah barang dalam masukan berbeda dari ssaran blok pixel, parameter shape harus ditentukan. Shape adalah tuple yang menentukan lebar dan tinggi dari masukan data dalam pixel. Data kemudian direplikasi untuk memperbaharui nilai dari blok terpilih. Ini sangat berguna untuk mengisi seluruh pita dengan nilai tunggal, sebagai contoh.

Sebagai contoh:

>>> rst = GDALRaster({'width': 4, 'height': 4, 'srid': 4326, 'datatype': 1, 'nr_of_bands': 1})
>>> bnd = rst.bands[0]
>>> bnd.data(range(16))
>>> bnd.data()
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]], dtype=int8)
>>> bnd.data(offset=(1, 1), size=(2, 2))
array([[ 5,  6],
       [ 9, 10]], dtype=int8)
>>> bnd.data(data=[-1, -2, -3, -4], offset=(1, 1), size=(2, 2))
>>> bnd.data()
array([[ 0,  1,  2,  3],
       [ 4, -1, -2,  7],
       [ 8, -3, -4, 11],
       [12, 13, 14, 15]], dtype=int8)
>>> bnd.data(data='\x9d\xa8\xb3\xbe', offset=(1, 1), size=(2, 2))
>>> bnd.data()
array([[  0,   1,   2,   3],
       [  4, -99, -88,   7],
       [  8, -77, -66,  11],
       [ 12,  13,  14,  15]], dtype=int8)
>>> bnd.data([1], shape=(1, 1))
>>> bnd.data()
array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1]], dtype=uint8)
>>> bnd.data(range(4), shape=(1, 4))
array([[0, 0, 0, 0],
       [1, 1, 1, 1],
       [2, 2, 2, 2],
       [3, 3, 3, 3]], dtype=uint8)
metadata
New in Django 2.0:

Metadata dari pita ini. Kegunaannya mirip pada GDALRaster.metadata.

Membuat raster dari data

Bagian ini menggambarkan bagaimana membuat raster dari goresan menggunakan parameter ds_input.

Raster baru dibuat ketika dict dilewatkan pada pembangun GDALRaster. Dictionary mengandung menentukan parameter dari raster baru, seperti aslinnya, ukuran, atau sistem acuan spasial. Dictionary dapat juga mengandung data pixel dan informasi mengenai bentuk dari raster baru. Raster dihasilkan dapat karena itu berupa berdasarkan-berkas atau berdasarkan-memori, tergantung pada driver yang ditentukan.

Tidak ada standar untuk menggambarkan data raster dalam dictionary atau rasa JSON. Pengertian dari masukan dictionary pada kelas GDALRaster adalah karena itu khusus pada Django. Itu terinspirasi oleh bentuk geojson, tetapi standar geojson saat ini terbatas pada bentuk vektor.

Contoh-contoh dari menggunakan kunci berbeda ketika membuat raster dapat ditemukan dalam dokumentasi dari atribut berhubungan dan metode-metode dari kelas-kelas GDALRaster dan GDALBand.

Kamus ds_input

Hanya sedikit kunci dibutuhkan dalam dictionary ds_input untuk membuat raster: width, height, dan srid. Semua parameter lain memiliki nilai awalan (lihat tabel dibawah). Daftar dari kunci yang dapat dilewatkan dalam dictionary ds_input sangat dekat terkait tetapi bukan mirip pada sifat GDALRaster. Banyak dari parameter dipetakan secara langsung ke sifat tersebut; lainnya digambarkan dibawah.

Tabel berikut menggambarkan semua kunci yang dapat disetel dalam dictionary ds_input.

Kunci Awalan Penggunaan
srid diwajibkan Dipetakan ke atribut srid
width diwajibkan Dipetakan ke atribut width
height diwajibkan Dipetakan ke atribut height
driver MEM Dipetakan ke atribut driver
name '' Lihat dibawah
origin 0 Dipetakan ke atribut origin
scale 0 Dipetakan ke atribut scale
skew 0 Dipetakan ke atribut width
bands [] Lihat dibawah
nr_of_bands 0 Lihat dibawah
datatype 6 Lihat dibawah
papsz_options {} Lihat dibawah
name

Strung mewakili nama dari raster. ketika membuat raster berdasarkan-berkas, parameter ini harus berupa jalur berkas untuk raster baru. jika nama dimulai dengan /vsimem/, raster dibuat dalam sistem berkas maya GDAL.

datatype

Integer mewakili jenis data untuk semua pita. Awalan pada 6 (Float32). Semua pita dari raster baru diwajibkan memiliki jenis data sama. Pemetaan nilai adalah:

Nilai Jenis Piksel GDAL Deskripsi
1 GDT_Byte Delapan bit integer tidak bertanda
2 GDT_UInt16 Enam belas bit integer tidak bertanda
3 GDT_Int16 Enam belas bit integer bertanda
4 GDT_UInt32 Tiga-puluh-dua bit integer tidak bertanda
5 GDT_Int32 Tiga-puluh-dua bit integer bertanda
6 GDT_Float32 Tiga-puluh-dua bit floating point
7 GDT_Float64 Enam-puluh bit floating point
nr_of_bands

Integer mewakilkan angka dari pita dari raster. Sebuah raster dapat dibuat tanpa melewati data pita ketika pembuatan. Jika angka dari pita tidak ditentukan, itu otomatis dihitung dari panjang dari masukan band. Angka dari pita tidak dapat dirubah setelah pembuatan.

bands

Sebuah list dari dictionary band_input dengan data masukan pita. Indeks hasil pita adalah sama seperti dalam list yang disediakan. Pengertian dari dictionary masukan pita diberikan dibawah. Jika data pita tidak disediakan, nilai pita raster diinstansiasikan sebagai sebuah larik nol dan nilai "no data" disetel menjadi None.

papsz_options
New in Django 2.0:

Sebuah dictionary dengan pilihan pembuatan raster. Pasangan kunci-nilai dari masukan dictionary dilewatkan ke driver pada pembuatan dari raster.

Pilihan-pilihan tersedia adalah driver-khusus dan digambarkan dalam dokumentasi dari setiap driver.

Nilai-nilai dalam dictianry bukan sensitif-kasus dan otomatis dirubah ke bentuk string benar ketika pembuatan.

Contoh berikut menggunakan beberapa pilihan tersedia untuk GTiff driver. hasil dipampatkan ditandai raster byte dengan skema ubin internal. Ubin-ubin internal mempunyai ukuran blok dari 23 byte oleh 23:

>>> GDALRaster({
...    'driver': 'GTiff',
...    'name': '/path/to/new/file.tif',
...    'srid': 4326,
...    'width': 255,
...    'height': 255,
...    'nr_of_bands': 1,
...    'papsz_options': {
...        'compress': 'packbits',
...        'pixeltype': 'signedbyte',
...        'tiled': 'yes',
...        'blockxsize': 23,
...        'blockysize': 23,
...    }
... })

Kamus band_input

Kunci bands dalam dictionary ds_input adalah daftar dari dictionary band_input. Setiap dictionary band_input dapat mengandung nilai-nilai pixel dan nilai "no data" untuk disetel pada pita dari raster baru. Larik data dapat memiliki ukuran penuh dari raster baru atau lebih kecil. Untuk larik yang paling kecil dari raster penuh, Kunci-kunci size, shape, dan offset mengendalikan nilai pixel. Kunci-kunci berhubungan dilewatkan ke metode data(). Kegunaan mereka sama seperti mengatur data pita dengan metode itu. Tabel berikut menggambarkan kunci-kunci yang dapat digunakan.

Kunci Awalan Penggunaan
nodata_value None Dipetakan ke atribut nodata_value
data Sama seperti nodata_value atau 0 Dilewatkan ke metode data()
size (with, height) dari raster Dilewatkan ke metode data()
shape Sama seperti ukuran Dilewatkan ke metode data()
offset (0, 0) Dilewatkan ke metode data()

Menggunakan Virtual Filesystem GDAL

GDAL mempunyai berkas sistem berdasarkan-memori dalam, yang mengizinkan memberlakukan blok-blok dari memori sebagai berkas. Itu dapat digunakan untuk membaca dan menulis obyek GDALRaster pada dan dari penyangga berkas biner.

Ini berguna dalam konteks jaringan dimana raster-raster mungkin diambil sebagai penyangga dari penyimpanan terpencil atau dikembalikan dari sebuah tampilan tanpa sedang ditulis ke cakram.

Obyek-obyek GDALRaster dibuat dalam sistem berkas maya ketika sebuah obyek bytes disediakan sebagai masukan, atau ketika jalur berkas dimulai dengan /vsimem/.

Masukan disediakan sebagai bytes harus menjadi perwakilan biner penuh dari berkas. Sebagai contoh:

# Read a raster as a file object from a remote source.
>>> from urllib.request import urlopen
>>> dat = urlopen('http://example.com/raster.tif').read()
# Instantiate a raster from the bytes object.
>>> rst = GDALRaster(dat)
# The name starts with /vsimem/, indicating that the raster lives in the
# virtual filesystem.
>>> rst.name
'/vsimem/da300bdb-129d-49a8-b336-e410a9428dad'

Untuk membuat raster berdasarkan-berkas maya dari goresan, gunakan perwakilan dictionary ds_input dan sediakan argumen name yang dimulai dengan /vsimem/ (untuk rincian dari perwakilan dictionary, lihat Membuat raster dari data). Untuk raster berdasarkan-berkas maya, atribut vsi_buffer mengembalikan perwakilan bytes dari raster.

Ini adalah bagaimana membuat raster dan mengembalikan itu sebaagi berkas dalam sebuah HttpResponse:

>>> from django.http import HttpResponse
>>> rst = GDALRaster({
...     'name': '/vsimem/temporarymemfile',
...     'driver': 'tif',
...     'width': 6, 'height': 6, 'srid': 3086,
...     'origin': [500000, 400000],
...     'scale': [100, -100],
...     'bands': [{'data': range(36), 'nodata_value': 99}]
... })
>>> HttpResponse(rast.vsi_buffer, 'image/tiff')

Pengaturan

GDAL_LIBRARY_PATH

Sebuah string nenentukan tempat dari pustaka GDAL. Khususnya, pengaturan ini hanya digunakan jika pustaka GDAL adalah dalam tempat bukan-standar (misalnya, /home/john/lib/libgdal.so).

Pengecualian

exception GDALException

Pengecualian GDAL dasar, menunjukkan kesalahan terkait-GDAL.

exception SRSException

Sebuah pengecualian dimunculkan ketika kesalahan muncul ketika membangun atau menggunakan obyek sistem acuan spasial.

Back to Top