Eu trabalho em uma prefeitura. Eu preciso identificar a frente da terra. Aqui no meu país chamamos de "TESTADA" ou "FRENTE DE LOTE". Não encontrei o termo exato em inglês.
A FRENTE DE UMA TERRA é uma linha próxima à entrada do chão. Ou seja, é a entrada de uma casa. É onde fica o portão de entrada, com o número da porta. Para exemplificar a imagem a seguir abaixo.
Mapa antes:
Mapa posteriormente com as linhas de frente do terreno - Como deve ser:
MUITO tem apenas uma FRENTE DE TERRA. Nas esquinas é a rua principal. Existem prédios antigos que permanecerão como estão porque são históricos. Atualmente, fazemos essas linhas de FRONT LAND manualmente. Gostaríamos de automatizar parte dele. Isso pode estar usando o ModelBuilder.
Em resumo:
- Em: CAMADA DE TERRA, RUA DE CAMADA, CAMADA DE EDIFÍCIO.
- Saída: CAMADA COM FRENTES DE LINHAS DE TERRA.
Outro exemplo de lote da frente: o termo FRONT OF LAND refere-se à frente da propriedade. A entrada da casa é a sua frente.
fonte
Respostas:
Isso exigiria algum código, por isso vou apontar algumas diretrizes para que você possa começar com algo e depois fazer mais perguntas. A FRONT OF LAND, como mostrado, pode ser identificada por dois métodos, ambos usam relações espaciais:
Método 1) É o único lado de um polígono que não toca em nenhum outro polígono. Encontre os polígonos tocantes, quebre o polígono LAND, verifique se os lados contra os polígonos tocantes estão em busca de um que não toque em nada.
ou
Método 2) É o lado do polígono mais próximo de uma estrada. Encontre a estrada mais próxima do polígono LAND, quebre o polígono, encontre o lado mais próximo da estrada.
Isso pode ser feito com Postgis ou Shapely se optar por seguir o caminho do código aberto. De qualquer forma, eu recomendaria olhar o manual Shapely para ter uma idéia das relações espaciais que poderiam ser testadas; elas são basicamente as mesmas em qualquer software.
fonte
Refinando a boa resposta de @ Pablo, com definições (abaixo) e adicionando uma lista de verificação para cada método, restringindo seu uso. Definições:
A camada de bloco é uma tabela SQL com polígonos que representam os limites dos blocos da cidade , que ou sem calçadas , mas preservando becos particulares (consulte a frente 1 ) ou não endereçáveis (consulte a frente 2 ) no bloco.
A camada de lote é uma tabela SQL com polígonos que representam os limites dos terrenos .
Camada de rua é uma tabela SQL com linhas que representam ruas ... Ou, em uma "região do rio" também os rios (e uma ferrovia pode ser uma "frente"?).
Frente 1 : os métodos do @ Pablo são sobre um conceito geral de frente , onde alguns lotes têm mais do que "uma frente e uma rua", porque estão na esquina (têm dois ou mais segmentos da frente em todas as ruas circundantes).
Frente 2 : "frente" refere-se à rua indicada no endereço oficial (ou endereço de correspondência) do lote. Para eles, todos (mesmo na esquina) têm apenas um segmento de frente de rua. PS: se o seu sistema de endereços e camada de bloco aceitarem muitos " condomínios horizontais " e seus endereços de condomínios, as "ruas particulares" deverão ser mostradas como de costume .
A ilustração da pergunta de @ ChristianAbreu mostra o conceito Front-2 (!) , Não o geral.
Nota técnica: você pode conectar o Python ao PostGIS ou a qualquer outra ferramenta compatível com OGC (para SQL espacial) para expressar formalmente as listas de verificação.
Lista de verificação para o método # 1 - lado de um polígono que não toca em nenhum outro polígono
Este método tem uma abordagem topológica, é válido apenas para blocos em que todas as áreas do lote formam a área do bloco. Portanto, para usar esse método, você precisa de uma camada de bloco .
Expressando formalmente: verifique se
blkarea~=sum_lotarea
para cada bloco,Ou, se as goemetrias não forem exatas, ou se os blocos estiverem com calçadas, use o mínimo w para
ST_Buffer(block.geom,-w)
garantirST_Within(lot.geom lot,ST_Buffer(block.geom,-w))
todos os lotes.NOTA: verifique também
se todos os lotes estiverem dentro de um bloco,
ST_Within(lot.geom,block.geom)
para todos os lotes e blocos associados.se, para todos os lotes não disjuntos, não houver áreas sobrepostas.
not(ST_Overlaps(a,b))
ou essa área de interseção não tem significado (ou seja2*ST_Area(ST_Intersection(a,b))/(ST_Area(a)+ST_Area(b))<0.01
).Lista de verificação para o método # 2 - o lado do polígono mais próximo de uma estrada
Este método possui uma abordagem geométrica, baseada na distância euclidiana mínima .
Verifique se a camada de rua possui apenas "ruas públicas" , pois é necessário separar "ruas públicas" (que podem expressar o endereço oficial de um terreno) de "becos" (pode ser interno do lote ou um "condomínio" ").
Em seguida, verifique visualmente se todos os "blocos visuais" estão cercados por ruas. Se sua camada de rua estiver incompleta, o método não é válido para esses blocos.
Conclusões: regras para escolher métodos
Para a definição do Front-1 :
A) Quando você tiver bons dados de ruas, use o método nº 2 ;
B) Quando você tem uma camada de bloco e uma camada de lote consistente, use o método nº 1
C) Quando você não tiver bons dados, tente dividir seus dados espaciais em partes em que você pode usar um ou outro método. PS: mesmo sem a camada de blocos , é possível construir a junção de lotes vizinhos ou com uma boa resposta a esta pergunta .
Para a definição do Front-2 : você precisa de bons dados de ruas, porque a definição do Front-2 precisa do nome da rua (do endereço do lote). Use o método nº 2 e solte segmentos frontais que não tenham o mesmo nome da rua que o endereço do lote.
fonte