Más

¿Comprende la precisión de las geodatabases de ArcGIS?

¿Comprende la precisión de las geodatabases de ArcGIS?


Me gustaría saber cómo se maneja la precisión en el software ArcGIS. ¿Está utilizando un motor de sistema de álgebra computarizado real, una biblioteca de precisión arbitraria o hace otros trucos para manejar la precisión?


El precursor de la implementación actual de la gestión de coordenadas en geodatabases se integró por primera vez con el resto de la línea de productos Esri (estación de trabajo Arc / Info, ArcView y ArcIMS) cuando se compró el producto "SDBE" a mediados de la década de 1990. En ese momento, las clases de capacitación "SDE" consistían en la mitad de la programación en "C" y la mitad de SQL, y se dedicaron varios días a trabajar en la transformación de valores de punto flotante de doble precisión al almacenamiento de arreglos enteros. Cuando SDE alcanzó la versión 3.0, las funciones de gestión de formas se volvieron del revés y todos los detalles de la integerización de coordenadas estaban ocultos dentro de la biblioteca SgShape a la que acceden las funciones SE_SHAPE. En 9.0, las referencias de coordenadas se actualizaron para permitir el uso de enteros de 64 bits, y en 9.2 ArcGIS Desktop hizo las referencias de coordenadas de ALTA precisión como predeterminadas.

Los detalles están cubiertos en profundidad por Esri Understanding Coordinate Management en el documento técnico de Geodatabase, pero el concepto básico es realizar todas las comparaciones de coordenadas en el espacio entero. Para hacer estos números enteros, los valores de coordenadas de doble precisión (en cuatro dimensiones, X, Y, Z y M) tienen un origen falso restado, y luego los valores se dividen por un factor de escala y se redondean al número entero más cercano. Para devolver la coordenada codificada a doble precisión, solo necesita multiplicar por el factor de escala y volver a agregar en el origen.

Por ejemplo, un punto en el Ecuador a lo largo del primer meridiano {0,0}, podría haber restado -180 de X y restado -90 de Y, con un factor de escala X / Y de 1000, para producir una ubicación entera {180000,90000} . La precisión interviene en la determinación del factor de escala, ya que la ubicación {-0.0004,0.0003} además mapear a {180000,90000}.

En realidad, nunca debe "amontonar" la esquina inferior izquierda de su envolvente de datos con un origen en el mismo valor (el valor convencional para los sistemas de coordenadas geográficas es ahora {-400, -400}), ya que el origen representa el esquina del cuadrante NE donde pueden residir las coordenadas, y las operaciones de búfer que cruzan ese origen invalidan la geometría.

De manera similar, nunca debe hacer un factor de escala tan pequeño que los datos de su polígono se colapsen en un solo punto. Pero también debe tener cuidado de que el factor de escala sea demasiado grande. En los viejos tiempos, las formas de precisión BÁSICAS estaban limitadas por 31 bits (largo con signo positivo), lo que solo daba ~ 2,1 mil millones de valores discretos, por lo que especificar un factor de escala de 200,000,000 significaba que solo podía mapear un cuadrado de ~ 10 grados con esa precisión. Las formas modernas de ALTA precisión utilizan matrices de enteros de 64 bits, por lo que tienen un techo de precisión de 56 bits (el tamaño de mantisa de punto flotante de 64 bits).

Si bien la ALTA precisión es suficiente para mapear el mundo con un factor de escala de 400M, utilizando factores de escala tan grandes tienen un precio: la matriz de enteros se almacena en la base de datos utilizando un algoritmo de compresión de diferencia, por lo que los valores que están separados por 0,0001 grados se evalúan como si estuvieran separados por 400,000 enteros, lo que requiere 32 bits, mientras que una forma similar con un factor de escala de 1M solo estaría separado por 1000, requiriendo solo 16 bits. Los BLOB almacenados en la base de datos utilizando los factores de escala predeterminados muy grandes generados por ArcGIS Desktop pueden capturar una precisión submilimétrica, pero pueden ser significativamente más grandes que sus hermanos generados de forma personalizada. Dado que las bases de datos generalmente funcionan de manera lineal en función del volumen de datos que deben mover, duplicar el almacenamiento puede tener un costo de rendimiento significativo.


Ver el vídeo: GeodatabaseBasicsPart1