6 votos

¿Creación de datos de la dirección en QGIS entre dos capas?

¿Puedo hacerlo en Qgis, que hay dos capas, una capa de blanco y una capa de entrada, y determinar con un algoritmo para que los puntos más cercanos en la capa de entrada están en la capa de destino en que dirección están?

¿Mide en grados, con la designación de este, oeste, norte, sur, norte este, sur, este, noroeste, sudoeste?

¿Creación de una tabla contiene estos datos?

6voto

Mue Puntos 2469

No hace mucho tiempo, yo hice algo similar con punto dos capas: una que contiene la fuente; el otro que contiene los destinos.

Ejemplo de capas:

Example layers


Yo lo que hice fue:

  1. El uso de la Distancia más cercana a la de concentradores algoritmo con los parámetros siguientes para crear una capa de línea que muestra el más cercano punto de destino al punto de origen:

    Distance to nearest hub

    Usted puede encontrar la herramienta de:

    Processing Toolbox > QGIS geoalgorithms > Vector analysis tools > Distance to nearest hub
    

  1. Crear un verdadero campo (por ejemplo, "Dirección") en la línea resultante de la capa de uso de la Calculadora de Campo para calcular la dirección de las líneas usando la siguiente expresión (como se describe en este post):

    (atan((xat(-1)-xat(0))/(yat(-1)-yat(0)))) * 180/3.14159
    + (180 *(((yat(-1)-yat(0)) < 0) + (((xat(-1)-xat(0)) < 0 
    AND (yat(-1) - yat(0)) >0)*2)))
    

    Field calculator direction


  1. Crear una cadena de campo (por ejemplo, "Principal") en la misma línea de capa para calcular el director de la dirección de la línea (es decir, norte, noreste, etc) usando la siguiente expresión:

    CASE
    WHEN "Direction" >= 348.75 OR "Direction" < 33.75 THEN 'N'
    WHEN "Direction" >= 33.75 AND "Direction" < 78.75 THEN 'NE'
    WHEN "Direction" >= 78.75 AND "Direction" < 123.75 THEN 'E'
    WHEN "Direction" >= 123.75 AND "Direction" < 168.75 THEN 'SE'
    WHEN "Direction" >= 168.75 AND "Direction" < 213.75 THEN 'S'
    WHEN "Direction" >= 213.75 AND "Direction" < 258.75 THEN 'SW'
    WHEN "Direction" >= 258.75 AND "Direction" < 303.75 THEN 'W'
    WHEN "Direction" >= 303.75 AND "Direction" < 348.75 THEN 'NW'
    END
    

    Field Calculator principal


  1. Usted debe (esperemos) tiene el grado de valores y sus respectivas direcciones principales en la Tabla de atributos. Entonces, usted puede, si desea, agregue un poco de estilo y etiquetado para la capa de línea para mostrar los atributos.

    He utilizado una flecha de estilo:

    Arrow style

    Y la etiqueta de:

    label

    Para obtener este resultado:

    Result

3voto

ghotan Puntos 29

Probablemente refFunctions plugin es útil. Se le dará funcionalidades adicionales en la Field Calculator. Cuando la instalación de refFunctions se hace, abra la tabla de atributos de la input_layer. Crear 3 nuevos campos en el siguiente orden:

Campo [pt] ......De texto(String) longitud=40

geomnearest('target_layer', '$geometry')

Campo [az] ......Número Decimal (real) longitud=12.8

degrees(azimuth($geometry,  geom_from_wkt("pt")))

Campo [dir] ......De texto(String) longitud=10

CASE 
WHEN  0 <= "az" AND "az" <= 45 THEN 'N'
WHEN 45 <  "az" AND "az" <= 135 THEN 'E'
WHEN 135 < "az" AND "az" <= 225 THEN 'S'
ELSE 'W'
END

Entonces usted va a conseguir algo como la siguiente:

Lo siento, no era perezoso y se omiten NE, SE, SW, NW, pero para hacerte una idea.

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