Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hola a todos
Tengo una tabla de estadísticas de delitos y una tabla de sitios de CCTV, vea tablas de ejemplo a continuación. Me gustaría mapear los crímenes alrededor de cada sitio de CCTV, por ejemplo, dentro de los 500 m de cada sitio como se muestra a continuación (aunque no con las etiquetas del sitio, eso fue solo para aclarar),
Puedo aplicar el cálculo de haversina (como se muestra en Phil Seamark en la imagen de abajo). Supongo que la mejor opción es agregar una columna calculada a la tabla de delitos. Lo intenté a continuación, pero obtengo una serie de errores. También tendré que agregar criterios para seleccionar el sitio de CCTV más cercano en caso de que haya dos con 500 m, pero pensé que me centraría en la primera parte.
¿Alguna idea sobre mi enfoque o mi columna calculada?
Instalación de CCTV | |||
ID de cámara | Largo | Años | Año de instalación |
201 | -36.9722 | 174.7867 | 2019 |
202 | -36.9651 | 174.795 | 2017 |
203 | -36.9665 | 174.8085 | 2018 |
204 | -36.9519 | 174.8385 | 2020 |
205 | -36.9656 | 174.8156 | 2019 |
Estadísticas de criminalidad | |||||
Identificación | Largo | Años | Tipo de delito | Año | Columna calculada |
1 | 174.7902527 | -36.97949982 | Propiedad | 2015 | |
2 | 174.7902527 | -36.97949982 | Herida | 2021 | 203 |
3 | 174.8324585 | -36.96062088 | Cibernética | 2015 | |
4 | 174.8324585 | -36.96062088 | Herida | 2017 | |
5 | 174.8353424 | -36.93717957 | Herida | 2020 | |
6 | 174.8353424 | -36.93717957 | Herida | 2016 | 201 |
7 | 174.8353424 | -36.93717957 | Cibernética | 2020 | |
8 | 174.8505554 | -36.9417305 | Cibernética | 2019 | |
9 | 174.8505554 | -36.9417305 | Cibernética | 2018 | |
10 | 174.8505554 | -36.9417305 | Propiedad | 2018 | |
11 | 174.7889252 | -37.00097275 | Herida | 2020 | 205 |
12 | 174.7889252 | -37.00097275 | Propiedad | 2016 | |
13 | 174.7889252 | -37.00097275 | Propiedad | 2018 | |
14 | 174.8352814 | -36.93664932 | Herida | 2019 | |
15 | 174.7895508 | -36.97363281 | Herida | 2018 | 202 |
16 | 174.7895508 | -36.97363281 | Propiedad | 2016 | 202 |
17 | 174.7895508 | -36.97363281 | Propiedad | 2017 | |
18 | 174.8317566 | -36.96046066 | Herida | 2022 | |
19 | 174.8317566 | -36.96046066 | Cibernética | 2021 | |
20 | 174.8399353 | -36.94024658 | Herida | 2017 |
ver mensaje 6
Ahh, sí, me perdí el mensaje 6. Con grandes conjuntos de datos, obtengo algunas bandas inusuales cuando especifico la distancia de 200 m (ver imagen a continuación). Además, la fórmula de haversina que utilizó da resultados de distancia bastante diferentes. Al menos un factor de 2 diferentes. Pensé que serían similares. Revisé la fórmula original midiendo una distancia de Google Maps, y me dio un resultado coincidente dentro de 1 decimal.
Refactoricé la fórmula a su formato más común, a ver si eso es mejor.
DC2 =
var a = summarize(CCTV,CCTV[Camera ID],CCTV[Lat],CCTV[Long],"Dist",12742000 * asin(sqrt(power(sin(RADIANS(CCTV[Lat] - Crimes[Lat]) / 2), 2) + power(sin(RADIANS(CCTV[Long] - Crimes[Long]) / 2), 2) * cos(RADIANS(CCTV[Lat])) * cos(RADIANS(Crimes[Lat])))))
var b = TOPN(1,a,[Dist],ASC)
return CONCATENATEX(b,[Dist])
Es probable que su anillamiento se deba a elegir una columna de la tabla incorrecta.
Perdón por la demora en responder. He estado probando lo anterior. Estaba obteniendo algunos resultados espurios, así que me quedé con la fórmula original de haversina. Eso combinado con su método "brut force it" y una cortadora de distancia funcionó. Así que, muchas gracias por su ayuda.
Idealmente, me gustaría simplificar el código para que solo tenga una columna calculada que devuelva la identificación de CCTV cuando esté a menos de 500 m de distancia. Entonces, si alguien tiene alguna sugerencia para refinar el código, sería muy bien recibido. De lo contrario, seguiré tratando de descubrir algunas opciones.
that returns the CCTV ID when less than 500 m away.
Solo puede decidir eso después de haber calculado la distancia. Así que no hay ninguna ventaja en tirar el resultado. Imagina que luego quieres decir "menos de 1000 m", etc. Mantenga los valores reales.
Una cosa que puede considerar es deshacerse de la Haversina y hacer el cálculo simple de tierra plana basado en el promedio de metros por grado para su área de latitud y longitud. Mucho más fácil de calcular.
1. ¿Cuáles son los errores?
2. ¿No querrías esto como una medida, en lugar de una columna calculada?
Hi Ibendin,
No está reconociendo las referencias de longitud / latitud para cada tabla. Incluso para el Crimen [Latitud] y Crimen [Longitud] parece estar queriendo una medida. Puse una captura de pantalla a continuación. Creo que tiene algo que ver con el hecho de que las tablas no están relacionadas y necesito hacer una operación fila por fila.
Hubiera pensado que una columna calculada sería mejor para una operación fila por fila. Además, puede procesar la información durante la actualización, lo que significa que debería responder más rápido (mi comprensión básica). Pero obviamente mi DAX no está bien.
Básicamente, solo quiero agregar un sitio de CCTV en la columna calculada si está dentro de un cierto radio de la ubicación del crimen. En mi cabeza tiene sentido, pero no estoy seguro de cómo hacer que funcione con tablas no relacionadas.
Puede combinar ambas tablas. Agregue un identificador de tipo de ubicación para distinguir entre cámaras y delitos.
Hi Ibendin,
gracias por el ejemplo. Estoy menos preocupado por mostrar la ubicación de CCTV y más interesado en seleccionar los delitos dentro de un cierto radio basado en el cálculo de haversine. Eventualmente, quiero acampar las tasas de criminalidad dentro de un radio de ubicaciones de CCTV vs tasas de criminalidad más allá de ese radio para ver si hay una diferencia. Creo que para hacer eso, necesitaré tener una columna calculada en la tabla de delitos que agregue un sitio de CCTV si está dentro de un radio. Cualquier pensamiento.
Ah, y gracias a los encabezados.
Saludos Andrés
Lo forzaría brutamente, calcularía la distancia desde la ubicación de un crimen a todas las ubicaciones de la cámara y luego elegiría la más cercana. Almacenar esa distancia probablemente también será útil.
Lol @ "fuerza bruta". Estoy abierto a cualquier cosa. aunque para ubicaciones rurales la ubicación de CCTV más cercana puede estar a kilómetros de distancia. Pero entonces podría filtrarlos. Entonces, ¿cómo se vería la "fuerza bruta"? ¿Sería una columna calculada añadida a la tabla Crimen?
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |