icon_map.pngMaps are components that take their layers from other components, with each layer being a drawing, an image or a labels component. Map windows add a tab strip to the bottom of the window with the name of each layer on its tab.  






A drawing, image or labels component can be a layer in many different maps at the same time and it can be open in its own window at the same time.   Changing the component in any one of those windows will change it in all of them.


btn_coord_sys_picker.png When a new map is created it takes its projection from whatever is the first component added to the map.  To change the map's projection, in the Contents pane we click on the coordinate picker button for the map's coordinate system.   Components that appear in a map as layers can use coordinate systems that are different from the map.  They will be re-projected on the fly into the map's coordinate system when displayed in the map.


Layers in a map are seen in the map as if they were a vertical stack of transparent sheets, with the contents of each layer drawn on that sheet. If the contents of a drawing layer have "empty space" between the objects shown in that layer, whatever is in a layer below can be seen through that empty space.   Labels have empty space between the labels and if an image has any transparent pixels layers below the image can be seen through those regions of transparent pixels.


The bottom background color for the map, by default white, is set in Contents - Layers when a map is open.




The vertical order of layers is important because opaque shapes drawn in a higher layer will hide items drawn in lower layers below those shapes.   




For example, suppose we would like to show two layers together in a map, a layer of rivers drawn as blue lines together with a layer of provinces or states drawn as opaque shapes in various colors.   We should position the rivers layer above the provinces layer so that the solid, opaque shapes of provinces will not hide the river lines below.




Maps can have many layers.   To manage these it is often most convenient to use Contents - Layers in addition to the layers tab strip at the bottom of the map.



Tech tip: Unless they contain regions of fully or partially transparent pixels, images are generally opaque and will hide anything in layers below them. That includes image layers such as those brought in from tile image server data sources such as Open Street Maps, Bing, Yandex satellite images, Google and so on.


If we want to create a map that shows locations in a drawing using a Google street map as a background, we should put the drawing layer above the Google layer, that is, with the drawing's layer tab to the left of the Google layer tab.   If we do not see some expected layer in a map, we should drag that layer's tab all the way to the left to make sure it is the uppermost layer in the map.


Do not use the same color as the background color for objects in layers because then they will be invisible against the background color.  Likewise, do not format objects entirely in transparent color as then they will be invisible no matter what the background color may be.   See the Example: How Not to Format a Drawing topic for an example.

Layer Tabs in Map Windows

When a map is opened in a window just like with other components the name of the map will be in the tab for the window at the top of the window.  In addition, the layers of the map will be shown as tabs at the bottom of the map window, each tab giving the name of the layer.




The layer tabs of a map show the order of layers with higher layer tabs to the left and lower layer tabs to the right.   The illustration above shows a map called Australia Hydro that has been opened.  The map has three layers, all drawings, which consist in order from top layer to bottom layer of the Lakes, WatercourseAreas and WatercourseLines drawings.   We have used the Style dialog to format the colors of lakes, areas and lines with slightly different colors.    Contents - Layers has been used to assign a light beige background color to the map.


We can move a layer up or down within the display stack by dragging the layer tab for that layer to the left or right.



Tech tip: Careful readers will notice the illustration shows a map that has a layer with areas above a layer that contains lines. That is unusual.  Because areas are usually opaque they will hide any lines beneath a particular area so we would normally position a layer with lines above a layer with areas.  


The illustration takes the unusual step of putting a layer with areas above a layer of lines because the data sets it utilizes, from an Australian government website, are inconsistent in how they show streams and rivers as either lines or areas.  In some cases wider rivers are shown as areas in one drawing, like the broad river at the top of the window, and also as a network of interwoven lines in an accompanying drawing.  


To avoid a confusing display that shows river lines wending their way through a lake, in our illustration we put areas above lines so that any inconsistency is resolved visually in favor of a prettier and more logical area.





We Alt-click a window's tab to undock it.   We can then resize the undocked window as we like and move it to anywhere on our Windows desktop.




Double-clicking a layer tab turns that layer on and off for display.   





In the illustrations above we have double-clicked the WatercourseLines layer to turn it off, leaving only the Lakes and the WatercourseAreas layers on for display.  The illustrations show the map as an undocked window.  Dock or undock windows by Alt-clicking their title bar.


If we can't see something in a layer that we expect to see it could be that something in a higher layer is blocking it.   If we do not want to drag our layer of interest all the way to the left to make it the uppermost layer, we can double-click off all layers above our layer of interest to see if that indeed is the case.   



i_maplayers02_01.png  i_maplayers02_02.png


If layer names do not fit we can see layers by clicking the down triangle to choose from a pull-down menu of layers.  We can also hover the mouse over the layer to see the full layer name in a tooltip.


We can add layers to a map by dragging components from the Project pane and dropping them into the map.   We can drag and drop one component at a time or several components at a time, using Ctrl-click or Shift-click to highlight more than one component at a time in the Project pane.  We can also drag and drop a folder into the map to add all the components found in that folder and subfolders.


We can delete a layer from a map by right-clicking the layer tab and choosing Delete.  That will delete the layer from the map - it will not delete the layer from the project.




Tech Tip: When adding the first layer to a map, or, if we do not see anything in a map when we open it,  we should make sure to press the Zoom to Fit button.   It is always possible the data is in the map but the viewport of the map is aimed at a location and at a zoom level where the data is not visible.  Another problem might be lack of a coordinate system in the table from which the drawing or image is created.   Open the table's properties: if it does not have a FieldCoordSystem property it does not have a coordinate system and one should be specified.  

Context Menus for Layer Tabs

Right-clicking on a layer tab in a map calls up a useful context menu:



Turn the layer on or off for display.


Pan the map viewport to center the contents of this layer.


Pan and zoom the map viewport to zoom to fit the contents of this layer.


Refresh the layer, taking the latest data from whatever data source is used.   Used in cases where data sources might not signal changes to enable automatic refreshing.


Delete this layer from the map (does not delete the component).


Open this layer in its own window.

Show in Project

Highlight this layer's component in the Project pane, expanding hierarchies and scrolling the project pane as necessary.


Launch the View - Properties dialog with this layer's component.


Consider a map that contains two drawing layers taken from an ESRI gdb file database shown above a layer taken from a Bing image server layer.    For a step-by-step example working with an ESRI gdb file database see the Example: Connect to an ESRI GDB File Geodatabase  topic.


Right-clicking on the wHydrant Drawing layer calls up a context menu:




Clicking on the Zoom option will zoom to fit to show the contents of that layer.




Users familiar with ESRI examples utilizing file geodatabases will recognize the drawing as one of the sample data sets for Naperville, Illinois, in the US, showing the locations of fire hydrants on water mains in Naperville.   


Users of file geodatabases also know that they can often contain very many components.   In a large Manifold project that contains very many data sources and components it is good we have a Show in Project context menu option to highlight in the project the component used for the layer.


il_layers_contextmenu01_04.png il_layers_contextmenu01_05.png


In the case of the layer above, right-clicking  on the layer and choosing Show in Project will open up hierarchies as necessary and scroll the Project pane to highlight the component used.

Map Layers and Projections

A newly-created map takes its projection from the first component that is added to the map.   Therefore, it makes sense to add layers to a map so the first layer added uses the projection we would like the map to use.


btn_coord_sys_picker.png To change the map's projection, in the Contents pane we click on the coordinate picker button for the map's coordinate system.


We can use as many layers as we like in a map window without reducing rendering performance as long as the layers are in the same projection as the map.  If layers require re-projection on the fly to match the projection used by the map, that re-projection can slow down the rendering process.





A map window has a projection that it uses, that is, a coordinate system, which we can see in the Contents pane.   The Contents pane will also report the projections used by the active layer in the map.


The components which appear as layers in a map window can have different coordinate systems from the map window.  The map window will automatically convert on the fly those different coordinate systems into the map's coordinate system to display such layers in the map.


Although Manifold is very fast at re-projecting data on the fly, also using parallel processing if multiple processor cores are available,  the process does take some time.  Re-projection time might not be noticed with smaller data sets but it can become significant with large data sets.   Therefore, to get the fastest possible rendering performance in a map it is best to ensure that all components which are displayed as layers in the map use exactly the same coordinate system as the map window does.   In that case they can be displayed with no time at all required to re-project on the fly.   In the illustration above the layers all use the same Latitude / Longitude coordinate system used by the map.  


Second best is to ensure that the map uses whatever projection is used by the largest component.   When creating a new map if we know that one of the layers will be a 100 GB image and the other layers small drawings in a different projection, we should add the 100 GB image to the map first so the map will use that image's projection for the map.   We can then drag and drop the small drawings into the map.   


When the map renders because it uses the same projection as the image there will be no need to re-project the image on the fly into the map's coordinate system.  For the largest amount of data involved rendering will be fast.    When the drawing layers are rendered during the map's display the drawings will have to be re-projected on the fly into the map's coordinate system but that process will take much less time than re-projecting a large image on the fly.

Parallelized Layer Rendering

Manifold renders maps using parallel performance, taking advantage of multiple cores to render multiple layers and then merging data rendered for different layers in a user interface thread.    As a result maps which have many layers can render as fast as a single drawing with the same amount of data.  




The Log Window will report rendering times for map windows and will report after an @ character the parallelization coefficient achieved in rendering, with a higher coefficient better.  In the example above involving very large vector data the lower value of 2.0 involved a zoom or pan operation in which the contents of few layers were visible while the last value of 8.1 most probably involved a Zoom to Fit operation where the contents of many layers with many objects were visible in the view.   Small data sets will often show low parallelization coefficients  because with small data it is quicker to simply render the data in a single thread than to launch multiple rendering threads on multiple processors.


We can see parallel rendering in action when working with bigger data.  Manifold will display a blue bar at the bottom of the tab for layers in the process of being rendered.   Unless we are working with large data we are unlikely to catch more than a fleeting glimpse of a blue bar at the bottom of a layer tab.   




The screenshot above shows a layer tab for a drawing that contains all of the roads in the United States (approximately 13 gigabytes of vector data) which is currently being rendered, a process that takes under a second on a reasonable desktop computer.  The smaller layers which contain roads for the states of New Hampshire and Maine have already finished rendering in their threads.


If a layer has been updated while it is in the process of rendering, the map window will automatically restart rendering that layer to ensure the latest version is displayed.    That is important when working with components that can change dynamically.


Components displayed as layers in a map can come from any of the sources used to bring data into a Manifold project, some of which can change the components we see without any editing by us.   Some such sources, for example, linking in a drawing from a spatial DBMS like Oracle Spatial, could easily result in drawing data that changes as we are viewing it, for example, when someone else also connected to that spatial DBMS edits the drawing on a different computer.


See Also

Getting Started


How to Edit a Single File










Layer Opacity




View - Panes - Project


Contents Pane


Contents - Layers


Example: How Not to Format a Drawing -  When using Style to format a drawing it is a really bad idea to use the same color for objects that is used for the background color.    It can also be a bad idea to use transparent color.   This topic illustrates why.


Keyboard and Mouse Quick Reference