1 votos

Eliminación de datos duplicados con FME

Hay tres conjuntos de datos de atropellos de tres instituciones diferentes. Estamos seguros de que un conjunto de datos combinado tendrá duplicados.

Es probable que las tres instituciones registren sus datos de forma diferente:

  • coordenadas de los atropellos con diferentes herramientas: GPS de mano, GPS en los teléfonos, etc. Así que estamos ante una probabilidad de que se registre la misma incidencia con coordenadas con hasta 300 metros de distancia.
  • El tiempo puede ser registrado de manera diferente. Lo más probable es que sea el mismo día, pero esto también puede ser confuso. Hasta 2 días de diferencia. Cuando una institución registra la incidencia a través de los agentes de campo (policía, guardabosques, etc.), la otra podría registrarla pidiendo el número de la semana y fijando después una fecha arbitraria dentro de esa semana.

Por lo tanto, estamos ante un cálculo de distancia bidimensional compuesto por el tiempo y la distancia física. La cercanía podría calcularse en base a la cercanía relativa (estableciendo una lista de distancias para cada objeto en relación con todos los demás objetos para este atributo, o un filtro de distancia absoluta (categorizando las distancias).

Supongo que la forma de hacer esto es ejecutar la coincidencia posterior de acuerdo a las fechas y coordenadas. He estado mirando las diferentes bibliotecas en FME 2015.0 pero no he encontrado ninguno que pueda utilizar la cercanía de coordenadas y la cercanía temporal como filtros.

La forma difícil de encontrar coordenadas vecinas es sacar las coordenadas como números y luego hacer una comparación. Por supuesto, esto significa que tengo que rellenar un array y trabajar en ese array. Luego podría exportarlo y usar un pequeño script de python para hacer el trabajo. Esperaba evitar eso.

¿Alguien tiene ejemplos de tales procedimientos duplicados y sus parámetros/restricciones utilizando FME?

0voto

sebastiaan Puntos 2910

FME no proporciona las herramientas para hacer esto con los transformadores disponibles. Esta solución describe cómo se puede hacer la comprobación de coordenadas utilizando python (PythonCaller). Se basa en una respuesta a una pregunta en stackoverflow .

Este es el procedimiento propuesto que se puede programar en Python:

  1. Las coordenadas se convierten en un atributo

  2. Se establece una lista de coordenadas candidatas y se escribe en el disco

  3. Todas las coordenadas de los objetos se comparan con los candidatos mediante el siguiente procedimiento python llamado desde PythonCaller (borrador de código):

    candList= Extraído de un archivo de texto en disco

    coordenada = get from feature (feature.getAttribute)

    más cercano = min(candList, key=lambda x: distance(x, coordinate))

  4. Dónde está la distancia distance(a, b) es una función que devuelve la distancia entre las coordenadas a y b. Si el par de coordenadas más cercano está a menos de 300 metros se considera un duplicado de coordenadas.

  5. Se añade un atributo con números de pares.

  6. Los pares se consideran para la duplicación/cercanía de fechas (a describir).

  7. A continuación, se fusionan los candidatos finales.

Se podrían considerar otras plataformas. El constructor de modelos en QGIS es flexible y podría representar una plataforma útil. GeoKettle también podría considerarse.

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