Solapamiento de líneas en un servicio de mapas optimizado
La canalización de gráficos utilizada en ArcMap y el servicio de mapas estándar están basados en la tecnología de 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 optimizados 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 solapamiento con los símbolos de línea multicapa, como por ejemplo los símbolos de carreteras con color de relleno.
El servicio de mapas optimizado tiene la capacidad de aplicar antialiasing para disminuir los efectos del problema anterior, pero en algunos casos el antialiasing no es la mejor opción. Por ejemplo, el antialiasing puede reducir el rendimiento de un servicio de mapas optimizado. Dependiendo de los requisitos del servicio, tal vez esto sea inaceptable. Además, para los formatos de destino que usan una paleta de ocho 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.
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: la primera 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 convierte en un archivo de definición del servicio de mapa (MSD), los anchos de las líneas de las capas para las que se encuentra habilitada esta opción, se cambiarán automáticamente para asegurarse de que se representarán sistemáticamente a 96 dpi o más. El tamaño del símbolo en el MXD se mantendrá igual. Para muchos 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.
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 siguientes fórmulas. 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 a 1,5, no se debe cambiar el ancho.
Si WidthInPixels es igual a o mayor a 1,5, utilice la siguiente fórmula para determinar el ancho editado:
- NewWidthInPoints = (WidthInPixels + 0,5)
- Después, redondee NewWidthInPoints al siguiente valor entero (número entero) que no sea mayor que NewWidthInPoints.
- 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:
- WidthInPixels = (2,60 * 44)/72,0.
- WidthInPixels es 1,5888888, que es mayor que 1,5, por eso continúe con:
- NewWidthInPoints = (1,588888 + 0,5) = 2,10.
- Redondeando hacia abajo, NewWidthInPoints = 2,0.
- El ancho de línea final se debe establecer en (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:
- WidthInPixels = (2,60 * 120)/72.
- WidthInPixels es 4,33333, que es mayor que 1,5, por eso continúe con:
- NewWidthInPoints = (4,33333 + 0,5) = 4,83.
- NewWidthInPoints se redondea hacia abajo hasta el siguiente entero, 4,0.
- El ancho de línea final se debe establecer como (4,0 * 72)/120 = 2,4 pts.