Changes (Fix) Editing the legend style for a layout frame no longer resets the Position parameter in the Legend dialog to center / center, losing changes made previously. (Fix) The Merge dialog generates the name for the new component so that it is unique in the data source of the map (was always generating the name that is unique in the currently opened MAP file even if the data source of the map was different). (Fix) The CoordSystemOverride query function no longer fails to apply overrides to an incomplete coordinate system (eg, an empty string). The map window supports the new Save as Image command which allows rendering the contents of the window into an image of the specified size. The image is created in the data source of the map. The default name for the image is '<window name> Image'. Available modes: - 'centered view at current scale' -- renders data from the center of the current view at the current scale, stops when the produced image reaches the specified size,
- 'current view' -- renders data shown in the rectangular area shown in the window with the desired level of detail,
- 'full view' -- renders data in the rectangular area that covers all layers except the base maps (the area shown on Zoom to Fit) with the desired level of detail.
The 'centered view at current scale' mode allows editing both the X and Y size of the produced image. The 'current view' and 'full view' modes only allow editing the X size and automatically set the Y size to be proportional to the dimensions of the render area. The maximum size of the produced image by either X or Y is 25 million pixels (this is not a technical limitation, but rather a sanity check). The 'centered view at current scale' and 'current view' modes allow setting the size of the produced image to that of the current window. The 'full view' mode allows setting the size of the produced image so that it covers all layers with the current scale. Big images are rendered in parts. Rendering an image with multiple parts adjusts label placement logic to avoid part boundaries, to protect from rendering artifacts. Labels placed on a part boundary try moving to alternative locations (and if that fails, eg, due to overlap control, they are suppressed). Rendering an image tracks progress and reports the name of the currently rendered layer. This allows seeing which layers take a long time to render (usually, the layers that are slowest to render are web images such as Bing). Rendering can be canceled at any moment. When rendering is canceled, the system waits for database / web requests that have already been started to either complete or fail. The Save as Image dialog includes an option to render the virtual layers. If the option is turned on, the system renders the virtual layers that are currently shown in the window (background / grid / legend / north arrow / scale bar). If the option is turned off, the system ignores the virtual layers -- in particular, the background of the produced image is made transparent. By default, the option is turned off. The Save as Image dialog includes the Edit Query button that composes the rendering query and allows customizing or saving it. The Save as Image dialog shows the name of the data source that the new image will be created in unless that data source is the currently opened MAP file. The Save as Image dialog selects the produced image in the Project pane after the rendering process completes. New query functions: TileRender - takes a component, the rectangle to render, the render size in pixels, the tile size in pixels, a boolean value that controls whether to render the virtual layers, renders data in the specified rectangle and returns the result as a table of BGRA tiles. The component should be a map or a component that can participate in a map as a layer. The rectangle is specified in the coordinate system of the component. If the proportions of the rectangle do not match the render size, the rectangle is increased to avoid vertical or horizontal distortion (eg, attempting to render a 7000x8000 rectangle into a 200x200 image will increase the rectangle to 8000x8000 to match the proportions of the result). The coordinate system of the result is shifted to the left bottom corner of the render rectangle. If the virtual layers are rendered, their parameters are taken from the component properties. If the virtual layers are not rendered, the background is transparent, the grid, the legend, the north arrow and the scale bar are turned off. TileRenderWindow - same as TileRender, but instead of a component, takes the name of a window and renders data in that window. If the window shows a virtual map, the parameters for the virtual layers are taken from the window. TileRenderSingle - takes a component, the rectangle to render, the render size in pixels, a boolean value that controls whether to render the virtual layers, renders data in the specified rectangle and returns the result as a BGRA tile of the specified size. The component should be a map or a component that can participate in a map as a layer. The rectangle is specified in the coordinate system of the component. If the proportions of the rectangle do not match the render size, the rectangle is increased to avoid vertical or horizontal distortion. If the virtual layers are rendered, their parameters are taken from the component properties. If the virtual layers are not rendered, the background is transparent, the grid, the legend, the north arrow and the scale bar are turned off. TileRenderSingleWindow - same as TileRenderSingle, but instead of a component, takes the name of a window and renders data in that window. If the window shows a virtual map, the parameters for the virtual layers are taken from the window. TileRender / TileRenderWindow are optimized for rendering big images, eg, rendering a map into a static image using the Save as Image command. TileRenderSingle / TileRenderSingleWindow are optimized for rendering small images, eg, rendering a single tile of a map for a web request. All TileRenderXxx query functions require the render rectangle to be non-empty. (If you are computing the render rectangle from component data, watch for cases where the rendered component is empty. The Save as Image dialog sets the render rectangle to [ 0, 0, 1, 1 ] in this case so that an empty component still renders and produces an image.) End of list.
|