Esempio n. 1
0
def calc_linhas_largura(dict_circ_desc, ponto):
    """criar linhas de largura"""
    if dict_circ_desc["tipo_circulo"] == "meio":
        linha_nao_intersecta_ponto = None
        point_circ = Point()
        point_circ.X = dict_circ_desc["pt_medios_circ"]["x_ptm"]
        point_circ.Y = dict_circ_desc["pt_medios_circ"]["y_ptm"]
        array = Array([point_circ, ponto.getPart(0)])
        linha_circulo = Polyline(array, projecao_geo)
        for parte_linha in dict_circ_desc["partes"]:
            if not dict_circ_desc["partes"][parte_linha]["cruza_ponto"]:
                linha_nao_intersecta_ponto = dict_circ_desc["partes"][parte_linha]["linha_geometria"]
        if linha_circulo.disjoint(linha_nao_intersecta_ponto):
            array.removeAll()
            point_circ = Point()
            point_circ.X = dict_circ_desc["pt_medios_circ"]["x_ptm_inv"]
            point_circ.Y = dict_circ_desc["pt_medios_circ"]["y_ptm_inv"]
            array = Array([point_circ, ponto.getPart(0)])
            linha_circulo = Polyline(array, projecao_geo)
            linha_largura = linha_circulo.intersect(poligono_ma, 2)
            array.removeAll()
        else:
            linha_largura = linha_circulo.intersect(poligono_ma, 2)
            array.removeAll()
        return linha_largura, linha_circulo
 def calcular_distancia_oposta(self,linha_circulo, ponto_1, poligono_ma_sirgas, diretorio_saida):
     linha_circulo_buffer = linha_circulo.projectAs(self.spatial_proj_lambert).buffer(1).projectAs(self.spatial_geo_sirgas_2000)
     linha_ma_cortado = poligono_ma_sirgas.difference(linha_circulo_buffer)
     if  linha_ma_cortado.isMultipart:
         for n in range(linha_ma_cortado.partCount):
             parte = linha_ma_cortado.getPart(n)
             linha_ma_parte = Polyline(parte, self.spatial_geo_sirgas_2000)
             if linha_ma_parte.disjoint(ponto_1):
                 pass
             else:
                 linha_ma_distancia = linha_ma_parte.projectAs(self.spatial_proj_lambert).length + 1
     return linha_ma_distancia
Esempio n. 3
0
def calc_distancia_oposta(dict_circ_desc, ponto_1):
    linha_circulo = dict_circ_desc["linha_circulo"]
    linha_circulo_buffer = linha_circulo.projectAs(projecao_plana).buffer(1).projectAs(projecao_geo)
    linha_ma_cortado = poligono_ma.difference(linha_circulo_buffer)
    if  linha_ma_cortado.isMultipart:
        for n in range(linha_ma_cortado.partCount):
            parte = linha_ma_cortado.getPart(n)
            linha_ma_parte = Polyline(parte, projecao_geo)
            if linha_ma_parte.disjoint(ponto_1):
                pass
            else:
                linha_ma_distancia = linha_ma_parte.projectAs(projecao_plana).length + 1
    return linha_ma_distancia
Esempio n. 4
0
def funcao_multipart(linha, ponto):
    dict_partes = {}
    if linha.isMultipart:
        for n in range(linha.partCount):
            parte = linha.getPart(n)
            linha_parte = Polyline(parte, projecao_geo)
            linha_parte_lambert = linha_parte.projectAs(projecao_plana)
            if linha_parte_lambert.length > 0.8:
                if linha_parte.disjoint(ponto):
                    dict_partes["parte" + str(n)] = {"linha_array":parte, "cruza_ponto":False, "linha_geometria":linha_parte}
                else:
                    dict_partes["parte" + str(n)] = {"linha_array":parte, "cruza_ponto":True, "linha_geometria":linha_parte}
    return dict_partes
 def ponto_meio(self, list_partes, ponto):
     self.ptc_x = None
     self.ptc_y = None
     for parte in list_partes:
         parte_linha = Polyline(parte, self.spatial_geo_sirgas_2000)
         if parte_linha.disjoint(ponto):
             pontos_inte_linha_poligono = self.buffer_poligono_borda.intersect(parte_linha,1)
             self.pt1_x = pontos_inte_linha_poligono.getPart(0).X
             self.pt1_y = pontos_inte_linha_poligono.getPart(0).Y
             self.pt2_x = pontos_inte_linha_poligono.getPart(1).X
             self.pt2_y = pontos_inte_linha_poligono.getPart(1).Y
             self.ptc_x, self.ptc_y, self.ptc_x_inv, self.ptc_y_inv = PtCircBorda(self.x_b,self.y_b,self.pt1_x,self.pt1_y,self.pt2_x,self.pt2_y).ponto_circ_borda()
     return self.ptc_x, self.ptc_y
 def funcao_multipart(self, linha, ponto):
     list_partes = []
     if linha.isMultipart:
         for n in range(linha.partCount):
             parte = linha.getPart(n)
             linha_parte = Polyline(parte,self.spatial_geo_sirgas_2000)
             linha_parte_lambert = linha_parte.projectAs(self.spatial_proj_lambert)
             if linha_parte_lambert.length > 0.8:
                 list_partes.append(parte)
                 if linha_parte.disjoint(ponto):
                     self.dict_partes["parte" + str(n)] = {"linha_array":parte, "cruza_ponto":False, "linha_geometria":linha_parte}
                 else:
                     self.dict_partes["parte" + str(n)] = {"linha_array":parte, "cruza_ponto":True, "linha_geometria":linha_parte}
     return list_partes
Esempio n. 7
0
def ponto_meio(ponto, dict_circulo, circ_borda):
    """funcao para gerar o ponto metade"""

    x_ptc = dict_circulo["pt_centro_circ"]["x_ptc"]
    y_ptc = dict_circulo["pt_centro_circ"]["y_ptc"]

    for parte_n in dict_circulo["partes"]:
        parte_linha = Polyline(dict_circulo["partes"][parte_n]["linha_array"], projecao_geo)
        if parte_linha.disjoint(ponto):
            pontos_inte_linha_poligono = circ_borda.intersect(parte_linha,1)
            x_pt1 = pontos_inte_linha_poligono.getPart(0).X
            y_pt1 = pontos_inte_linha_poligono.getPart(0).Y
            x_pt2 = pontos_inte_linha_poligono.getPart(1).X
            y_pt2 = pontos_inte_linha_poligono.getPart(1).Y
            x_ptm, y_ptm, x_ptm_inv, y_ptm_inv = PtCircBorda(x_ptc,y_ptc,x_pt1, y_pt1, x_pt2, y_pt2).ponto_circ_borda()
    return x_ptm, y_ptm, x_ptm_inv, y_ptm_inv
 def linha_de_largura(self, dict_descricao, ponto):
     if dict_descricao["tipo"] == "meio":
         linha_nao_intersecta_ponto = None
         point_circ = Point()
         point_circ.X = dict_descricao["ptc_x"]
         point_circ.Y = dict_descricao["ptc_y"]
         array = Array([point_circ, ponto.getPart(0)])
         linha_circulo = Polyline(array,self.spatial_geo_sirgas_2000)
         for parte_linha in self.dict_partes:
             if self.dict_partes[parte_linha]["cruza_ponto"] == False:
                 linha_nao_intersecta_ponto = self.dict_partes[parte_linha]["linha_geometria"]
         if linha_circulo.disjoint(linha_nao_intersecta_ponto):
             array.removeAll()
             point_circ = Point()
             point_circ.X = self.ptc_x_inv
             point_circ.Y = self.ptc_y_inv
             array = Array([point_circ, ponto.getPart(0)])
             linha_circulo = Polyline(array,self.spatial_geo_sirgas_2000)
             linha_largura = linha_circulo.intersect(self.poligono_ma_geo, 2)
             array.removeAll()
         else:
             linha_largura = linha_circulo.intersect(self.poligono_ma_geo, 2)
             array.removeAll()
         return linha_largura, linha_circulo