Here are the examples of the python api django.contrib.gis.gdal.GDALDataSource taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
1 Examples
0
View Complete Implementation : models.py
Copyright MIT License
Author : azavea
Copyright MIT License
Author : azavea
def load_shapefile(self):
""" Validate the shapefile saved on disk and load into db """
self.status = self.StatusTypes.PROCESSING
self.save()
try:
temp_dir = extract_zip_to_temp_dir(self.source_file)
shapefiles = get_shapefiles_in_dir(temp_dir)
if len(shapefiles) != 1:
raise ValueError('Exactly one shapefile (.shp) required')
shapefile_path = os.path.join(temp_dir, shapefiles[0])
shape_datasource = GDALDataSource(shapefile_path)
if len(shape_datasource) > 1:
raise ValueError('Shapefile must have exactly one layer')
boundary_layer = shape_datasource[0]
if boundary_layer.srs is None:
raise ValueError('Shapefile must include a .prj file')
self.data_fields = boundary_layer.fields
for feature in boundary_layer:
feature.geom.transform(settings.GROUT['SRID'])
geometry = make_multipolygon(feature.geom)
data = {field: feature.get(field) for field in self.data_fields}
self.polygons.create(geom=geometry, data=data)
self.status = self.StatusTypes.COMPLETE
self.save()
except Exception as e:
if self.errors is None:
self.errors = {}
self.errors['message'] = str(e)
# Relabel geography to allow saving a valid shapefile in this namespace
self.label = self.label + '_' + str(uuid.uuid4())
self.status = self.StatusTypes.ERROR
self.save()
finally:
shutil.rmtree(temp_dir, ignore_errors=True)