class PercorsoIntervento(Invervento): class Meta: verbose_name_plural = "Percorso intervento" line = models.MultiLineStringField(null=True, blank=True, verbose_name="Percorso intervento")
class FaultSection(Observation, WithLength, WithSlipAndDip, WithDisplacement, WithRecurrence): # TODO. change this to plural. Do we really nead a m2m relation # instead of a fk? fault = models.ManyToManyField('Fault') geom = models.MultiLineStringField(srid=4326, **DEFAULT_FIELD_ATTRIBUTES) fault_section_name = models.CharField(max_length=255, **DEFAULT_FIELD_ATTRIBUTES) strike = models.IntegerField(**DEFAULT_FIELD_ATTRIBUTES) surface_dip = models.FloatField(**DEFAULT_FIELD_ATTRIBUTES) episodic_behaviour = models.CharField(max_length=30, **DEFAULT_FIELD_ATTRIBUTES) down_thro = models.CharField(max_length=255, verbose_name="Downthrown side", choices=DOWNTHROWN_SIDE_CHOICES, **DEFAULT_FIELD_ATTRIBUTES) def update_autocomputed_fields(self, update_depending=True): self._update_geometry() self._update_net_slip_rate() self._update_overall_completeness() self.save() if update_depending: self._update_depending_objects() def _update_depending_objects(self): for fault in self.fault.all(): fault.update_autocomputed_fields() def _update_geometry(self): if self.trace_set.count(): self.geom = self.trace_set.all()[0].geom for trace in self.trace_set.all()[1:]: self.geom = self.geom.union(trace.geom)
class Trace(models.Model): fault_section = models.ManyToManyField('FaultSection') loc_meth = models.CharField(max_length=30) scale = models.BigIntegerField() accuracy = models.BigIntegerField() notes = models.TextField() geom = models.MultiLineStringField(srid=4326)
def get_tipo(self, tipo): """ Obtener el tipo de dato geometrico """ if tipo == Atributos.PUNTO: return models.PointField() elif tipo == Atributos.POLIGONO: return models.PolygonField() elif tipo == Atributos.POLIGONO_MULTIPLE: return models.MultiPolygonField() elif tipo == Atributos.PUNTO_MULTIPLE: return models.MultiPointField() elif tipo == Atributos.LINEA: return models.LineStringField() elif tipo == Atributos.LINEA_MULTIPLE: return models.MultiLineStringField() elif tipo == Atributos.TEXTO: return models.CharField(max_length=255) elif tipo == Atributos.ENTERO: return models.IntegerField() elif tipo == Atributos.FLOTANTE: return models.FloatField() elif tipo == Parametro.IMAGEN: return models.ImageField(upload_to="/") elif tipo == Parametro.DATE: return models.DateField() elif tipo == Parametro.DATETIME: return models.DateTimeField() else: return models.RasterField()
class PavementMarkLines(gis_models.Model): """ The pavement marking lines delineate vehicular paths of travel along the roadway by marking the center of the road, lanes of travel, edges of pavement, etc. """ fk_mark_type = gis_models.ForeignKey(LtPavementMarkingType, on_delete=gis_models.CASCADE, null=True, blank=True) fk_condition = gis_models.ForeignKey(LtCondition, on_delete=gis_models.CASCADE, null=True, blank=True) geom_mline = gis_models.MultiLineStringField( verbose_name=_("Geometry multi-linestrings pavement lines"), db_column='geom', blank=True, null=True, srid=3857, spatial_index=True) def __str__(self): return str(self.fk_mark_type) or ''
class LandscapeAmenityLine(gis_models.Model): """ The collective set of landscape and other amenities installed on a site for various purposes, including fences, gates, retaining walls, and decorative walls.s. """ name = gis_models.CharField(verbose_name=_("Name"), max_length=256, db_column='name', null=True, blank=True) description = gis_models.TextField(verbose_name=_("Description"), db_column='description', help_text=_(u"Brief description"), null=True, blank=True) fk_amenity_type = gis_models.ForeignKey(LtAmenityType, on_delete=gis_models.CASCADE, null=True, blank=True) fk_campus = gis_models.ForeignKey(Campus, on_delete=gis_models.CASCADE) geom_mline = gis_models.MultiLineStringField( verbose_name=_("Geometry multi-linestrings outside area lines"), db_column='geom', blank=True, null=True, srid=3857, spatial_index=True) def __str__(self): return str(self.name) or ''
class Geotag(models.Model): """ A simple wrapper around the GeoDjango field types """ # Content-object field content_type = models.ForeignKey(ContentType, related_name="content_type_set_for_%(class)s") object_id = models.PositiveIntegerField(_('object ID'), max_length=50) tagged_obj = generic.GenericForeignKey(ct_field="content_type", fk_field="object_id") point = models.PointField(**field_kwargs('point')) multilinestring = models.MultiLineStringField(**field_kwargs('multi-line')) line = models.LineStringField(**field_kwargs('line')) polygon = models.PolygonField(**field_kwargs('polygon')) geometry_collection = models.GeometryCollectionField( **field_kwargs('geometry collection')) objects = GeotagManager() def get_geom(self): """Returns the geometry in use or None""" for geom_type in ('point', 'line', 'multilinestring', 'polygon', 'geometry_collection'): geom = getattr(self, geom_type) if geom: return geom return None
class Road(models.Model): code = models.CharField('código', unique=True, max_length=50) geom = models.MultiLineStringField('geom', srid=4326) def __str__(self): return self.code def get_absolute_url(self): return reverse('core:detail', args=[str(self.id)]) @property def jurisdiction(self): if self.code[0:2] == 'BR': return 'Federal' return 'Estadual' @property def popup_content(self): popup = "<strong>Trecho: </strong>{}<br>".format(self.code) popup += "<strong>Jurisdição: </strong>{}<br>".format( self.jurisdiction) popup += "<a href='{}'>+ info</a>".format(self.get_absolute_url()) return popup class Meta: db_table = 'roads'
class Feature(models.Model): shapefile = models.ForeignKey(Shapefile) geom_point = models.PointField(srid=4326, blank=True, null=True) geom_multipoint = \ models.MultiPointField(srid=4326, blank=True, null=True) geom_multilinestring = \ models.MultiLineStringField(srid=4326, blank=True, null=True) geom_multipolygon = \ models.MultiPolygonField(srid=4326, blank=True, null=True) geom_geometrycollection = \ models.GeometryCollectionField(srid=4326, blank=True, null=True) objects = models.GeoManager() def __str__(self): return str(self.id) def __unicode__(self): for geom in [ self.geom_singlepoint, self.geom_multipoint, self.geom_multilinestring, self.geom_multipolygon, self.geom_geometrycollection ]: if geom != None: return str(geom) return "id " + str(self.id)
class MapInfo(models.Model): points = models.MultiPointField(null=True, blank=True) lines = models.MultiLineStringField(null=True, blank=True) polys = models.MultiPolygonField(null=True, blank=True) geom = CollectionFrom(points='points', lines='lines', polys='polys') objects = models.GeoManager()
class BaseDocumentIndex(models.Model): content_type = models.CharField(max_length=255, db_index=True) object_id = models.CharField(max_length=255) body = SearchVectorField() output_data = JSONField(null=True, blank=True) search_data = JSONField(null=True, blank=True) metadata = JSONField(null=True, blank=True) geom_point = models.MultiPointField(null=True, blank=True) geom_linestring = models.MultiLineStringField(null=True, blank=True) geom_polygon = models.MultiPolygonField(null=True, blank=True) indexing = models.BooleanField(default=False, db_index=True) objects = DocumentIndexBaseManager() objects_default = models.Manager() def get_geom(self, srid): value = self.geom_point or self.geom_linestring or self.geom_polygon if value: value.transform(srid) return json.loads(value.json) class Meta: abstract = True unique_together = ('content_type', 'object_id') index_together = [['content_type', 'indexing']] indexes = [GinIndex(fields=['body'])] def __str__(self): return '%s: %s' % (self.content_type, self.object_id)
class Link(models.Model): id = models.IntegerField(primary_key=True) # id from the OSM map #orig_id = models.IntegerField() geom = models.MultiLineStringField(srid=config.EPSG4326)
class Boundarybuilding(models.Model): gid = models.AutoField(primary_key=True) geom = models.MultiLineStringField(blank=True, null=True) class Meta: managed = False db_table = 'boundarybuilding'
class Route(models.Model): source = models.ForeignKey('busstops.DataSource', models.CASCADE) code = models.CharField(max_length=255) # qualified filename service_code = models.CharField(max_length=255, blank=True) registration = models.ForeignKey('vosa.Registration', models.SET_NULL, null=True, blank=True) line_brand = models.CharField(max_length=255, blank=True) line_name = models.CharField(max_length=255, blank=True) revision_number = models.PositiveSmallIntegerField(null=True, blank=True) description = models.CharField(max_length=255, blank=True) origin = models.CharField(max_length=255, blank=True) destinaton = models.CharField(max_length=255, blank=True) via = models.CharField(max_length=255, blank=True) start_date = models.DateField(null=True, blank=True) end_date = models.DateField(null=True, blank=True) dates = DateRangeField(null=True, blank=True) service = models.ForeignKey('busstops.Service', models.CASCADE) geometry = models.MultiLineStringField(null=True, blank=True, editable=False) def contains(self, date): if not self.start_date or self.start_date <= date: if not self.end_date or self.end_date >= date: return True class Meta: unique_together = ('source', 'code') index_together = ( ('start_date', 'end_date'), ) def __str__(self): return ' – '.join(part for part in (self.line_name, self.line_brand, self.description) if part) def get_absolute_url(self): return reverse('route_xml', args=(self.source_id, self.code.split('#')[0]))
class OdikoDiktyoKritis(models.Model): gid = models.AutoField(primary_key=True) objectid = models.IntegerField(blank=True, null=True) type = models.DecimalField(max_digits=65535, decimal_places=65535, blank=True, null=True) namegrk = models.CharField(max_length=66, blank=True, null=True) nameeng = models.CharField(max_length=69, blank=True, null=True) length = models.DecimalField(max_digits=65535, decimal_places=65535, blank=True, null=True) armodiot = models.CharField(max_length=49, blank=True, null=True) arth_num = models.CharField(max_length=33, blank=True, null=True) other_name = models.CharField(max_length=123, blank=True, null=True) fek = models.CharField(max_length=25, blank=True, null=True) geom = models.MultiLineStringField(srid=2100, blank=True, null=True) objects = models.GeoManager() class Meta: managed = False db_table = 'odiko_diktyo_kritis' def __str__(self): return self.namegrk def __unicode__(self): return self.namegrk or u''
class EparxiakoOdikoDiktio(models.Model): gid = models.AutoField(primary_key=True) aa = models.SmallIntegerField(blank=True, null=True) yparith = models.CharField(max_length=254, blank=True, null=True) onomasia = models.CharField(max_length=100, blank=True, null=True) katataksi = models.CharField(max_length=100, blank=True, null=True) tmima = models.CharField(max_length=50, blank=True, null=True) apallotr = models.CharField(max_length=100, blank=True, null=True) fekapall = models.CharField(max_length=50, blank=True, null=True) arfakellou = models.CharField(max_length=50, blank=True, null=True) sxolia = models.CharField(max_length=250, blank=True, null=True) parakatath = models.CharField(max_length=250, blank=True, null=True) yp = models.CharField(max_length=20, blank=True, null=True) geom = models.MultiLineStringField(srid=2100, blank=True, null=True) objects = models.GeoManager() class Meta: managed = False db_table = 'eparxiako_odiko_diktio' def __str__(self): return self.onomasia def __unicode__(self): return self.onomasia or u''
class FeatureRds(models.Model): gid = models.AutoField(primary_key=True) objectid = models.BigIntegerField(blank=True, null=True) shape_leng = models.DecimalField(max_digits=65535, decimal_places=65535, blank=True, null=True) lntype = models.BigIntegerField(blank=True, null=True) leftln_fid = models.BigIntegerField(blank=True, null=True) rightln_fi = models.BigIntegerField(blank=True, null=True) surface = models.CharField(max_length=254, blank=True, null=True) walk_speed = models.BigIntegerField(blank=True, null=True) cycle_spee = models.BigIntegerField(blank=True, null=True) distance = models.DecimalField(max_digits=65535, decimal_places=65535, blank=True, null=True) way = models.BigIntegerField(blank=True, null=True) type = models.CharField(max_length=254, blank=True, null=True) id = models.BigIntegerField(blank=True, null=True) drive_spee = models.BigIntegerField(blank=True, null=True) geom = models.MultiLineStringField(blank=True, null=True) class Meta: managed = False db_table = 'feature_rds'
class Barrier(models.Model): BARRIER_MAKEUP_CHOICES = (('WALL', 'Wall'), ('FENCE', 'Fence'), ('UNKWN', 'Unknown')) makeup = models.CharField(max_length=5, choices=BARRIER_MAKEUP_CHOICES) BARRIER_CONTRUCTION_CHOICES = ( ('PLAN', 'Planned'), ('UNDER', 'Under Construction'), ('COMPL', 'Completed'), ('ROAD', 'Road Protection'), ('FURTH', 'Subject to Further Inter-Ministerial Examination'), ('DISM', 'Dismantled'), ) #The long forms match the fields from barrier shapefile construction = models.CharField(max_length=5, choices=BARRIER_CONTRUCTION_CHOICES) path = models.MultiLineStringField(srid=ISRAEL_TM) objects = models.GeoManager() def __unicode__(self): return "%i - %s" % (self.id, self.makeup) def get_geojson_dict(self, projection): return geojson_base(projection, self.path, { "construction": self.get_construction_display(), 'id': self.id })
class Section(BaseModel): street_name = models.CharField(_('street name'), max_length=255) suffix = models.CharField(_('suffix'), blank=True, null=True, max_length=3) borough = models.CharField(_('borough'), blank=True, null=True, max_length=255) street_category = models.PositiveSmallIntegerField(_('street category'), null=True) geometry = models.MultiLineStringField(_('geometry'), srid=4326, null=True) is_road = models.BooleanField(_('is road section'), default=True) class Meta: verbose_name = _('section') verbose_name_plural = _('sections') def velocity_index(self): if len(self.details.all()) > 0: return sum(d.velocity_index() for d in self.details.all()) / len(self.details.all()) else: return 0 def safety_index(self): if len(self.details.all()) > 0: return sum(d.safety_index() for d in self.details.all()) / len(self.details.all()) else: return 0 def __str__(self): section_type = _('road section') if self.is_road else _('intersection') return '{} {} ({})'.format(section_type, self.street_name, self.id)
class Roads(models.Model): id = models.BigIntegerField(primary_key=True) geom = models.MultiLineStringField(blank=True, null=True) lanes = models.CharField(max_length=254, blank=True, null=True) name = models.CharField(max_length=254, blank=True, null=True) surface = models.CharField(max_length=254, blank=True, null=True) bridge = models.CharField(max_length=254, blank=True, null=True) road_class = models.CharField(max_length=27, blank=True, null=True) road_no = models.CharField(max_length=30, blank=True, null=True) road_width = models.DecimalField(max_digits=65535, decimal_places=65535, blank=True, null=True) traffic = models.DecimalField(max_digits=65535, decimal_places=65535, blank=True, null=True) road_stage = models.CharField(max_length=100, blank=True, null=True) authority = models.CharField(max_length=50, blank=True, null=True) county = models.CharField(max_length=100, blank=True, null=True) road_lengt = models.FloatField(blank=True, null=True) class Meta: managed = False db_table = 'roads'
class Track(models.Model): class Meta: ordering = ['-start'] track = models.MultiLineStringField() owner = models.ForeignKey(User) file_hash = models.CharField("md5 hash value", max_length=32, unique=True) start = models.DateTimeField("start date and time", blank=True, null=True) finish = models.DateTimeField("finish date and time", blank=True, null=True) duration = models.DecimalField("total moving time in hours", blank=True, null=True, max_digits=10, decimal_places=2) distance = models.DecimalField("total moving distance in kilometers", blank=True, null=True, max_digits=7, decimal_places=2) average_speed = models.DecimalField( "average moving speed in kilometers per hour", blank=True, null=True, max_digits=7, decimal_places=2) objects = models.GeoManager() def __str__(self): return self.file_hash
class Powerline(models.Model): #id = models.IntegerField(primary_key=True) geom = models.MultiLineStringField(null=False) title = models.TextField(50, null=False) powerline = models.TextField(20, null=False) voltage = models.IntegerField(null=False) service_date = models.TextField(10, null=True)
class Development(models.Model): id = models.BigIntegerField(primary_key=True) geom = models.MultiLineStringField(blank=True, null=True) road_no = models.CharField(max_length=30, blank=True, null=True) contractor = models.CharField(max_length=120, blank=True, null=True) prj_name = models.CharField(max_length=120, blank=True, null=True) end_date = models.DateField(blank=True, null=True) start_date = models.DateField(blank=True, null=True) conct_sum = models.DecimalField(max_digits=65535, decimal_places=65535, blank=True, null=True) nature_dvp = models.CharField(max_length=120, blank=True, null=True) status = models.CharField(max_length=120, blank=True, null=True) maint_type = models.CharField(max_length=100, blank=True, null=True) funding = models.CharField(max_length=100, blank=True, null=True) materials_field = models.CharField( db_column='materials_', max_length=254, blank=True, null=True) # Field renamed because it ended with '_'. developed_field = models.FloatField( db_column='developed_', blank=True, null=True) # Field renamed because it ended with '_'. class Meta: managed = False db_table = 'development'
class MapData(models.Model): points = models.MultiPointField(null=True, blank=True) lines = models.MultiLineStringField(null=True, blank=True) polys = models.MultiPolygonField(null=True, blank=True) geom = FlatCollectionFrom(points='points', lines='lines', polys='polys') length = models.FloatField(null=True, editable=False) page = models.OneToOneField('pages.Page') objects = models.GeoManager() def get_absolute_url(self): return reverse('maps:show', args=[self.page.pretty_slug]) def save(self, *args, **kwargs): self.length = self.geom.length super(MapData, self).save(*args, **kwargs) def exists(self): """ Returns: True if the MapData currently exists in the database. """ if MapData.objects.filter(page=self.page): return True return False
class Link(models.Model): _DATABASE = "psql" feature_ke = models.IntegerField() l_street_i = models.IntegerField() r_street_i = models.IntegerField() l_dup_stre = models.IntegerField() r_dup_stre = models.IntegerField() cad_llo = models.IntegerField() cad_lhi = models.IntegerField() cad_rlo = models.IntegerField() cad_rhi = models.IntegerField() llo = models.IntegerField() lhi = models.IntegerField() rlo = models.IntegerField() rhi = models.IntegerField() st_premodi = models.CharField(max_length=12) st_prefix = models.CharField(max_length=2) st_pretype = models.CharField(max_length=12) st_name = models.CharField(max_length=50) st_type = models.CharField(max_length=8) st_postmod = models.CharField(max_length=12) lmuni = models.CharField(max_length=50) rmuni = models.CharField(max_length=50) lcounty = models.CharField(max_length=50) rcounty = models.CharField(max_length=50) lstate = models.CharField(max_length=2) rstate = models.CharField(max_length=2) l_zip = models.CharField(max_length=10) r_zip = models.CharField(max_length=10) edit_date = models.DateField() edit_user = models.CharField(max_length=50) f_node = models.FloatField() t_node = models.FloatField() fcc = models.CharField(max_length=5) speed = models.IntegerField() f_zlev = models.IntegerField() t_zlev = models.IntegerField() oneway = models.CharField(max_length=5) lar = models.CharField(max_length=1) lardir = models.CharField(max_length=2) a1 = models.CharField(max_length=75) a2 = models.CharField(max_length=75) dynamapid = models.CharField(max_length=25) full_name = models.CharField(max_length=128) cad_a1 = models.CharField(max_length=75) cad_a2 = models.CharField(max_length=75) p_ovr_l = models.CharField(max_length=8) p_ovr_r = models.CharField(max_length=8) f_ovr_l = models.CharField(max_length=8) f_ovr_r = models.CharField(max_length=8) e_ovr_l = models.CharField(max_length=8) e_ovr_r = models.CharField(max_length=8) cad2 = models.CharField(max_length=8) enforce_va = models.CharField(max_length=1) source_id = models.IntegerField() st_suffix = models.CharField(max_length=4) shape_stle = models.FloatField() shape_leng = models.FloatField() geom = models.MultiLineStringField(srid=4326)
class Street(AbstractFeature): id_by_provider = models.CharField( help_text="ID of the street used by provider.", max_length=50, editable=False, unique=True) geometry = models.MultiLineStringField( help_text="Spatial information about feature.", srid=3857, null=True)
class Pizzeria(geo_models.Model): hq = geo_models.PointField() directions = geo_models.LineStringField() floor_plan = geo_models.PolygonField() locations = geo_models.MultiPointField() routes = geo_models.MultiLineStringField() delivery_areas = geo_models.MultiPolygonField() all_the_things = geo_models.GeometryCollectionField()
class Roads(models.Model): geom = models.MultiLineStringField(blank=True, null=True) name = models.CharField(max_length=50, blank=True, null=True) cat = models.CharField(max_length=50, blank=True, null=True) class Meta: managed = False db_table = 'roads'
class Rivers(models.Model): geom = models.MultiLineStringField(blank=True, null=True) objectid = models.BigIntegerField(blank=True, null=True) shape_leng = models.FloatField(blank=True, null=True) class Meta: managed = False db_table = 'rivers'
class FeatureBoundary(models.Model): gid = models.AutoField(primary_key=True) id = models.IntegerField(blank=True, null=True) geom = models.MultiLineStringField(blank=True, null=True) class Meta: managed = False db_table = 'feature_boundary'