1 votos

Integrar rejilla y polígono de municipios manteniendo el mayor municipio por celda con QGIS (u otro)

Tengo una cuadrícula de 9x9 y un polígono de municipios de una extensa zona de Brasil. Mi objetivo es tener un campo que indique el municipio más grande por celda de la cuadrícula.

He estado probando con intercept sin buenos resultados. Sé que existen preguntas pero no sé cómo manejarlo en QGIS.

Aquí hay una captura de pantalla de lo que estoy hablando:

enter image description here

Estaba pensando que quizás con intersección y luego unión espacial uniendo con máximo pero no funcionó.

Quiero obtener la cuadrícula final con un campo que indique el municipio más grande dentro de cada celda de la cuadrícula.

1voto

Mun Puntos 6844

Esta es otra forma de hacerlo, no podía dejar de pensar en esto y en la oficina me hice un tiempo para resolverlo; estos son los pasos que di en Kosmo:

1.- Crea la rejilla 10x10 km y concatena Fila y Columna en un campo clave

2.- Interseca la cuadrícula con el mapa de municipios el nuevo mapa se llama IntGridMun

3.- Recalcular AREA para IntGridMun

4.- Ordenar el shapefile IntGridMun usando sortshp (FWTools) "sortshp IntGridMun IntGridMunAREADesc AREA descending" esto creará un nuevo shapefile IntGridMunAREADesc

5.- Generar estadísticas para IntGridMunAREADesc agrupar por campo clave Fila y Columna y obtener el nombre del primer municipio

6.- Une la tabla de estadísticas con la rejilla original y ya tendrás tu mapa

enter image description here

Espero que esto ayude

Juan José Del Toro

0voto

GriffinHeart Puntos 187

He aquí una posible solución para la base de datos. Si importa tanto los municipios como los polígonos de la cuadrícula en Spatialite, por ejemplo, y cada tabla espacial de polígonos tiene una columna "id", entonces una consulta como esta:

SELECT m.municipal_id
FROM muinicpalities AS m JOIN grid AS g ON ST_Intersects(m.geometry, g.geometry)
GROUP BY g.grid_id
ORDER BY ST_AREA(ST_Intersection(m.geometry, g.geometry) DESC LIMIT 1;

debería proporcionarle la identificación del municipio con la mayor intersección dentro de cada celda de la cuadrícula. Ahora puedes utilizarlo para actualizar la tabla de cuadrículas de la siguiente manera:

ALTER TABLE grid ADD COLUMN municipal_id INTEGER;

UPDATE grid SET municipal_id=(
SELECT m.municipal_id
FROM municpalities AS m JOIN grid AS g ON ST_Intersects(m.geometry, g.geometry)
WHERE g.grid_id=grid.grid_id
ORDER BY ST_AREA(ST_Intersection(m.geometry, g.geometry) DESC LIMIT 1;
);

HTH

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