GDAL API

GDAL代表地理空间数据抽象库,是一个真正的“瑞士军刀”的GIS数据功能。GDAL的子集是OGR简单特征库,其专门用于以各种标准格式读取和写入向量地理数据。

GeoDjango为OGR的一些功能提供了一个高级Python接口,包括向量空间数据的读取和坐标变换。

注意

虽然模块名为gdal,但GeoDjango仅支持OGR的一些功能。因此,此时相对于光栅(图像)数据的GDAL的特征被最低限度地支持(只读)。

Overview

Sample Data

这里描述的GDAL / OGR工具旨在帮助您读取地理空间数据,为了使大多数工具有用,您必须拥有一些数据才能使用。如果你刚开始,还没有自己的任何数据要使用,GeoDjango测试包含了许多可以用于测试的简单数据集。您可以在这里下载:

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

Vector Data Source Objects

DataSource

DataSource是OGR数据源对象的包装器,支持使用简单,一致的界面从各种支持OGR的地理空间文件格式和数据源读取数据。每个数据源由包含一个或多个数据层的DataSource对象表示。Layer对象表示的每个层包含一些地理特征(Feature),关于该层中包含的特征的类型的信息(例如,点,多边形等),以及可以与该层中的每个特征相关联的数据的任何附加字段(Field)的名称和类型。

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

DataSource的构造函数只需要一个参数:要读取的文件的路径。但是,OGR还支持各种更复杂的数据源,包括数据库,可以通过传递特殊的名称字符串而不是路径来访问。有关详细信息,请参阅OGR矢量格式文档。DataSource实例的name属性给出了它正在使用的基础数据源的OGR名称。

可选的encoding参数允许您在源中指定字符串的非标准编码。在读取字段值时获取DjangoUnicodeDecodeError异常时,这通常很有用。

一旦创建了DataSource,您就可以通过访问layer_count属性,或者(等价地)使用len()函数。有关访问数据层本身的信息,请参阅下一节:

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

返回数据源中的图层数。

name

返回数据源的名称。

Layer

class Layer

LayerDataSource对象中数据层的包装器。您从不直接创建Layer对象。而是从DataSource对象检索它们,这本质上是Layer对象的标准Python容器。例如,您可以通过其索引访问特定图层。ds[0]访问第一层),或者您可以在for循环中遍历容器中的所有图层。Layer本身充当几何特征的容器。

通常,给定层中的所有特征具有相同的几何类型。图层的geom_type属性是标识要素类型的OGRGeomType我们可以使用它在DataSource中打印每个图层的一些基本信息:

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

示例输出来自上面加载的城市数据源,其中显然包含一个名为"cities"的图层,其中包含三个点要素。为了简单起见,以下示例假设您已将该图层存储在变量layer中:

>>> layer = ds[0]
name

返回数据源中此图层的名称。

>>> layer.name
'cities'
num_feat

返回图层中的要素数。len(layer)相同:

>>> layer.num_feat
3
geom_type

返回图层的几何类型,作为OGRGeomType对象:

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

返回图层中的字段数,即与图层中每个要素相关联的数据字段数:

>>> layer.num_fields
4
fields

返回此图层中每个字段的名称列表:

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

返回此图层中每个字段的数据类型的列表。这些是Field的子类,如下所述:

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

返回此图层中每个字段的最大字段宽度的列表:

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

返回此图层中每个字段的数值精度列表。对于非数字字段,这是无意义的(并设置为零):

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

返回此图层的空间范围,作为Envelope对象:

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

返回与此图层关联的SpatialReference的属性:

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

如果Layer没有与之相关的空间参考信息,则返回None

spatial_filter

可用于检索或设置此图层的空间过滤器的属性。空间过滤器只能使用OGRGeometry实例,4元组范围或None设置。当设置为非None时,只有在过滤器上进行迭代时才会返回与过滤器相交的要素:

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

一种方法,返回图层中每个要素的给定字段的值的列表:

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

返回包含图层中每个要素几何的列表的方法。如果可选参数geos设置为True,那么几何将转换为GEOSGeometry对象。否则,它们将作为OGRGeometry对象返回:

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

返回一个布尔值,指示此图层是否支持给定能力(字符串)。有效能力字符串的示例包括:'RandomRead''SequentialWrite''RandomWrite''FastSpatialFilter''FastFeatureCount''FastGetExtent''CreateField''Transactions''DeleteFeature''FastSetNextByIndex'

Feature

class Feature

Feature包装OGR功能。您从不直接创建Feature对象。而是从Layer对象检索它们。每个要素由几何和一组包含其他属性的字段组成。字段的几何可通过其geom属性访问,该属性返回OGRGeometry对象。A Feature behaves like a standard Python container for its fields, which it returns as Field objects: you can access a field directly by its index or name, or you can iterate over a feature’s fields, e.g. for循环中。

geom

OGRGeometry对象的形式返回此要素的几何:

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

返回此功能的给定字段(由名称指定)的值的方法,而不是 a Field包装器对象:

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

返回此要素的几何类型作为OGRGeomType对象。这对于给定图层中的所有要素都是相同的,并且等同于该要素来自的Layer对象的Layer.geom_type属性。

num_fields

返回与该要素相关联的数据字段数。这对于给定图层中的所有要素都是相同的,并且等同于该要素来自的Layer对象的Layer.num_fields属性。

fields

返回与该要素相关联的数据字段的名称列表。这对于给定图层中的所有要素都是相同的,并且等同于该要素所来自的Layer对象的Layer.fields属性。

fid

返回图层中的要素标识符:

>>> city.fid
0
layer_name

返回该函数来自的Layer的名称。这对于给定图层中的所有要素都是相同的:

>>> city.layer_name
'cities'
index

返回给定字段名称的索引的方法。这对于给定图层中的所有要素都是相同的:

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

Field

class Field
name

返回此字段的名称:

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

返回此字段的OGR类型作为整数。FIELD_CLASSES字典将这些值映射到Field的子类:

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

返回此字段的数据类型的名称的字符串:

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

返回此字段的值。Field类本身以字符串形式返回值,但每个子类以最合适的形式返回值:

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

返回此字段的宽度:

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

返回此字段的数字精度。对于非数字字段,这是无意义的(并设置为零):

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

将字段的值作为double(float)返回:

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

以整数形式返回字段的值:

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

以字符串形式返回字段的值:

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

以字段的日期和时间组件的形式返回字段的值:

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

Driver类在内部用于包装OGR DataSource驱动程序。

driver_count

返回当前注册的OGR向量驱动程序的数量。

OGR Geometries

OGRGeometry

OGRGeometry对象与GEOSGeometry对象共享类似的功能,是OGR内部几何表示的薄包装。因此,当使用DataSource时,它们允许更有效地访问数据。与其GEOS对应方不同,OGRGeometry支持空间参考系统和坐标变换:

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

此对象是OGR Geometry类的包装器。这些对象直接从给定的geom_input参数实例化,该参数可以是包含WKT,HEX,GeoJSON,包含WKB数据的buffer,或OGRGeomType当从Layer(其又是DataSource的一部分)读取向量数据时,这些对象也从Feature.geom属性返回。

classmethod from_bbox(bbox)

从给定的边界框(4元组)构造Polygon

__len__()

返回LineString中的点数,Polygon中的环数或GeometryCollection中的几何数。不适用于其他几何类型。

__iter__()

迭代LineString中的点,Polygon中的环或GeometryCollection中的几何。不适用于其他几何类型。

__getitem__()

返回LineString的指定索引处的点,Polygon的指定索引处的内部环或GeometryCollection不适用于其他几何类型。

dimension

返回几何的坐标维数,即0表示点,1表示线,等等:

>> polygon.dimension
2
coord_dim

返回或设置此几何的坐标尺寸。例如,对于二维几何,值将为2。

geom_count

返回此几何中的元素数:

>>> polygon.geom_count
1
point_count

返回用于描述此几何的点数:

>>> polygon.point_count
4
num_points

point_count的别名。

num_coords

point_count的别名。

geom_type

返回此几何的类型,作为OGRGeomType对象。

geom_name

返回此几何类型的名称:

>>> polygon.geom_name
'POLYGON'
area

返回此几何的面积,对于不包含区域的几何,返回0:

>>> polygon.area
25.0
envelope

返回此几何的包络,作为Envelope对象。

extent

以4元组(而不是Envelope对象)的形式返回此几何的包络:

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

此属性控制此几何的空间参考,或None(如果尚未为其指定空间参考系)。如果已分配,则访问此属性会返回SpatialReference对象。它可以使用另一个SpatialReference对象或SpatialReference接受的任何输入来设置。例:

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

返回或设置与此几何的SpatialReference对应的空间参考标识符。如果没有与此几何关联的空间参考信息,或如果无法确定SRID,则返回None

geos

返回与此几何对应的GEOSGeometry对象。

gml

以GML格式返回此几何的字符串表示形式:

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

以HEX WKB格式返回此几何的字符串表示形式:

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

以JSON格式返回此几何的字符串表示形式:

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

以KML格式返回此几何的字符串表示形式。

wkb_size

返回保存此几何的WKB表示所需的WKB缓冲区的大小:

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

返回包含此几何的WKB表示形式的buffer

wkt

以WKT格式返回此几何的字符串表示形式。

ewkt

返回此几何的EWKT表示。

clone()

返回此几何对象的新OGRGeometry克隆。

close_rings()

如果此几何中有任何尚未关闭的环,则此例程将通过将起点添加到结尾来执行此操作:

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

将此几何体转换为不同的空间参考系。可以采用CoordTransform对象,SpatialReference对象或SpatialReference接受的任何其他输入(包括空间参考WKT和PROJ.4字符串,整数SRID)。默认情况下不返回任何内容,并且几何将原位转换。但是,如果clone关键字设置为True,则会返回此几何的转换克隆。

intersects(other)

如果此几何与另一个相交,则返回True,否则返回False

equals(other)

如果此几何相当于另一个几何,则返回True,否则返回False

disjoint(other)

返回True如果此几何是空间不相交(即,不相交)另一个,否则返回False

touches(other)

如果此几何图形接触另一个,则返回True,否则返回False

crosses(other)

如果此几何图形彼此交叉,则返回True,否则返回False

within(other)

如果此几何体包含在另一个中,则返回True,否则返回False

contains(other)

如果此几何包含另一个几何,则返回True,否则返回False

overlaps(other)

如果此几何图形与另一个重叠,则返回True,否则返回False

boundary()

此几何的边界,作为新的OGRGeometry对象。

convex_hull

包含此几何的最小凸多边形,作为新的OGRGeometry对象。

difference()

返回由该几何和其他几何的差异组成的区域作为新的OGRGeometry对象。

intersection()

返回由此几何与另一个的交集组成的区域作为新的OGRGeometry对象。

sym_difference()

返回由该几何的对称差异组成的区域,另一个作为新的OGRGeometry对象。

union()

返回由该几何和其他几何的联合组成的区域作为新的OGRGeometry对象。

tuple

返回点几何的坐标作为元组,线几何的坐标作为元组的元组,等等:

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

tuple的别名。

class Point
x

返回此点的X坐标:

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

返回此点的Y坐标:

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

返回此点的Z坐标,如果点没有Z坐标,则返回None

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

返回此行中的X坐标列表:

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

返回此行中的Y坐标列表:

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

返回此行中的Z坐标列表,如果该行没有Z坐标,则返回None

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

返回此多边形的外壳或外环,作为LinearRing几何。

exterior_ring

shell的别名。

centroid

返回表示此多边形的质心的Point

class GeometryCollection
add(geom)

向此几何集合中添加几何。不适用于其他几何类型。

OGRGeomType

class OGRGeomType(type_input)

此类允许以多种方式中的任何一种表示OGR几何类型:

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

返回OGR几何类型的短括号字符串形式:

>>> gt1.name
'Polygon'
num

返回与OGR几何类型对应的数字:

>>> gt1.num
3
django

返回用于存储此OGR类型的Django字段类型(GeometryField的子类),如果没有适当的Django类型,则返回None

>>> gt1.django
'PolygonField'

Envelope

class Envelope(*args)

表示包含矩形边界框的最小和最大X,Y坐标的OGR包络结构。变量的命名与OGR Envelope C结构兼容。

min_x

最小X坐标的值。

min_y

最大X坐标值。

max_x

最小Y坐标的值。

max_y

最大Y坐标的值。

ur

右上坐标,作为元组。

ll

左下坐标,作为元组。

tuple

表示包络的元组。

wkt

将此包络表示为WKT格式的多边形的字符串。

expand_to_include(*args)

Coordinate System Objects

SpatialReference

class SpatialReference(srs_input)

空间参考对象在给定的srs_input上初始化,它可能是以下之一:

  • OGC已知文本(WKT)(字符串)
  • EPSG代码(整数或字符串)
  • PROJ.4字符串
  • 已知标准('WGS84''WGS72''NAD27''NAD83'

例:

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

返回给定字符串属性节点的值,None(如果节点不存在)。也可以使用元组作为参数,(target,child),其中child是WKT中属性的索引。例如:

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

给定目标节点的属性值(例如,'PROJCS')。index关键字指定要返回的子节点的索引。

auth_name(target)

返回给定字符串目标节点的权限名称。

auth_code(target)

返回给定字符串目标节点的权限代码。

clone()

返回此空间参考对象的克隆。

identify_epsg()

此方法检查此SpatialReference的WKT,并将添加EPSG标识符适用的EPSG授权节点。

from_esri()

将此SpatialReference从ESRI格式转换为EPSG

to_esri()

将此SpatialReference变形为ESRI的格式。

validate()

检查以确定给定的空间参考是否有效,如果不是,将引发异常。

import_epsg(epsg)

从EPSG代码导入空间参考。

import_proj(proj)

从PROJ.4字符串导入空间参考。

import_user_input(user_input)
import_wkt(wkt)

从WKT导入空间参考。

import_xml(xml)

从XML导入空间参考。

name

返回此空间参考的名称。

srid

返回顶级权限的SRID,如果未定义,则返回None

linear_name

返回线性单位的名称。

linear_units

返回线性单位的值。

angular_name

返回角单位的名称。

angular_units

返回角单位的值。

units

返回单位值和单位名称的2元组,并将自动确定是返回线性单位还是角度单位。

ellipsoid

返回此空间参考的椭圆参数的元组:(半长轴,半长轴和逆扁平)

semi_major

返回此空间参考的椭圆体的半长轴。

semi_minor

返回此空间参考的椭圆体的半短轴。

inverse_flattening

返回此空间参考的椭圆体的逆平展。

geographic

如果此空间参考为地理(根节点为GEOGCS),则返回True

local

如果此空间参考是本地(根节点是LOCAL_CS),则返回True

projected

如果此空间参考是投影坐标系(根节点为PROJCS),则返回True

wkt

返回此空间参考的WKT表示。

pretty_wkt

返回WKT的“漂亮”表示。

proj

返回此空间参考的PROJ.4表示形式。

proj4

SpatialReference.proj的别名。

xml

返回此空间参考的XML表示形式。

CoordTransform

class CoordTransform(source, target)

表示坐标系变换。它由两个SpatialReference初始化,分别表示源坐标系统和目标坐标系统。当对不同几何体重复执行相同的坐标变换时,应使用这些对象:

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

Raster Data Objects

Django 1.8中的新功能。

GDALRaster

GDALRaster是GDAL栅格源对象的包装器,支持使用简单,一致的界面从各种支持GDAL的地理空间文件格式和数据源读取数据。每个数据源由GDALRaster对象表示,其包含一个或多个名为带的数据层。GDALBand对象表示的每个带包含地理参考的图像数据。例如,RGB图像被表示为三个波段:一个用于红色,一个用于绿色,一个用于蓝色。

class GDALRaster(ds_input)

GDALRaster的构造函数接受单个参数:要读取的文件的路径。

name

源的名称,它等同于输入文件路径。

driver

用于处理输入文件的GDAL驱动程序的名称。例如,GTiff用于GeoTiff文件。另请参阅GDAL栅格格式列表。

width

源像素的宽度(X轴)。

height

源像素的高度(Y轴)。

srs

作为SpatialReference实例的源的空间参考系。

geotransform

用于对源进行地理参考的仿射变换矩阵,作为使用以下关系将像素/线坐标映射到地理参考空间中的六个系数的元组:

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

可以通过访问origin(索引0和3),scale(索引1和5)和skew和4)性质。

origin

作为具有xy成员的点对象,源的空间参考系中光栅的左上原点的坐标。

scale

用于对栅格进行地理配准的像素宽度和高度,作为具有xy成员的点对象。有关详细信息,请参阅geotransform

skew

用于对栅格进行地理参考的偏斜系数,作为具有xy成员的点对象。在北向上图像的情况下,这些系数都是0

extent

Extent (boundary values) of the raster source, as a 4-tuple (xmin, ymin, xmax, ymax) in the spatial reference system of the source.

bands

源的所有波段列表,如GDALBand实例。

GDALBand

class GDALBand

GDALBand实例不是显式创建的,而是通过GDALRaster对象,通过其bands属性获取。

description

频带的名称或描述(如果有)。

width

带宽(以像素为单位)(X轴)。

height

带的高度(像素)(Y轴)。

min

带的最小像素值(不包括“无数据”值)。

max

带的最大像素值(不包括“无数据”值)。

nodata_value

带的“无数据”值通常是用于标记不是有效数据的像素的特殊标记值。这样的像素通常不应被显示,也不会有助于分析操作。

datatype([as_string=False])

包含在频带中的数据类型,为0(未知)和11之间的整数常量。如果as_stringTrue,则数据类型将作为字符串返回,并具有以下可能的值:GDT_UnknownGDT_ByteGDT_UInt16GDT_Int16GDT_UInt32GDT_Int32GDT_Float32GDT_Float64GDT_CInt16GDT_CInt32GDT_CFloat32GDT_CFloat64

Settings

GDAL_LIBRARY_PATH

指定GDAL库位置的字符串。通常,仅当GDAL库位于非标准位置(例如,/home/john/lib/libgdal.so)时,才使用此设置。