Yo trabajo en un ayuntamiento. Necesito identificar el frente de la tierra. Aquí en mi país lo llamamos "TESTADA" o "FRENTE DE LOTE". No encontré el término exacto en inglés.
EL FRENTE DE UNA TIERRA es una línea cerca de la entrada al suelo. Es decir, es la entrada de una casa. Es donde se encuentra la puerta de entrada, con el número de puerto. Para ejemplificar la siguiente imagen a continuación.
Mapa antes:
Mapa posterior con las líneas frontales del terreno - Como debería ser:
MUCHO tiene un solo FRENTE DE TIERRA. En las esquinas es la calle principal. Hay edificios antiguos que se quedarán como están porque es histórico. Actualmente hacemos estas líneas de FRONT LAND manualmente. Nos gustaría automatizar parte de ella. Eso podría estar usando ModelBuilder.
En breve:
- En: CAPA DE TERRENO, CALLE DE CAPAS, CAPA DE CONSTRUCCIÓN.
- Salida: CAPA con FRENTES DE TERRENOS.
Otro ejemplo de lote frontal: el término FRENTE DE LA TIERRA se refiere al frente de la propiedad. La entrada de la casa es su frente.
fuente
Respuestas:
Eso requeriría algo de código, por lo que señalaré algunas pautas para que pueda comenzar con algo y luego hacer más preguntas. El FRENTE DE LA TIERRA, como se muestra, puede identificarse mediante dos métodos, ambos usan relaciones espaciales:
Método 1) Es el único lado de un polígono que no toca ningún otro polígono. Encuentra los polígonos conmovedores, rompe el polígono de TIERRA, comprueba los lados contra los polígonos conmovedores para encontrar uno que no toque nada.
o
Método 2) Es el lado del polígono más cercano a una carretera. Encuentre el camino más cercano al polígono LAND, rompa el polígono, encuentre el lado más cercano al camino.
Esto se puede hacer con Postgis o Shapely si elige seguir la ruta de código abierto. De todos modos, recomendaría mirar el manual de Shapely para tener una idea de las relaciones espaciales que podrían probarse, en su mayoría son las mismas en cualquier software.
fuente
Refinando la buena respuesta de @Pablo, con definiciones (a continuación) y agregando una lista de verificación para cada método, restringiendo su uso. Definiciones:
La capa de bloque es una tabla SQL con polígonos que representan los límites de los bloques de la ciudad , que o sin aceras , pero que conserva callejones privados (ver frente-1 ) o no direccionables (ver frente-2 ) en el bloque.
La capa de lote es una tabla SQL con polígonos que representan los límites de los lotes de tierra .
La capa de calle es una tabla SQL con líneas que representan calles ... O, en una "tierra fluvial" también ríos (¿y un ferrocarril puede ser un "frente"?).
Frente 1 : los métodos de @Pablo se refieren a un concepto general de frente , donde algunos lotes tienen más de "un frente sobre una calle", porque están en la esquina (tienen dos o más segmentos frontales sobre todas sus calles circundantes).
Frente-2 : "frente" se refiere a la calle indicada en la dirección oficial (o dirección de correspondencia) del lote. Ellos, todos los lotes (incluso en la esquina) tienen solo un segmento de la calle delantera. PD: si su sistema de direcciones y la capa de bloques aceptan muchos " condominios horizontales " y sus direcciones de condominio, las "calles privadas" deben aparecer como calles habituales .
La ilustración de la pregunta de @ ChristianAbreu muestra el concepto Front-2 (!) , No el general.
Nota técnica: puede conectar Python con PostGIS o con cualquier otra herramienta compatible con OGC (para SQL espacial) para expresar formalmente las listas de verificación.
Lista de verificación para el método n. ° 1: lado de un polígono que no toca ningún otro polígono
Este método tiene un enfoque topológico, es válido solo para bloques donde todas las áreas del lote forman el área de su bloque. Entonces, para usar este método, necesita una capa de bloque .
Expresando formalmente: verifique si
blkarea~=sum_lotarea
para cada bloque,O, si los goemetries no son exactos, o si los bloques están con aceras, use la menor w para
ST_Buffer(block.geom,-w)
eso aseguraST_Within(lot.geom lot,ST_Buffer(block.geom,-w))
todos los lotes.NOTA: verifique también
si todos los lotes están dentro de un bloque,
ST_Within(lot.geom,block.geom)
para todos los lotes y bloques asociados.si, para todos los lotes no disjuntos, no hay áreas superpuestas.
not(ST_Overlaps(a,b))
o esta área de intersección no tiene importancia (es decir2*ST_Area(ST_Intersection(a,b))/(ST_Area(a)+ST_Area(b))<0.01
).Lista de verificación para el método n. ° 2: el lado del polígono más cercano a una carretera
Este método tiene un enfoque geométrico, basado en una distancia euclidiana mínima .
Compruebe si la capa de la calle solo tiene "calles públicas" , ya que debe separar las "calles públicas" (que pueden expresar la dirección oficial de un terreno) de los "callejones" (pueden ser internos del lote o un "bloque de condominios" ").
Luego, verifique visualmente si todos los "bloques visuales" están rodeados de calles. Si su capa de calle está incompleta, el método no es válido para esos bloques.
Conclusiones: reglas para elegir métodos
Para la definición de Front-1 :
A) Cuando tenga buenos datos de la calle, use el método # 2 ;
B) Cuando tenga una capa de bloque y una capa de lote consistente, use el método # 1
C) Cuando no tenga buenos datos, intente dividir sus datos espaciales en porciones donde pueda usar uno u otro método. PD: incluso sin la capa de bloque puede construir uniendo lotes vecinos, o con una buena respuesta a esta pregunta .
Para la definición de Front-2 : necesita buenos datos de la calle, porque la definición de Front-2 necesita el nombre de la calle (de la dirección del lote). Use el método # 2 y suelte los segmentos frontales que no tengan el mismo nombre de calle que la dirección del lote.
fuente