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.
The GDAL/OGR tools described here are designed to help you read in your geospatial data, in order for most of them to be useful you have to have some data to work with. If you're starting out and don't yet have any data of your own to use, GeoDjango tests contain a number of data sets that you can use for testing. You can download them here:
$ wget https://raw.githubusercontent.com/django/django/main/tests/gis_tests/data/cities/cities.{shp,prj,shx,dbf}
$ wget https://raw.githubusercontent.com/django/django/main/tests/gis_tests/data/rasters/raster.tif
DataSource
¶DataSource
is a wrapper for the OGR data source object that
supports reading data from a variety of OGR-supported geospatial file
formats and data sources using a consistent interface. Each
data source is represented by a DataSource
object which contains
one or more layers of data. Each layer, represented by a Layer
object, contains some number of geographic features (Feature
),
information about the type of features contained in that layer (e.g.
points, polygons, etc.), as well as the names and types of any
additional fields (Field
) of data that may be associated with
each feature in that layer.
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.
Once you've created your DataSource
, you can find out how many layers
of data it contains by accessing the layer_count
property, or
(equivalently) by using the len()
function. For information on
accessing the layers of data themselves, see the next section:
>>> 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
¶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.
Typically, all the features in a given layer have the same geometry type.
The geom_type
property of a layer is an OGRGeomType
that
identifies the feature type. We can use it to print out some basic
information about each layer in a DataSource
:
>>> for layer in ds:
... print('Layer "%s": %i %ss' % (layer.name, len(layer), layer.geom_type.name))
...
Layer "cities": 3 Points
The example output is from the cities data source, loaded above, which
evidently contains one layer, called "cities"
, which contains three
point features. For simplicity, the examples below assume that you've
stored that layer in the variable layer
:
>>> layer = ds[0]
name
¶Mengembalikan nama lapisan ini di sumber data.
>>> layer.name
'cities'
num_feat
¶Returns the number of features in the layer. Same as len(layer)
:
>>> layer.num_feat
3
geom_type
¶Returns the geometry type of the layer, as an OGRGeomType
object:
>>> layer.geom_type.name
'Point'
num_fields
¶Returns the number of fields in the layer, i.e the number of fields of data associated with each feature in the layer:
>>> layer.num_fields
4
fields
¶Returns a list of the names of each of the fields in this layer:
>>> layer.fields
['Name', 'Population', 'Density', 'Created']
Returns a list of the data types of each of the fields in this layer. These
are subclasses of Field
, discussed below:
>>> [ft.__name__ for ft in layer.field_types]
['OFTString', 'OFTReal', 'OFTReal', 'OFTDate']
field_widths
¶Returns a list of the maximum field widths for each of the fields in this layer:
>>> layer.field_widths
[80, 11, 24, 10]
field_precisions
¶Returns a list of the numeric precisions for each of the fields in this layer. This is meaningless (and set to zero) for non-numeric fields:
>>> layer.field_precisions
[0, 0, 15, 0]
extent
¶Returns the spatial extent of this layer, as an Envelope
object:
>>> layer.extent.tuple
(-104.609252, 29.763374, -95.23506, 38.971823)
srs
¶Property that returns the SpatialReference
associated with this
layer:
>>> 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
¶Property that may be used to retrieve or set a spatial filter for this
layer. A spatial filter can only be set with an OGRGeometry
instance, a 4-tuple extent, or None
. When set with something other than
None
, only features that intersect the filter will be returned when
iterating over the layer:
>>> 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
()¶A method that returns a list of the values of a given field for each feature in the layer:
>>> layer.get_fields("Name")
['Pueblo', 'Lawrence', 'Houston']
get_geoms
(geos=False)¶A method that returns a list containing the geometry of each feature in the
layer. If the optional argument geos
is set to True
then the
geometries are converted to GEOSGeometry
objects. Otherwise, they are returned as OGRGeometry
objects:
>>> [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
¶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
¶Returns the geometry for this feature, as an OGRGeometry
object:
>>> city.geom.tuple
(-104.609252, 38.255001)
get
¶A method that returns the value of the given field (specified by name)
for this feature, not a Field
wrapper object:
>>> 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
¶Returns the feature identifier within the layer:
>>> city.fid
0
layer_name
¶Returns the name of the Layer
that the feature came from. This
will be the same for all features in a given layer:
>>> city.layer_name
'cities'
index
¶A method that returns the index of the given field name. This will be the same for all features in a given layer:
>>> city.index("Population")
1
Field
¶Field
¶name
¶Returns the name of this field:
>>> city["Name"].name
'Name'
type
¶Returns the OGR type of this field, as an integer. The FIELD_CLASSES
dictionary maps these values onto subclasses of Field
:
>>> city["Density"].type
2
type_name
¶Returns a string with the name of the data type of this field:
>>> city["Name"].type_name
'String'
value
¶Returns the value of this field. The Field
class itself returns the
value as a string, but each subclass returns the value in the most
appropriate form:
>>> city["Population"].value
102121
width
¶Returns the width of this field:
>>> city["Name"].width
80
precision
¶Returns the numeric precision of this field. This is meaningless (and set to zero) for non-numeric fields:
>>> city["Density"].precision
15
as_double
()¶Returns the value of the field as a double (float):
>>> city["Density"].as_double()
874.7
as_int
()¶Returns the value of the field as an integer:
>>> city["Population"].as_int()
102121
as_string
()¶Returns the value of the field as a string:
>>> city["Name"].as_string()
'Pueblo'
as_datetime
()¶Returns the value of the field as a tuple of date and time components:
>>> 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
¶Driver
(dr_input)¶Kelas Driver
digunakan secara mendalam untuk membungkus sebuah driver DataSource
OGR.
driver_count
¶Mengembalikan sejumlah driver vektor OGR saat ini terdaftar.
OGRGeometry
¶OGRGeometry
objects share similar functionality with
GEOSGeometry
objects and are thin wrappers
around OGR's internal geometry representation. Thus, they allow for more
efficient access to data when using DataSource
. Unlike its GEOS
counterpart, OGRGeometry
supports spatial reference systems and
coordinate transformation:
>>> from django.contrib.gis.gdal import OGRGeometry
>>> polygon = OGRGeometry("POLYGON((0 0, 5 0, 5 5, 0 5))")
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
).
from_gml
(gml_string)¶Membangun sebuah OGRGeometry
dari string GML yang diberikan.
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
¶Returns the number of coordinated dimensions of the geometry, i.e. 0 for points, 1 for lines, and so forth:
>>> 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
¶Returns the number of elements in this geometry:
>>> polygon.geom_count
1
point_count
¶Returns the number of points used to describe this geometry:
>>> 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
¶Returns the name of the type of this geometry:
>>> polygon.geom_name
'POLYGON'
area
¶Returns the area of this geometry, or 0 for geometries that do not contain an area:
>>> polygon.area
25.0
envelope
¶Mengembalikan sampul dari geometri ini, sebagai sebuah obyek Envelope
.
extent
¶Returns the envelope of this geometry as a 4-tuple, instead of as an
Envelope
object:
>>> point.extent
(0.0, 0.0, 5.0, 5.0)
srs
¶This property controls the spatial reference for this geometry, or
None
if no spatial reference system has been assigned to it.
If assigned, accessing this property returns a SpatialReference
object. It may be set with another SpatialReference
object,
or any input that SpatialReference
accepts. Example:
>>> 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
¶Returns a string representation of this geometry in GML format:
>>> OGRGeometry("POINT(1 2)").gml
'<gml:Point><gml:coordinates>1,2</gml:coordinates></gml:Point>'
hex
¶Returns a string representation of this geometry in HEX WKB format:
>>> OGRGeometry("POINT(1 2)").hex
'0101000000000000000000F03F0000000000000040'
json
¶Returns a string representation of this geometry in JSON format:
>>> OGRGeometry("POINT(1 2)").json
'{ "type": "Point", "coordinates": [ 1.000000, 2.000000 ] }'
kml
¶Mengembalikan perwakilan string dari geometri ini dalam bentuk KML.
wkb_size
¶Returns the size of the WKB buffer needed to hold a WKB representation of this geometry:
>>> 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
()¶If there are any rings within this geometry that have not been closed, this routine will do so by adding the starting point to the end:
>>> 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)¶Transforms this geometry to a different spatial reference system. May take
a CoordTransform
object, a SpatialReference
object, or
any other input accepted by SpatialReference
(including spatial
reference WKT and PROJ strings, or an 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
¶Returns the coordinates of a point geometry as a tuple, the coordinates of a line geometry as a tuple of tuples, and so forth:
>>> 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
.
Point
¶x
¶Returns the X coordinate of this point:
>>> OGRGeometry("POINT (1 2)").x
1.0
y
¶Returns the Y coordinate of this point:
>>> OGRGeometry("POINT (1 2)").y
2.0
z
¶Returns the Z coordinate of this point, or None
if the point does not
have a Z coordinate:
>>> OGRGeometry("POINT (1 2 3)").z
3.0
LineString
¶x
¶Returns a list of X coordinates in this line:
>>> OGRGeometry("LINESTRING (1 2,3 4)").x
[1.0, 3.0]
y
¶Returns a list of Y coordinates in this line:
>>> OGRGeometry("LINESTRING (1 2,3 4)").y
[2.0, 4.0]
z
¶Returns a list of Z coordinates in this line, or None
if the line does
not have Z coordinates:
>>> OGRGeometry("LINESTRING (1 2 3,4 5 6)").z
[3.0, 6.0]
OGRGeomType
¶OGRGeomType
(type_input)¶This class allows for the representation of an OGR geometry type in any of several ways:
>>> 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
¶Returns a short-hand string form of the OGR Geometry type:
>>> gt1.name
'Polygon'
num
¶Returns the number corresponding to the OGR geometry type:
>>> gt1.num
3
django
¶Returns the Django field type (a subclass of GeometryField) to use for
storing this OGR type, or None
if there is no appropriate Django type:
>>> gt1.django
'PolygonField'
Envelope
¶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)¶SpatialReference
¶SpatialReference
(srs_input)¶Obyek acuan spasial diinisialisasikan pada srs_input
diberikan, yang mungkin satu dari berikut:
'WGS84'
, 'WGS72'
, 'NAD27'
, 'NAD83'
)Example:
>>> wgs84 = SpatialReference("WGS84") # shorthand string
>>> wgs84 = SpatialReference(4326) # EPSG code
>>> wgs84 = SpatialReference("EPSG:4326") # EPSG string
>>> proj = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs "
>>> wgs84 = SpatialReference(proj) # PROJ 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)¶Returns the value of the given string attribute node, None
if the node
doesn't exist. Can also take a tuple as a parameter, (target, child), where
child is the index of the attribute in the WKT. For example:
>>> 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)¶Import spatial reference from PROJ string.
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
¶Returns the PROJ representation for this spatial reference.
proj4
¶Nama lain untuk SpatialReference.proj
.
xml
¶Mengembalikan perwakilan XML dari acuan spasial ini.
CoordTransform
¶CoordTransform
(source, target)¶Represents a coordinate system transform. It is initialized with two
SpatialReference
, representing the source and target coordinate
systems, respectively. These objects should be used when performing the same
coordinate transformation repeatedly on different geometries:
>>> ct = CoordTransform(SpatialReference("WGS84"), SpatialReference("NAD83"))
>>> for feat in layer:
... geom = feat.geom # getting clone of feature geometry
... geom.transform(ct) # transforming
...
GDALRaster
¶GDALRaster
is a wrapper for the GDAL raster source object that
supports reading data from a variety of GDAL-supported geospatial file
formats and data sources using a consistent interface. Each
data source is represented by a GDALRaster
object which contains
one or more layers of data named bands. Each band, represented by a
GDALBand
object, contains georeferenced image data. For example, an RGB
image is represented as three bands: one for red, one for green, and one for
blue.
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.
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.
The first parameter can take three forms: a string or
Path
representing a file path (filesystem or GDAL virtual
filesystem), a dictionary with values defining a new raster, or a bytes
object representing a raster file.
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'
Support for pathlib.Path
ds_input
was added.
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
¶The name of the GDAL driver used to handle the input file. For GDALRaster
s created
from a file, the driver type is detected automatically. The creation of rasters from
scratch is an in-memory raster by default ('MEM'
), but can be
altered as needed. For instance, use GTiff
for a GeoTiff
file.
For a list of file types, see also the GDAL Raster Formats list.
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
¶Pixel width and height used for georeferencing the raster, as a point
object with x
and y
members. See geotransform
for more
information.
>>> 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
(srs, driver=None, name=None, resampling='NearestNeighbour', max_error=0.0)¶Transforms this raster to a different spatial reference system
(srs
), which may be a SpatialReference
object, or any
other input accepted by SpatialReference
(including spatial
reference WKT and PROJ strings, or an integer SRID).
It calculates the bounds and scale of the current raster in the new
spatial reference system and warps the raster using the
warp
function.
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_srs = SpatialReference(4326)
>>> target = rst.transform(target_srs)
>>> target.origin
[-82.98492744885776, 27.601924753080144]
info
¶Mengembalikan string dengan ringkasan dari raster. Ini setara pada kegunaan baris perintah gdalinfo.
metadata
¶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
¶Sebuah bytes
perwakilan dari raster ini. Mengembalikan None
untuk raster-raster yang tidak disimpan dalam sistem berkas maya GDAL.
is_vsi_based
¶Sebuah boolean menunjukkan jika raster ini disimpan dalam sistem berkas maya GDAL.
GDALBand
¶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.
To delete an existing "no data" value, set this property to None
.
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)¶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
¶Metadata dari pita ini. Kegunaannya mirip pada GDALRaster.metadata
.
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
.
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
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.
The following example uses some of the options available for the GTiff driver. The result is a compressed signed byte raster with an internal tiling scheme. The internal tiles have a block size of 23 by 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,
... },
... }
... )
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() |
GDAL can access files stored in the filesystem, but also supports virtual filesystems to abstract accessing other kind of files, such as compressed, encrypted, or remote files.
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/
.
Input provided as bytes
has to be a full binary representation of a file.
For instance:
# 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.
Here's how to create a raster and return it as a file in an
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")
Depending on the local build of GDAL other virtual filesystems may be
supported. You can use them by prepending the provided path with the
appropriate /vsi*/
prefix. See the GDAL Virtual Filesystems
documentation for more details.
Instead decompressing the file and instantiating the resulting raster, GDAL can
directly access compressed files using the /vsizip/
, /vsigzip/
, or
/vsitar/
virtual filesystems:
>>> from django.contrib.gis.gdal import GDALRaster
>>> rst = GDALRaster("/vsizip/path/to/your/file.zip/path/to/raster.tif")
>>> rst = GDALRaster("/vsigzip/path/to/your/file.gz")
>>> rst = GDALRaster("/vsitar/path/to/your/file.tar/path/to/raster.tif")
GDAL can support online resources and storage providers transparently. As long as it's built with such capabilities.
To access a public raster file with no authentication, you can use
/vsicurl/
:
>>> from django.contrib.gis.gdal import GDALRaster
>>> rst = GDALRaster("/vsicurl/https://example.com/raster.tif")
>>> rst.name
'/vsicurl/https://example.com/raster.tif'
For commercial storage providers (e.g. /vsis3/
) the system should be
previously configured for authentication and possibly other settings (see the
GDAL Virtual Filesystems documentation for available options).
Des 04, 2023