3 votos

¿Cómo puedo encontrar el porcentaje de solapamiento entre dos shapefiles en QGIS?

Tengo dos shapefiles diferentes ( primero y segundo ). Quiero calcular el grado de solapamiento entre las zonas de licuefacción del segundo shapefile y cada uno de los barrios del primero.

Estoy utilizando QGIS. Mi salida ideal sería algo así como:

nhood    percent in liquefaction
Glen Park            .75
Financial District   .60
Tenderloin           .32
....                 ....

2 votos

En primer lugar, asegúrese de que ambos shapefiles se encuentran en un lugar adecuado proyectado sistema de coordenadas, calcular el área antes de la intersección gis.stackexchange.com/questions/23355/ intersecan los dos shapefiles gis.stackexchange.com/questions/251501/intersect-polygons y luego calcular el área después de la intersección, el porcentaje es área después / área antes.

0 votos

He recibido un Please fix the geometry or change the Processing setting to the 'ignore invalid input features' option mensaje de error al intentar la unión

1 votos

Usted tiene por lo menos una geometría no válida, tener una lectura de gis.stackexchange.com/questions/112687/ y ver si eso ayuda o leer gis.stackexchange.com/questions/289056/ acerca de ignorar las geometrías no válidas (cosa que no sugiero, ya que las geometrías omitidas pueden ser un componente importante).

3voto

Jakub P. Puntos 126
  • Comprobar que no hay geometrías no válidas

Mi forma de hacerlo es Creación de una capa virtual con la sentencia SQL:

SELECT geometry, other_column_names 
FROM layer_name 
WHERE NOT ST_IsValid(geometry) 

Si la capa creada tiene una geometría, identifíquela y fije la geometría correspondiente en la capa original con el botón Herramienta de vértices . A veces el problema no es fácil de solucionar, pero ese es otro problema.

  • Reproyectar ambas capas a un SIR conveniente

Estoy acostumbrado a reproyectar a Mercator transversal, tangencial a un punto del área de trabajo, porque necesito que se conserven los ángulos. Pero se puede utilizar otro CRS. Yo creo un CRS personalizado para cada proyecto, en este proyecto sería:

+proj=tmerc +lat_0=37.77 +lon_0=-122.43 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs

  • Añade un nuevo campo numérico decimal (real) (llamado, por ejemplo, "área") al barrios y rellenarla con el área planimétrica de las geometrías:

area($geometry)

  • Realice la Diferencia entre los barrios y las zonas de licuefacción:

La salida es un nuevo Diferencia capa, con los barrios que son no cubiertos por zonas de licuefacción. En este caso, utilizo la diferencia porque devuelve una sola característica para cada característica de la tabla de entrada, con sus atributos. Para calcular el porcentaje de cobertura, calculo 100 - the percent not covered . (Si necesita los polígonos de las zonas cubiertas, puede hacer una nueva diferencia entre los barrios y esta capa).

  • Añade un nuevo campo de número decimal (real) al Diferencia capa, y rellenarla con el porcentaje en licuefacción:

100 - area($geometry) * 100 / "area"

Si quieres el coeficiente en su lugar:

1 - area($geometry) / "area"

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