1. from django.contrib.gis.db import models
    
  2. 
    
  3. from ..utils import gisfield_may_be_null
    
  4. 
    
  5. 
    
  6. class NamedModel(models.Model):
    
  7.     name = models.CharField(max_length=30)
    
  8. 
    
  9.     class Meta:
    
  10.         abstract = True
    
  11. 
    
  12.     def __str__(self):
    
  13.         return self.name
    
  14. 
    
  15. 
    
  16. class SouthTexasCity(NamedModel):
    
  17.     "City model on projected coordinate system for South Texas."
    
  18.     point = models.PointField(srid=32140)
    
  19.     radius = models.IntegerField(default=10000)
    
  20. 
    
  21. 
    
  22. class SouthTexasCityFt(NamedModel):
    
  23.     "Same City model as above, but U.S. survey feet are the units."
    
  24.     point = models.PointField(srid=2278)
    
  25. 
    
  26. 
    
  27. class AustraliaCity(NamedModel):
    
  28.     "City model for Australia, using WGS84."
    
  29.     point = models.PointField()
    
  30.     radius = models.IntegerField(default=10000)
    
  31.     allowed_distance = models.FloatField(default=0.5)
    
  32.     ref_point = models.PointField(null=True)
    
  33. 
    
  34. 
    
  35. class CensusZipcode(NamedModel):
    
  36.     "Model for a few South Texas ZIP codes (in original Census NAD83)."
    
  37.     poly = models.PolygonField(srid=4269)
    
  38. 
    
  39. 
    
  40. class SouthTexasZipcode(NamedModel):
    
  41.     "Model for a few South Texas ZIP codes."
    
  42.     poly = models.PolygonField(srid=32140, null=gisfield_may_be_null)
    
  43. 
    
  44. 
    
  45. class Interstate(NamedModel):
    
  46.     "Geodetic model for U.S. Interstates."
    
  47.     path = models.LineStringField()
    
  48. 
    
  49. 
    
  50. class SouthTexasInterstate(NamedModel):
    
  51.     "Projected model for South Texas Interstates."
    
  52.     path = models.LineStringField(srid=32140)