コード例 #1
0
class CtiState(State):
    objects = GeoQuerySet.as_manager()

    class Meta:
        proxy = True
コード例 #2
0
class CtiCountry(Country):
    objects = GeoQuerySet.as_manager()

    class Meta:
        proxy = True
コード例 #3
0
class CtiCity(City):
    objects = GeoQuerySet.as_manager()

    class Meta:
        proxy = True
コード例 #4
0
class CtiProtectedArea(BaseProtectedArea):
    objects = GeoQuerySet.as_manager()

    class Meta:
        proxy = True
コード例 #5
0
class IndigenousLand(AdministrativeBoundaries, IndigenousPlace):

    documents = models.ManyToManyField(
        Document,
        verbose_name=_('documentation'),
        related_name='%(class)s_documentation',
        blank=True,
        help_text=
        """Acrescente a documentação oficial sobre a terra indígena (decretos de homologação, portarias declaratórias,etc.).
                     Caso o mesmo documento se refira a mais de uma terra indígena, ele pode já estar cadastrado e você pode apenas selecioná-lo.
                     Confira na lista antes de adicionar. """)
    official_area = models.FloatField(
        _('Official area'),
        blank=True,
        null=True,
        help_text=
        """Indique o tamanho da terra indígena de acordo com fonte oficial.""")
    guarani_exclusive_possession_area_portion = models.FloatField(
        _('Guarani full and exclusive portion area possession'),
        blank=True,
        null=True,
        help_text=
        """Em caso de terras ainda em processo de regularização, caso tenha informação de qual porção da área já foi desintrusada incluir.
                     Em áreas em que não se iniciou o processo de desintrusão colocar 0."""
    )
    others_exclusive_possession_area_portion = models.FloatField(
        _("Other peoples' full and exclusive portion area possession"),
        blank=True,
        null=True,
        help_text=
        """Em caso de terras ainda em processo de regularização, caso tenha informação de qual porção da área já foi desintrusada incluir.
                     Em áreas em que não se iniciou o processo de desintrusão colocar 0. """
    )
    # private field
    claim = models.TextField(
        _('Claim'),
        blank=True,
        null=True,
        help_text=
        """ Campo apenas de visualização restrita, para uso das associações indígenas. Indicar qual a próxima fase do processo de regularização."""
    )
    # private field
    demand = models.TextField(
        _('Demand'),
        blank=True,
        null=True,
        help_text=
        """Campo apenas de visualização restrita, para uso das associações indígenas. Detalhar a demanda atual frente aos órgãos públicos (desintrusão, conclusão de levantamento fundiário ou antropológico, etc..) """
    )

    source = models.CharField(
        _('Source'),
        max_length=512,
        help_text=
        """Indique de qual base de dados, organização ou pessoa provém o polígono utilizado para a terra indígena."""
    )
    # Situação Fundiária
    land_tenure = models.ForeignKey(
        LandTenure,
        verbose_name=_('Land Tenure'),
        related_name='indigenous_lands',
        help_text=
        """Selecione a fase do processo de regularização em que está a terra. Em caso de terras em processo de revisão de limites, é preciso cadastrar separadamente a Terra Original e a Terra Revisada e detalhar no próximo item."""
    )
    # blank=True, null=True)
    # Status de revisão fundiária
    land_tenure_status = models.ForeignKey(
        LandTenureStatus,
        verbose_name=_('Land Tenure Status'),
        related_name='indigenous_lands',
        help_text=
        """Selecione “Não Delimitada” para as terras ainda sem estudo aprovado pela Funai, e portanto, sem limites definidos.
                     Selecione “Sem Revisão” caso não incida sobre a área nenhum processo de revisão de limites.
                     Selecione “Terra Original em estudo de Revisão” caso incida sobre a área processo de revisão, mas os novos limites ainda não tenham sido aprovados pela Funai.
                     Selecione “Terra Original” caso incida sobre a área processo de revisão, os limites já tenham sido aprovados pela Funai, e essa terra seja o polígono da terra original.
                     Selecione “Terra Revisada” caso incida sobre a área processo de revisão, os limites já tenham sido aprovados pela Funai, e essa terra seja o polígono da terra revisada. """
    )

    associated_land = models.ForeignKey(
        'self',
        verbose_name=_('Associated Land'),
        blank=True,
        null=True,
        help_text=
        """Caso a terra esteja em processo de revisão, e tanto a terra original quanto a revisada estejam cadastradas,
                     indique qual outro registro se refere à mesma terra, original ou revisada. """
    )

    geometry = models.MultiPolygonField(
        _('Indigenous Land Spatial Data'),
        help_text=
        """Inclua aqui o polígono da terra indígena apenas em formato *.KML.
                                        Certifique-se de que apenas a terra indígena correspondente está no arquivo. """
    )

    layer = models.ForeignKey(
        MapLayer,
        verbose_name=_('Layer'),
        related_name='indigenous_lads',
        help_text=
        """O sistema é dividido em camadas que configuram as permissões de usuários e as diferentes formas de visualização do mapa.
                                           Atenção à descrição das camadas para associar corretamente a terra indígena à camada correta.
                                           Adicionar ou Modificar Documento de Terra Indígena"""
    )  # TODO: fix typo

    objects = GeoQuerySet.as_manager()

    class Meta:
        verbose_name = _('Indigenous Land')
        verbose_name_plural = _('Indigenous Lands')

    def clean(self):
        if self.associated_land:
            if not self.land_tenure_status:
                raise ValidationError(
                    'associated_land without land_tenure_status')
            if self.land_tenure_status.name != 'Terra Original' or self.land_tenure_status.name != "Terra Revisada":
                raise ValidationError(
                    _('land_tenure_status is not "Terra Original" nor "Terra Revisada"'
                      ))

    @property
    def villages(self):
        # return IndigenousVillage.objects.filter(geometry__contained=self.geometry)
        return IndigenousVillage.objects.filter(
            geometry__coveredby=self.geometry)

    @property
    def population(self):
        total = Population.objects.filter(village__geometry__coveredby=self.geometry)\
                                  .values('population').annotate(latest=Max('village'))\
                                  .aggregate(total_population=Sum('population'))\
                                  .get('total_population')
        return total or 0

    @property
    def calculated_area(self):
        return False
        # TODO test 29101 (http://spatialreference.org/ref/epsg/29101/)
        # return self.geometry.transform(27700, clone=True).area / 10000

    @property
    def protected_areas(self):
        return BaseProtectedArea.objects.filter(
            geometry__intersects=self.geometry)

    def get_cities_intersected(self):
        return City.objects.filter(geometry__intersects=self.geometry)

    def get_states_intersected(self):
        return State.objects.filter(geometry__intersects=self.geometry)

    @property
    def layer_projects(self):
        return self.layer.projects
コード例 #6
0
class Location(AbstractLocation):
    """Test location."""
    objects = GeoQuerySet.as_manager()
コード例 #7
0
class Location(AbstractLocation):
    objects = GeoQuerySet.as_manager()