|
0
|
1 |
""" |
|
|
2 |
This module houses ctypes interfaces for GDAL objects. The following GDAL |
|
|
3 |
objects are supported: |
|
|
4 |
|
|
|
5 |
CoordTransform: Used for coordinate transformations from one spatial |
|
|
6 |
reference system to another. |
|
|
7 |
|
|
|
8 |
Driver: Wraps an OGR data source driver. |
|
|
9 |
|
|
|
10 |
DataSource: Wrapper for the OGR data source object, supports |
|
|
11 |
OGR-supported data sources. |
|
|
12 |
|
|
|
13 |
Envelope: A ctypes structure for bounding boxes (GDAL library |
|
|
14 |
not required). |
|
|
15 |
|
|
|
16 |
OGRGeometry: Layer for accessing OGR Geometry objects. |
|
|
17 |
|
|
|
18 |
OGRGeomType: A class for representing the different OGR Geometry |
|
|
19 |
types (GDAL library not required). |
|
|
20 |
|
|
|
21 |
SpatialReference: Represents OSR Spatial Reference objects. |
|
|
22 |
|
|
|
23 |
The GDAL library will be imported from the system path using the default |
|
|
24 |
library name for the current OS. The default library path may be overridden |
|
|
25 |
by setting `GDAL_LIBRARY_PATH` in your settings with the path to the GDAL C |
|
|
26 |
library on your system. |
|
|
27 |
|
|
|
28 |
GDAL links to a large number of external libraries that consume RAM when |
|
|
29 |
loaded. Thus, it may desirable to disable GDAL on systems with limited |
|
|
30 |
RAM resources -- this may be accomplished by setting `GDAL_LIBRARY_PATH` |
|
|
31 |
to a non-existant file location (e.g., `GDAL_LIBRARY_PATH='/null/path'`; |
|
|
32 |
setting to None/False/'' will not work as a string must be given). |
|
|
33 |
""" |
|
|
34 |
import sys |
|
|
35 |
|
|
|
36 |
# Attempting to import objects that depend on the GDAL library. The |
|
|
37 |
# HAS_GDAL flag will be set to True if the library is present on |
|
|
38 |
# the system. |
|
|
39 |
try: |
|
|
40 |
from django.contrib.gis.gdal.driver import Driver |
|
|
41 |
from django.contrib.gis.gdal.datasource import DataSource |
|
|
42 |
from django.contrib.gis.gdal.libgdal import gdal_version, gdal_full_version, gdal_release_date |
|
|
43 |
from django.contrib.gis.gdal.srs import SpatialReference, CoordTransform |
|
|
44 |
from django.contrib.gis.gdal.geometries import OGRGeometry, GEOJSON |
|
|
45 |
HAS_GDAL = True |
|
|
46 |
except: |
|
|
47 |
HAS_GDAL, GEOJSON = False, False |
|
|
48 |
|
|
|
49 |
# The envelope, error, and geomtype modules do not actually require the |
|
|
50 |
# GDAL library, but still nead at least Python 2.4 and ctypes. |
|
|
51 |
PYTHON23 = sys.version_info[0] == 2 and sys.version_info[1] == 3 |
|
|
52 |
if not PYTHON23: |
|
|
53 |
try: |
|
|
54 |
from django.contrib.gis.gdal.envelope import Envelope |
|
|
55 |
from django.contrib.gis.gdal.error import check_err, OGRException, OGRIndexError, SRSException |
|
|
56 |
from django.contrib.gis.gdal.geomtype import OGRGeomType |
|
|
57 |
except ImportError: |
|
|
58 |
# No ctypes, but don't raise an exception. |
|
|
59 |
pass |