We’re excited to announce the release of MAPublisher 10.3 for Adobe Illustrator. We’ve listened to your feedback and worked closely with our users to build features to improve map design and productivity. Stay tuned for more blog posts and other resources that go deeper into some of the new features. For now, here’s an overview:
This update contains new features and performance improvements as well as fixes for reported issues. Some highlights are summarized below, for the full release notes see below.
Compatible with Adobe Illustrator CC 2019. We’re committed to providing the best GIS and cartography tools for building great quality maps in Adobe Illustrator. Improvements to our user interface to support high-resolution monitors, and this release is fully compatible with the latest Adobe Illustrator CC 2019 on both Windows (32-bit and 64-bit) and Mac.
Create Elevation Profile charts. An often-requested feature from our users, elevation data for points along a selected path can now be collected and displayed as an elevation profile in a highly customizable chart. The data is downloaded in real-time from a server (internet connection is required), which can then be customized to your liking using the available settings. Frequently used settings can even be saved for future use.
View data distribution when batch generating rules in MAP Themes and MAP LabelPro. When selecting a data classification in MAP Themes or MAP LabelPro, you now have the ability to see how it affects the data distribution in an interactive histogram and chart. Histograms are a great way to visualize continuous data in intervals and useful for large sets of data points.
Improved attribute capabilities in ‘Join’ tools. We have added many attribute management improvements to MAPublisher Join tools (Join Areas, Join Points, and Join Lines). You can now better manage how attributes are handled during a Join process, including the ability to calculate new attributes. We also added additional operations to help you better sort and calculate statistics from attributes.
MAPublisher 10.3 Release Notes
Compatible with Adobe Illustrator CC 2019
Create Elevation Profile charts
View data distribution when batch generating rules in MAP Themes and MAP LabelPro
The problem with using GIS data for point symbols is that depending on the scale and symbolization you often end up with symbols partly overlapping each other. Of course, the symbols can be manually moved around after initial placement to get a more aesthetically pleasing result, but that can be a tedious and time-intensive task.
Thankfully, there is a way to automate at least part of this process by using MAPublisher and LabelPro.
This example shows the heart of an old European city (Breda in The Netherlands to be exact). The map is composed of Dutch Top10NL topographic base data, a few labels were manually added for larger features (such as the park), and points imported from OpenStreetMap (OSM) and styled using a Map Theme. As you can see, there are a number of spots where the symbols are densely located and overlap each other.
The MAPublisher LabelPro add-on is capable of collision-avoidance to make sure overlaps don’t happen. But it only works when generating labels (text). Fortunately, the solution is to trick LabelPro into processing symbols too, so that they can benefit from better placement without overlaps.
Let’s start by adding a column to the attributes to the OSM points layer and filling it with a default value, a capital O.
Thankfully, there is a way to automate at least part of this process by using MAPublisher and LabelPro.
Next, determine how big the symbols are. On the artboard, use the Type tool to place a capital O and adjust its size so that it’s about the same size as one of the point symbols. In this case, a 14 pt Futura Medium, shown here in red, seems to cover it well (your results might be different).
Futura is a good font in this case because the O is a perfect circle. Once you’ve determined the approximate font size to use, delete the O text as it won’t be needed anymore.
Next, set up the LabelPro labelling rules. Since there is already a layer with the manually placed labels and the symbols shouldn’t interfere with them, the manually placed labels will be designated as an obstacle layer. The symbols layer will be labelled with the attribute created earlier and the style set to the font and size that was just determined.
Setting the appropriate rules partly depends on personal preference but it’s important to specify that the placement prefers the center position (position 1 on the placement control). In other words: if there’s enough space for placement, the label doesn’t need to be moved or offset. Another important rule to configure is that font reduction should be turned off. All of the labels (eventually symbols) are going to be a fixed and similar size.
Also, another good practice is to specify a suppression layer. Any labels that can’t be placed with the rules set will be placed on the suppression layer. After placement, you can determine if any labels need to be adjusted manually.
Let’s label! Go ahead and label with these settings and afterward hide the original symbols layer and the suppression layer. The map is filled with O’s where the original symbols are located.
At first glance, this does not seem very useful, but closer inspection shows that the labels have retained the attributes of the original OSM point symbols.
This means that if they can be turned back into points, they will be able to be styled!
In order to turn them back into points, a text reference point needs to be created. In other words: a little dot on the text selection line, in the center of the O. This is a two-step process. First, select all the O’s on the artboard, open MAPublisher Text Utilities, and set the Action to Set text alignment and Alignment to Center. This action changes the alignment of the text without changing the actual position of the text (due to LabelPro labeling the text alignment is different based on where the label ended up in relation to the original point). This step takes care of the horizontal positioning.
The second step is to adjust vertical positioning. Vertical positioning is adjusted by moving all text up by a certain distance. Make sure all the O’s are selected, then use the (Adobe Illustrator) Move tool. In the Position group, set the Horizontal to 0 (no adjustment here since Text Utilities was used), set the Vertical to minus half the text size (font size in this example was 14 pt, so a vertical adjustment of -7 pt), and the Angle to 90 degrees.
For reference, this example is zoomed into a symbol that did not get displaced.
Next, these labels need to be turned into point symbols. There is a handy option in MAPublisher Text Utilities that can do that, but it places a point to the lower left of the text and the symbols need to use the center text reference point that was just created. Instead, with all of the O labels selected, open the MAP Attributes panel and export the attribute table to a text file. Make sure to specify the option Export All Attributes because there are two important hidden attributes needed to make this work: #MapX and #MapY, which are the coordinates of the text reference point.
Using MAPublisher Import, add the attributes text file that was just created to the map and make sure to appropriately specify #MapX and #MapY in the X and Y coordinate columns.
Since there is no projection information stored in the text file, you’ll need to specify that the coordinates are in the same system as the MAP View it’s coming from and you’ll need to add it to that MAP View upon import.
On the map, there is now a new point layer and because they still have all of their original attributes, the layer can simply be added to the MAP Theme to have all the point symbols reapplied to them instantly. Let’s admire the results:
If needed, repeat the last few steps for the suppressed labels as well (to a different file and different layer of course) to see what still needs to be done manually.
Having introduced some background information about text insertion point coordinate values in a previous post, it would be good to explore if this method works when trying to place text objects (annotations/labels) with a specific offset value. For example, if you have a point layer and there is an attribute for the offset value so that every object has a different offset value.
Placing text objects with a specific offset is possible in MAP LabelPro. You can specify the Label Offset value in the MAP LabelPro dialog box. However, this setting will be applied to all text labels. In the example below (see screenshot), all the text will be placed 0.2 inches away from the object. However, that does not help when every point has different offset value like this example. Also, MAP LabelPro uses page units, not the world/map units. In this example, the offset distance was specified in the world/map unit (metres).
There are two methods you can accomplish to make the text placed with offset value. The first method is the same as the step shown above. You can adjust the text placement position by calculating the “ideal” coordinate for the text insertion point. From a MAP layer (point, line, or area), generate text with a MAPublisher feature (MAP LabelPro or Feature Label). Then adjust the text position (maybe you will have to calculate a new position by adding/subtracting the offset values from the current point), then apply it to #MapX and #MapY. The second method is to adjust the position of the points first before labeling.
In the example below, a point layer with offset values in the attribute: x_Offset and y_Offset.
Step 1: Calculate coordinates with offset.
Create a copy of the layer just because the point value will be adjusted.
Make the #MapX and #MapY visible (so that it’s easy to see when calculating).
Create new columns (here we created “x+coord_withOffsetX” and “y+coord_withOffsetY”).
Calculate the new coordinate of the points for X and Y (here we used Apply Expression) as shown below.
Step 2: Move the points to the calculated coordinates with the offset values.
Use the same method as the one introduced in the previous post. This method works for the Point layer as well. Open the Edit Schema window and apply “x_coord_withOffset” and “y_coord_withOffset” to #MapX and #MapY, respectively.
Now, the points are moved to new position. The red point is the original and the blue points are the ones moved to the offset. Now you can label each points. After placing labels for the point layer (blue), you can make the point layer invisible.
Now you can run the label engine (MAP LabelPro / Label Feature) for the new point layer with offset.
After a text placement engine places labels (e.g. annotations or labels) some manual adjustment is usually required. The major reason for this task is to avoid text colliding with other objects and to improve map aesthetics and composition. Here is an example map with the position of labels manually placed and adjusted. What do you usually do when updating your map and you have to update those labels?
When running a text placement engine, it is common that the placed labels (in red) do not match with the position of the existing labels (in black). Have you ever thought that it would be useful if the updated labels can be positioned in the same place as existing labels? This is definitely possible using a combination of MAPublisher features.
Workflow involved to perform this task:
Obtain the position coordinate of existing text objects
Create new attributes to record #MapX and #MapY of each text object insertion point
Export the attribute table as a text file
Transfer the deteremined coordinte values of the text objects to the MAP layer (point layer in this example)
Join Tables using a common attribute between two tables
Place labels for the MAP layer
MAP LabelPro or Label Features
Adjust the position by those determined coordinate values for the text objects
Applying the recorded value to #MapX and #MapY
Step 1: Find the coordinates of the text insertion point from a text layer.
Every map object (point, line, area, image, and text) has a coordinate. MAPublisher calculates an insertion point when map objects are added to the artboard. For labels, a text insertion point can be seen as an anchor point or the square dot that is at the beginning of a text object. In this example, the text insertion point is placed at the lower-left corner of the word “Le Crocodile Restaurant” (highlighted in the red color in the screencapture below). The coordinate of this text insertion point is represented by the #MapX and #MapY attributes in the MAP Attribute panel. These two attributes are considered MAPublisher properties and are usually hidden. To display them, change their setting to “Visible” in the Edit Schema window as shown below.
Step 2: Record the coordinates of the text insertion point from a text layer.
Make the #MapX and #MapY coordinate values as useable attributes. Create new attributes called “TextCoord_X” and “TextCoord_Y”, then copy the values from #MapX and #MapY using Apply Expression.
Step 3: Prepare to copy coordinates of existing labels to the point layer.
The coordinate values of the text insertion coordinate of a text layer are now copied. The next step is to copy these coordinates from the text layer to the point layer. A simple method to do this is to use Join Tables based on a common attribute. In this example, the string field “RESTAURANT” is the common field in both text and point layers to make a connection. If you already have some other attributes (i.e. object ID or feature ID in both the text layer and the point layer, you should use that). Export the attributes as a text layer from the MAPublisher Attributes panel options menu.
Step 4: Join the Point layer to the exported attributes table.
Now, create a table join between the point layer table and the exported attribute table using the Join Table feature.
Below is the result from joining the tables together. There are also _MapX and _MapY columns because all visible attributes were exported. While the the step of copying attribute to TextCoord_X and TextCoord_Y was not totally be necessary, having columns named _MapX and _MapY could avoid some confusion because the point layer also has #MapX and #MapY columns. In this case, having attributes clearly indicating the values from the text insertion point is what is most important.
Step 5: Place labels with MAPublisher (inherit the attribute values from the point layer to text layer)
Now, place labels with MAPublisher using either Feature Label or MAP LabelPro. The important step here is to inherit the attributes from the point layer to the text layer (the target layer for generating new, updated labels).
When creating a new Text MAP layer, make sure that the “Base attribute schema on:” option is checked. This will allow the text layer to inherit the attributes from the point layer.
Below is the result of placing labels with MAP LabelPro (red labels). The result (in terms of the attribute structure) should be the same if labels are placed using Feature Labels. The position of new labels are not the same as the existing one. The label position can now be adjusted using the TextCoord_X and TextCoord_Y values.
Step 6: Move the text objects by adjusting the #MapX and #MapY.
As illustrated above, the text position is obtained from the text insertion point. The next step is to apply the text insertion point coordinates to the #MapX and #MapY attributes of the point layer using an expression with the Apply Expression feature or use the “Derive value from expression” option in the Edit Schema dialog box.
Apply the TextCoord_X and TextCoord_Y values to #MapX and #MapY, respectively.
The labels are now positioned in the exact same location as the existing text layer.
Do you have pictures and images you want to insert as an attribute in MAPublisher?
MAPublisher 9.4 introduces a new data type called Image. To work with the Image data type, you’ll have to take a look in the MAP Attributes panel. The Image data type can be used in the same way as the other data types in the MAP Attributes panel. Use the Edit Schema dialog box to edit or create the Image data type as an attribute.
For this example, we have a point layer called “Point of Interests”. Let’s create a new attribute column with Image data type called “Picture”.
We added a fourth attribute to this point layer (existing attributes were PlaceName, Note, and PhoneNumber).
Let’s insert an image into the attribute cell. Click the “No image…” hyperlink in the attribute cell. It will open the Edit Picture dialog box. Click to browse for an image to add to the attribute cell. Once the image is added, a preview of the image will be visible in the Edit Picture dialog box.
There are other controls in this dialog box.
Select and insert an image to the attribute cell. Use this button to replace the existing image to something else. You can insert jpg or png file.
Export image as jpg or png
Remove image from the attribute cell
Navigation control – zoom to fit
Navigation control – zoom to actual size
Navigation control – zoom in
Navigation control – zoom out
Change the name of the image
After clicking OK, the image will be listed in the attribute cell. The cell shows the file name of the image (it will be the file name of the image by default but you can change the name of the image to anything else). Also, hovering the mouse pointer over the image name in the attribute cell will show a quick preview of it.
The Image attribute type also supports images exported from PDF Maps (in KML format) and images exported to Google (in KML format).
Have you ever had a point dataset where you wanted to obtain the elevation information for every point?
Instead of looking up another dataset to join elevation values or worse, looking them up by hand, MAPublisher 9.3 introduced a new feature to determine the elevation value for every point in a MAP Point layer using the “Add Calculate Data” tool. . This is based on using a GeoName account (more on this below).
To use it, simply have a MAP Point layer imported to the artboard and open the Add Calculate Data dialog box. In this example, we’re trying to gather elevation points for mountains in Japan. In the Calculation drop-down list, choose Elevation. You can choose the units for the elevation value from the drop-down list. For this example, we are choosing “meter”. If you do not have the GeoName account yet, click the hyperlink and obtain one (for free). After you’ve registered for a GeoName account, enter your username and click “OK”.
A new column “Elev_metre” is populated as specified in the Add Calculated Data dialog window and every point has the elevation information in meters.
This is a handy tool that may help when you have point data along hiking trails, ski courses, waypoints collected with PDF Maps (etc.) or when you need to find elevation data for any type of points.
If you use this feature, please send us your feedback and tell us how you like it!
Do you have some data you would like to divide into multiple layers using unique values in an attribute? If so, you might want to try using the Split Layer feature in MAPublisher.
For example, we have a MAP Layer of the world (world_area layer). The world_area layer has many attributes and one of the attributes is about “Continent” information. With the “Continent” attribute, there are eight unique values: 1) Africa, 2) Antarctica, 3) Asia, 4) Australia, 5) Europe, 6) North America, 7) Oceania, and 8) South America.
To split this world_area layer into eight different layers based on unique values in the “Continent” attribute, we simply specify the Continent layer in the Split Layer dialog box.
Open the Split Layer dialog box. Choose the world_area source layer, then select the option “Split art to new layer(s) by unique attribute value:”. If you have a specific word you would like to include with the eight layers, enter the value for the “New layer prefix” option. Here, we entered the word “continent” as the prefix.
Now you have eight new MAP layers created based on the unique values of the “Continent” attribute. The attribute scheme, structure, and attribute values are inherited from the source layer to the split layers.
A little known (but very useful) feature is the Attribute Tear-Off Panel which is located in the upper-right corner of the MAP Attribute panel (available in MAPublisher that’s compatible with Adobe Illustrator CS6 or higher). Use it to help you edit and view attributes even when they are deselected. It is very handy when used to compare attributes of different datasets.
Simply click the Attribute Tear-Off Panel icon to open another MAP Attribute panel. There are a few key difference between MAP Attribute panel and Tear-off panel:
1) The tear-off panel does not have any MAP Attribute functions (e.g. Join Tables, Find and Replace, Edit Schema, etc).
2) The tear-off panel view remains active and shows attributes even after features are deselected.
If your data values are updated within MAP Attribute panel, click the Attribute Tear-Off Panel again to update the values in the tear-off panel.
This blog post was written by Avenza reseller in The Netherlands, Hans van der Maarel of Red Geographics.
When you’re labeling point features (let’s say cities) in MAPublisher, using either Label Pro or Label Features, and you’re not placing a label for every single point, you’re left with the task of removing the points you haven’t labeled. This trick will have the text inherit the attribute structure of the points including a lat/long and guarantee that there are no orphan points.
Take for example the above map. I want to label the cities, but not all of them. I’ll decide as I go along which city will get labeled, and which will get dropped. In order to more easily remove the unlabeled cities I need to do some preparation. I’ll create two columns in the cities layer, X and Y, and assign the expression #MapX and #MapY to them, respectively. It’s important that you do this through the Apply Expression option in the Map Attribute panel.
This gives two attributes with the original coordinates of the city points.
Next, I’ll create a layer for the labels and put it into the MAP View as a text layer, indicating that I want to copy the attribute structure of the cities layer.
Now that all the preparatory work is done, I’ll start the labeling. I’m going to be using the Label Features option, but this will work with MAP LabelPro as well.
If I select one of the texts and look at its attributes, I’ll see that the attributes from the city point have been transferred to the text, including the X and Y attributes which hold the position of the original city point.
Next, I’ll remove the city points layer, select all city labels and use the Export Attributes option in the MAP Attributes panel:
This will export a comma-delimited text file (CSV). Make sure to check the “Field names on first line” option. It’s not exactly necessary, but it will make things a lot easier.
Import the CSV file back into MAPublisher. Make sure to specify that the projection of the data is the same as the existing MAP View. Once the data is imported, you can apply any existing Stylesheets that you had in place to style the cities, or create a new one. This way, you end up with just the symbols for the cities you’ve actually labeled.
The upcoming release of MAPublisher 8.4 introduces many new features. One of the new features is called Join Areas. We have received a lot of requests from our customers to create area objects by merging common attribute values. This geoprocessing function is generally known as “dissolve”.
The picture below shows polygon objects from a USA Counties layer. The goal is to create a layer with state boundaries and summing the population count by joining the objects of the counties layer.
In the MAP Attributes panel of the USA Counties layer, every object of the counties layer contains attribute information including county name, state name, FIPS codes, area in km2, population and so on. We’ll be using the StateName attribute value to combine all the county polygons into one polygon per state.
This is the new Join Area dialog box. On the left side, we’ll specify 1) target layer, 2) destination (output) layer, 3) join type and 4) join method. We are trying to create state boundaries from the counties target layer so we’ll select a join type based on the StateName attribute and output it to a new layer called USA States. The join will create compound paths and since our goal is to create state polygons, we’ll dissolve borders between adjacent sub-areas.
On the right side of the dialog box are attribute value operations available for each column. These operations determine what kind of the values will result for every attribute and the operations available are different for each data type (String, Real, Integer). The screenshot below shows the attribute value operation set to Sum for Population attribute (Integer data type). When the Join Area is complete, each state polygon will have the sum of the population of all the counties that belong to it.
After running the Join Areas function, county polygons are dissolved into state boundaries.
The population values show the total sum from all the counties for every state.
This is just one example of how Join Areas can be used. It was initially a feature request and with some discussion and planning, it became real. If you have any feature requests for MAPublisher, Geographic Imager or PDF Maps, please feel free to drop us a line at firstname.lastname@example.org. We’re happy to hear from all of you!