Antialiasing de línea en los servicios de mapas

La canalización de gráficos utilizada en ArcMap se basa en la tecnología de la Interfaz de dispositivo gráfico (GDI) de Microsoft. Una de las limitaciones de esta tecnología es que los gráficos sólo se pueden representar mediante coordenadas enteras. Generalmente, la geometría real no se presenta en números enteros, por lo que las coordenadas se redondean hacia arriba o hacia abajo cuando se dibujan utilizando la canalización de gráficos. Esto se puede ver en los formatos de exportación de vectores como PDF; las líneas vectoriales pueden tener algún tipo de escalonamiento cuando se las inspecciona de cerca.

La canalización de gráficos utilizada por las capas de mapa base y los servicios de mapas pueden usar las coordenadas de valores no enteros verdaderas de la geometría y pueden representar con precisión de subpíxel, lo que ofrece una mayor precisión en estos formatos de vectores. Sin embargo, cuando se dibujan estas entidades en formatos ráster como PNG o BMP, las geometrías deben redondearse nuevamente para representarse en un píxel con la resolución solicitada. En resoluciones bajas, esto puede causar un antialiasing con los símbolos de línea multicapa, como por ejemplo los símbolos de carreteras con color de relleno.

Antialiasing de línea en ArcMap y en el servicio de mapas
Ejemplo de antialiasing a causa de una representación más precisa (izquierda: Servicio de mapas, derecho: ArcMap)

Los servicios de mapas son capaces de aplicar antialiasing para aliviar los efectos de la anterior, pero hay algunos casos en los que el antialiasing no es la mejor opción. Por ejemplo, el antialiasing puede reducir el rendimiento de un servicio de mapas. Dependiendo de los requisitos del servicio, tal vez esto sea inaceptable. Además, para los formatos de destino que usan una paleta de 8 bits (como los formatos PNG 8 o GIF), el antialiasing puede resultar poco efectivo debido a que se requiere un difuminado para representar las progresiones continuas de color. Tenga en cuenta que el antialiasing no está disponible para el dibujo de capas de mapa base.

Comparación entre un dibujo solapado y antisolapadas dibujo
El antialiasing puede mejorar considerablemente la apariencia de una línea, pero el coste de rendimiento (izquierda: N.º antialiasing; derecho: Mejor antialiasing).

Para solucionar el problema sin utilizar antialiasing, la ventana Preparar cuenta con un analizador que detecta símbolos de líneas multicapa que podrían llegar a exhibir este problema.

Hay dos soluciones para este analizador. Lo primero es marcar la capa para un ajuste automático de tamaños de líneas durante la conversión. Cuando el documento de mapa se comparte como un servicio de mapas, los anchos de línea de las capas para las que esta opción se habilita cambian automáticamente para garantizar que se representan de forma consistente a 96 dpi o superior. El tamaño del símbolo en el documento de mapa sigue siendo el mismo. Para la mayoría de los usuarios, esta solución es suficiente. Verifique la ventana Vista previa para asegurase de que la apariencia de la línea corregida cumpla con sus expectativas. Observe que este analizador no aparecerá para las capas de mapa base ya que siempre se elije el ajuste automático para este caso.

Antialiasing de líneas antes y después de la corrección
Izquierda: Anchos de línea originales del símbolo de autopista representado en un servicio de mapas; derecha: después de la corrección. Observe que las líneas con color de relleno no aparecen con guiones en la versión corregida.

Una solución alternativa sería cambiar, en forma manual, la estructura del símbolo de línea multicapa para que los tamaños de las líneas sean más adecuados. Esto también permite la conversión para el uso con un dpi de destino que no sea 96 dpi (por ejemplo, 72 dpi).

Diseñar líneas para una resolución específica (dpi)

Para determinar los tamaños de línea adecuados para una resolución dada, introduzca los tamaños de cada símbolo del símbolo de línea multicapa con las siguiente fórmula. Como se indica anteriormente, el valor para TargetResolution debe reflejar la resolución mínima deseada en la que se usará el símbolo.

WidthInPixels = (LineWidth en puntos * TargetResolution en dpi)/72

Si WidthInPixels es menor que 1,5, no se debe cambiar el ancho.

Si WidthInPixels es igual o mayor que 1,5, utilice la siguiente fórmula para determinar el ancho editado:

  1. NewWidthInPoints = (WidthInPixels + 0,5)
  2. Después, redondee NewWidthInPoints al siguiente valor entero (número entero) que no sea mayor que NewWidthInPoints.
  3. El ancho de línea final se debe establecer como (RoundedNewWidthInPoints * 72)/TargetResolution.

Entonces, por ejemplo, si la resolución deseada es 44 dpi y el ancho del símbolo de línea es 2,60, se realiza la siguiente operación matemática:

  1. WidthInPixels = (2,60 * 44)/72,0
  2. WidthInPixels es 1,5888888, que es mayor que 1,5, por eso continúe con:
  3. NewWidthInPoints = (1,588888 + 0,5) = 2,10.
  4. Redondeando hacia abajo, NewWidthInPoints = 2,0
  5. El ancho de línea final se debe establecer como (2,0 * 72)/44 = 3,27 pts.

En otro ejemplo, si la resolución deseada es 120 dpi y el ancho del símbolo de línea es 2,60, se realiza la siguiente operación matemática:

  1. WidthInPixels = (2,60 * 120)/72
  2. WidthInPixels es 4.33333, que es mayor que 1,5, por eso continúe con:
  3. NewWidthInPoints = (4.33333 + 0,5) = 4.83.
  4. NewWidthInPoints se redondea hacia abajo hasta el siguiente entero, 4,0.
  5. El ancho de línea final se debe establecer como (4.0 * 72)/120 = 2,4 pts.
9/11/2013