You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.8 KiB
54 lines
1.8 KiB
""" |
|
This utility module is for obtaining information about the PostGIS |
|
installation. |
|
|
|
See PostGIS docs at Ch. 6.2.1 for more information on these functions. |
|
""" |
|
import re |
|
|
|
def _get_postgis_func(func): |
|
"Helper routine for calling PostGIS functions and returning their result." |
|
from django.db import connection |
|
cursor = connection.cursor() |
|
cursor.execute('SELECT %s()' % func) |
|
row = cursor.fetchone() |
|
cursor.close() |
|
return row[0] |
|
|
|
### PostGIS management functions ### |
|
def postgis_geos_version(): |
|
"Returns the version of the GEOS library used with PostGIS." |
|
return _get_postgis_func('postgis_geos_version') |
|
|
|
def postgis_lib_version(): |
|
"Returns the version number of the PostGIS library used with PostgreSQL." |
|
return _get_postgis_func('postgis_lib_version') |
|
|
|
def postgis_proj_version(): |
|
"Returns the version of the PROJ.4 library used with PostGIS." |
|
return _get_postgis_func('postgis_proj_version') |
|
|
|
def postgis_version(): |
|
"Returns PostGIS version number and compile-time options." |
|
return _get_postgis_func('postgis_version') |
|
|
|
def postgis_full_version(): |
|
"Returns PostGIS version number and compile-time options." |
|
return _get_postgis_func('postgis_full_version') |
|
|
|
### Routines for parsing output of management functions. ### |
|
version_regex = re.compile('^(?P<major>\d)\.(?P<minor1>\d)\.(?P<minor2>\d+)') |
|
def postgis_version_tuple(): |
|
"Returns the PostGIS version as a tuple." |
|
|
|
# Getting the PostGIS version |
|
version = postgis_lib_version() |
|
m = version_regex.match(version) |
|
if m: |
|
major = int(m.group('major')) |
|
minor1 = int(m.group('minor1')) |
|
minor2 = int(m.group('minor2')) |
|
else: |
|
raise Exception('Could not parse PostGIS version string: %s' % version) |
|
|
|
return (version, major, minor1, minor2)
|
|
|