¿Cómo crear, en la forma de un polígono, una cuadrícula regular de polígonos / cuadrados de un tamaño dado, en postgis?
He pensado en una función como ¿Cómo crear una cuadrícula de puntos regular dentro de un polígono en Postgis? solo para cuadrados, de modo que los cuadrados pueden ser de 5m x 5m o incluso de 10m x 10m. Pero no tengo idea de cambiar esto de la manera correcta.
Respuestas:
Aquí hay una función de retorno de conjunto
ST_CreateFishnet
que crea una cuadrícula 2D de geometrías de polígonos:donde
nrow
yncol
son el número de filas y columnas,xsize
yysize
son las longitudes del tamaño de celda, y son opcionalesx0
yy0
son coordenadas para la esquina inferior izquierda.El resultado es
row
ycol
números, comenzando desde 1 en la esquina inferior izquierda, ygeom
polígonos rectangulares para cada celda. Así por ejemplo:O para hacer una única colección de geometría para la cuadrícula completa:
Puede agregar las compensaciones
x0
/y0
origin (estas predeterminadas a cero).fuente
Aquí hay una variante específica de generación, para una situación en la que necesita crear una cuadrícula para un mapa geográfico con un paso métrico constante (las celdas pueden usarse para agrupar valores, por ejemplo, densidad de rayos en una región).
La función no es muy elegante, pero no encontré ninguna solución mejor para esa tarea (incluida la función de Mike Toews anterior). Entonces, tiene un polígono enlazado (por ejemplo, llegado de una interfaz de Google Maps), tiene un valor de paso en metros:
Cómo usarlo:
Entonces puede ver que las líneas formateadas por polígonos generados se encuentran a lo largo de los paralelos geográficos y meridianos, eso es muy conveniente.
Consejo: Si calcula algo como la densidad (por ejemplo, el mapa de rayos por celdas), y la cuadrícula se genera dinámicamente Para aumentar el rendimiento, sugeriría usar tablas temporales para almacenar celdas como polígonos de geometría, con un índice espacial en la columna que representa la célula.
fuente
ST_GeomFromText
al crear un cuadro para agregarsectors
, puede usarST_MakeEnvelope
y solo especificar las coordenadas inferior izquierda y superior derecha del cuadro.Puede crear una cuadrícula regular simplemente vectorizando un ráster vacío:
fuente
He creado una variante de la función de @ Alexander que no requiere que nos transformemos a otro SRID. Esto evita el problema de tener que encontrar una proyección que use medidores como unidades para una región en particular. Se utiliza
ST_Project
para caminar adecuadamente usando la proyección dada. También he agregado unwidth_step
yheight_step
para permitir mosaicos rectangulares en lugar de requerir que sean cuadrados.Puedes usarlo así:
fuente
Aquí hay un algoritmo optimizado y eficiente para crear mallas, cuadrículas regulares, cuadrículas de polígonos, cuadrículas rectangulares dentro de cualquier sobre, polígono o multipolígonos. casi manejar cualquier SRID;
Enlace de repositorio de GitHub
Úselo con una consulta simple; la entrada debe ser un polígono, multipolígono o sobre válido.
fuente