5 votos

Cómo seleccionar al azar adyacentes del censo

He conjunto de secciones censales espaciados a través de una ciudad y me gustaría escoger al azar a un lado de la vía del censo para explorar los alrededores de datos demográficos. No estoy seguro de que si no es un proceso fácil para llegar adyacentes censales seleccionados en las secciones censales.

2voto

Dr Herbie Puntos 2966

Edificio de la otra respuesta, puede agregar las respuestas en una matriz y, a continuación, utilizar el PostgreSQL función random, multiplicado por el array_length para obtener un índice aleatorio de la matriz. El + 1 al final de que es debido a que la matriz de índices comienzan en 1 en PostgreSQL

WITH arrayed_data AS(SELECT ARRAY_AGG(a.tile, ',' ORDER BY a.tile) AS tiles
  FROM cuy_contour_tiles AS p, cuy_contour_tiles AS a
 WHERE ST_Touches(p.geom, a.geom)
   AND p.tile = 'MyCensusTractOfInterest'
 GROUP BY p.tile
 ORDER BY p.tile)

 SELECT tiles[ ( (array_length(tiles,1) - 1) *random())::int + 1]
 FROM arrayed_data

1voto

ane Puntos 116

Uno de mis trucos favoritos es string_agg(). Si Usted puede conseguir sus datos en una moderna base de datos, entonces usted tiene un código como este

SELECT STRING_AGG(a.tile, ',' ORDER BY a.tile) As tiles
  FROM cuy_contour_tiles AS p, cuy_contour_tiles AS a
 WHERE ST_Touches(p.geom, a.geom)
   AND p.tile = 'MyCensusTractOfInterest'
 GROUP BY p.tile
 ORDER BY p.tile;

El código es de Steve Mather entrada en el blog con la adición de un AND cláusula. El Boston de los SIG a la gente a entrar en gran detalle. Sé por experiencia que Oracle los límites de la agregación de 4.000 caracteres = tamaño máximo de VARCHAR2() de la base de datos de la columna tipo.

Si la lista de agregación de los resultados de la función son un problema, a continuación, suelte tanto el STRING_AGG() y GROUP BY p.tile cláusula. Reemplace STRING_AGG() .. AS tiles línea con p.tile AS selected_tile, a.tile AS adjacent_tiles.

En cualquier caso, ahora tienes una lista de las baldosas para averiguar cómo usted al azar de hacer su selección final.

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