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