|
1 from django.contrib.gis.db import models |
|
2 |
|
3 class State(models.Model): |
|
4 name = models.CharField(max_length=20) |
|
5 objects = models.GeoManager() |
|
6 |
|
7 class County(models.Model): |
|
8 name = models.CharField(max_length=25) |
|
9 state = models.ForeignKey(State) |
|
10 mpoly = models.MultiPolygonField(srid=4269) # Multipolygon in NAD83 |
|
11 objects = models.GeoManager() |
|
12 |
|
13 class CountyFeat(models.Model): |
|
14 name = models.CharField(max_length=25) |
|
15 poly = models.PolygonField(srid=4269) |
|
16 objects = models.GeoManager() |
|
17 |
|
18 class City(models.Model): |
|
19 name = models.CharField(max_length=25) |
|
20 population = models.IntegerField() |
|
21 density = models.DecimalField(max_digits=7, decimal_places=1) |
|
22 dt = models.DateField() |
|
23 point = models.PointField() |
|
24 objects = models.GeoManager() |
|
25 |
|
26 class Interstate(models.Model): |
|
27 name = models.CharField(max_length=20) |
|
28 length = models.DecimalField(max_digits=6, decimal_places=2) |
|
29 path = models.LineStringField() |
|
30 objects = models.GeoManager() |
|
31 |
|
32 # Same as `City` above, but for testing model inheritance. |
|
33 class CityBase(models.Model): |
|
34 name = models.CharField(max_length=25) |
|
35 population = models.IntegerField() |
|
36 density = models.DecimalField(max_digits=7, decimal_places=1) |
|
37 point = models.PointField() |
|
38 objects = models.GeoManager() |
|
39 |
|
40 class ICity1(CityBase): |
|
41 dt = models.DateField() |
|
42 |
|
43 class ICity2(ICity1): |
|
44 dt_time = models.DateTimeField(auto_now=True) |
|
45 |
|
46 # Mapping dictionaries for the models above. |
|
47 co_mapping = {'name' : 'Name', |
|
48 'state' : {'name' : 'State'}, # ForeignKey's use another mapping dictionary for the _related_ Model (State in this case). |
|
49 'mpoly' : 'MULTIPOLYGON', # Will convert POLYGON features into MULTIPOLYGONS. |
|
50 } |
|
51 |
|
52 cofeat_mapping = {'name' : 'Name', |
|
53 'poly' : 'POLYGON', |
|
54 } |
|
55 |
|
56 city_mapping = {'name' : 'Name', |
|
57 'population' : 'Population', |
|
58 'density' : 'Density', |
|
59 'dt' : 'Created', |
|
60 'point' : 'POINT', |
|
61 } |
|
62 |
|
63 inter_mapping = {'name' : 'Name', |
|
64 'length' : 'Length', |
|
65 'path' : 'LINESTRING', |
|
66 } |