1. from django.contrib.gis.db import models
    
  2. 
    
  3. 
    
  4. class NamedModel(models.Model):
    
  5.     name = models.CharField(max_length=30)
    
  6. 
    
  7.     class Meta:
    
  8.         abstract = True
    
  9. 
    
  10.     def __str__(self):
    
  11.         return self.name
    
  12. 
    
  13. 
    
  14. class City3D(NamedModel):
    
  15.     point = models.PointField(dim=3)
    
  16.     pointg = models.PointField(dim=3, geography=True)
    
  17. 
    
  18.     class Meta:
    
  19.         required_db_features = {"supports_3d_storage"}
    
  20. 
    
  21. 
    
  22. class Interstate2D(NamedModel):
    
  23.     line = models.LineStringField(srid=4269)
    
  24. 
    
  25. 
    
  26. class Interstate3D(NamedModel):
    
  27.     line = models.LineStringField(dim=3, srid=4269)
    
  28. 
    
  29.     class Meta:
    
  30.         required_db_features = {"supports_3d_storage"}
    
  31. 
    
  32. 
    
  33. class InterstateProj2D(NamedModel):
    
  34.     line = models.LineStringField(srid=32140)
    
  35. 
    
  36. 
    
  37. class InterstateProj3D(NamedModel):
    
  38.     line = models.LineStringField(dim=3, srid=32140)
    
  39. 
    
  40.     class Meta:
    
  41.         required_db_features = {"supports_3d_storage"}
    
  42. 
    
  43. 
    
  44. class Polygon2D(NamedModel):
    
  45.     poly = models.PolygonField(srid=32140)
    
  46. 
    
  47. 
    
  48. class Polygon3D(NamedModel):
    
  49.     poly = models.PolygonField(dim=3, srid=32140)
    
  50. 
    
  51.     class Meta:
    
  52.         required_db_features = {"supports_3d_storage"}
    
  53. 
    
  54. 
    
  55. class SimpleModel(models.Model):
    
  56.     class Meta:
    
  57.         abstract = True
    
  58. 
    
  59. 
    
  60. class Point2D(SimpleModel):
    
  61.     point = models.PointField()
    
  62. 
    
  63. 
    
  64. class Point3D(SimpleModel):
    
  65.     point = models.PointField(dim=3)
    
  66. 
    
  67.     class Meta:
    
  68.         required_db_features = {"supports_3d_storage"}
    
  69. 
    
  70. 
    
  71. class MultiPoint3D(SimpleModel):
    
  72.     mpoint = models.MultiPointField(dim=3)
    
  73. 
    
  74.     class Meta:
    
  75.         required_db_features = {"supports_3d_storage"}