Actualmente tenemos la lectura de formatos vector y raster y esta prevista la inclusión de los formatos de nubes de puntos y malla.
La lectura y la escritura está en clases separadas tanto para raster como para vector:
ImageReader
ImageWriter
VectorReader
VectorWriter
Estas clases son interfaces (clases virtuales puras) y la implementación de los diferentes formatos se hace mediante clases derivadas privadas (se definen en el fichero c++ y no son directamente accesibles). Para poder crear instancias de estas clases privadas se utilizan las siguientes factorías:
ImageReaderFactory
ImageWriterFactory
VectorReaderFactory
VectorWriterFactory
Estas factorías reciben la ruta del fichero y se encargan de crear la instancia de la clase correspondiente. En el caso de ImageReader:
He replicado este patrón para el caso de las nubes de puntos. De momento sólo funciona con LAS/LAZ pero integrar cualquier otro formato leído por PDAL sería sencillo
Actualmente tenemos la lectura de formatos vector y raster y esta prevista la inclusión de los formatos de nubes de puntos y malla.
La lectura y la escritura está en clases separadas tanto para raster como para vector:
Estas clases son interfaces (clases virtuales puras) y la implementación de los diferentes formatos se hace mediante clases derivadas privadas (se definen en el fichero c++ y no son directamente accesibles). Para poder crear instancias de estas clases privadas se utilizan las siguientes factorías:
Estas factorías reciben la ruta del fichero y se encargan de crear la instancia de la clase correspondiente. En el caso de ImageReader:
La lectura:
Posibles mejoras
El código podría ser mas limpio si tuviésemos otras clases que internamente llamen a la factoría. Algo tipo a:
De está forma se podría reutilizar el mismo objeto para abrir varias imágenes de forma mas sencilla (ahora hay que volver a utilizar la factoría).