LayerMapping

To populate the database tables created from the shapefiles, Django has a built-in concept called LayerMapping. By using the field mapping dictionary generated by manage.py, along with the LayerMapping class from django.contrib.gis.utils, the data contained in the shapefiles can be extracted and loaded into the database tables. To instantiate a LayerMapping instance, we will pass the data model, the associated field mapping, and the location of the shapefile to the class.

Create a new file called load.py and save it inside the Arenas application. Add this line to the file:

import os
from django.contrib.gis.utils import LayerMapping
from .models import US_States, Counties, Arenas, Districts

Open models.py and copy all of the field mapping dictionaries into load.py. Then, use the os module to assign the shapefile path to a variable. Here is the dictionary and path variable for US_County_Boundary.shp:

us_counties_mapping = {
'stfips' : 'STFIPS', 'ctfips' : 'CTFIPS', 'state' : 'STATE', 'county' : 'COUNTY',
'version' : 'VERSION', 'shape_leng' : 'Shape_Leng', 'shape_area' : 'Shape_Area', 'geom' : 'MULTIPOLYGON'
}
counties_shp = os.path.abspath(os.path.join(os.path.dirname(__file__), 'data','US_County_Boundaries.shp'),
)

Repeat this step for all of the shapefiles, as demonstrated in the load.py provided in the code package. These path variables and mapping dictionaries are required to perform the layer mapping. 

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset