5 votos

¿Crear un campo con una pendiente específica proyectando desde un polígono 3D?

Estoy tratando de averiguar cómo crear una trama de elevación a partir de una ubicación conocida (polígono 3D) que se proyecta en una pendiente especificada (1%) para una distancia especificada (1-2 km).

¿Alguien tiene idea de cómo hacerlo?

7voto

cjstehno Puntos 131

Multiplica la cuadrícula de distancia euclidiana del polígono por 1/100. Esta pendiente aumentará alejándose del polígono. Para hacer la pendiente disminuir hacia abajo del polígono, multiplique por -1/100 en lugar de +1/100. Una ilustración (para una polilínea en lugar de un polígono, pero el método es idéntico) se da en otro hilo en https://gis.stackexchange.com/a/17805 .

Para obtener la distancia límite especificada, obtendrá un gran control creando una máscara para el cálculo de la distancia euclidiana. Por ejemplo, utilice un buffer de 2000 m del polígono como máscara.

Para situar el polígono en una cota fija, añada esa cota al resultado anterior. Así, por ejemplo, una expresión de Álgebra de Mapas podría ser como

Slope = 300 - (1/100) * [Euclidean distance to polygon]

Cuando el límite del polígono se encuentra en elevaciones variables, convierta esas elevaciones en una cuadrícula categórica (entera) si es necesario. (Reduzca el efecto de discretización redondeando al 1/10 o 1/100 de metro más cercano si lo desea).

Integral elevations

Como antes, calcula la cuadrícula de distancia euclidiana.

Distance grid

Calcule también la cuadrícula de asignación euclidiana para el límite: los valores de esta cuadrícula dan las elevaciones de la celda del polígono más cercano.

Euclidean allocation grid

Ahora realiza la misma resta que antes, como en

Slope = [Euclidean allocation] - (1/100) * [Euclidean distance]

Result

(Los puntos de ruptura de color han cambiado ligeramente para acomodar el mayor rango de elevaciones en la cuadrícula resultante).

Puedes ver los problemas con una elevación variable a lo largo del límite. Son parecidos a los que se observan en un tejado de pendiente complicada: aunque el tejado tenga una pendiente constante en todas partes, las crestas y los valles tienen pendientes menores. Por lo tanto, no se puede (normalmente) obtener una superficie de pendiente constante que emane del polígono original (a menos que el límite de ese polígono se comporte como la intersección de un cono de la pendiente deseada y un prisma recto basado en el polígono).

1 votos

Si el límite del polígono no tiene una elevación constante, normalmente no se puede obtener ninguna solución. Se puede obtener una solución aproximada, pero es un poco complicada, así que me he abstenido de especificarla. Hágame saber si necesita ese refinamiento.

0 votos

Hola William - Gracias por responder a esto. Los polígonos que tengo no son de elevación constante pero creo que las soluciones aproximadas estarán bien. Estaba pensando en crear un campo rasterizado con las elevaciones conocidas en el centro y luego utilizar un multi-buffer con anchos establecidos en el mismo incremento que el tamaño del píxel (10m). Entonces, de alguna manera, utilizaría una ventana y un cálculo del vecino más cercano (similar a lo que has recomendado para 2D) para determinar incrementalmente, a medida que una persona se mueve a través de los buffers, las nuevas elevaciones en el gradiente prescibido. Los polígonos están dentro de polígonos más grandes como una máscara.

0 votos

He ilustrado una solución, @Ben.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X