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 | |
from django.contrib.gis.gdal import SpatialReference | |
if not isinstance(srs, SpatialReference): | |
srs = SpatialReference(srs) | |
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) |