diff --git a/django/contrib/gis/utils/__init__.py b/django/contrib/gis/utils/__init__.py index 2acbc0ab60..1dca849718 100644 --- a/django/contrib/gis/utils/__init__.py +++ b/django/contrib/gis/utils/__init__.py @@ -20,3 +20,4 @@ try: except: HAS_GEOIP = False +from django.contrib.gis.utils.srs import add_postgis_srs diff --git a/django/contrib/gis/utils/srs.py b/django/contrib/gis/utils/srs.py new file mode 100644 index 0000000000..f9783b94ac --- /dev/null +++ b/django/contrib/gis/utils/srs.py @@ -0,0 +1,23 @@ +def add_postgis_srs(srs): + """ + This function takes a GDAL SpatialReference system and adds its + information to the PostGIS `spatial_ref_sys` table -- enabling + spatial transformations with PostGIS. This is handy for adding + spatial reference systems not included by default with PostGIS. + For example, the following adds the so-called "Google Maps Mercator + Projection" (available in GDAL 1.5): + + >>> add_postgis_srs(SpatialReference(900913)) + + Note: By default, the `auth_name` is set to 'EPSG' -- this should + probably be changed. + """ + from django.contrib.gis.models import SpatialRefSys + + if srs.srid is None: + raise Exception('Spatial reference requires an SRID to be compatible with PostGIS.') + + # Creating the spatial_ref_sys model. + sr, created = SpatialRefSys.objects.get_or_create( + srid=srs.srid, auth_name='EPSG', auth_srid=srs.srid, + srtext=srs.wkt, proj4text=srs.proj4)