My Account     Contact Us     Cart

Articles

Improve Mosaic By Resampling Images in Geographic Imager

The Mosaic function in Geographic Imager merges multiple georeferenced images together to create a single composite georeferenced image. Though the goal of the mosaic is to create a single and seamless composite image, combining images with the Mosaic tool will often result in a slight shift of the imagery due to differences in the original pixel registration grid. This means that even when images are in the same coordinate system with the same spatial resolution, error can still be introduced because of a difference in the pixel alignment. Due to this, mosaicking processes in general tend to produce results that may be very close, but not exact. With this in mind, the results of your mosaic may be improved by resampling your images beforehand to the smallest unit of the resolution.

As an example, let’s say we have an image where the pixel size is 2.00 metres. When plotting the X coordinates of every pixel in this image (using the top left corner of the pixel), the X coordinate value will be incremented by the number/distance of the pixel size. For example, if the X coordinate values were to start at 111.00, then the next pixel would be 113.00, 115.00, 117.00, and so on. It’s important to note that these coordinate values are discrete, which means that the values could not be 113.22 or 115.77 because the origin of the coordinate in this case starts at 111.00 metres.

Now, we have another image that we want to mosaic with the first image. In this instance, the first image will be “Image A” and the second image will be “Image B”. Image B has the same coordinate system as well as the same pixel size as Image A.

Take a look at the X coordinates in Image A and Image B below:

We can see that the X coordinate in the top-left corner is different between these two images, and as previously mentioned, we know that the X coordinate values are discrete. When mosaicking Image B to Image A, the X coordinate cannot be 111.75 or 113.75. The coordinates must be 111.00, 113.00, 115.00, and so on, following the pattern of the pixel grid values in Image A.

This means that Image B will need to be “shifted” or “snapped” to the closest coordinates when the mosaic is performed, see below:

As a result, the X coordinate of Image B will be shifted by 0.75 metres (less than half a pixel). The pixel with X coordinate 111.75 is now placed at 111.00 and the next pixel with X coordinate of 113.75 will now be placed at 113.00, and so on.

With this in mind, the results of your mosaic may be improved by resampling your images to the “smallest unit of the resolution”. The smallest unit of the resolution can be determined from the difference in the coordinates (spatial alignment difference) between the two images.

Looking back at our example, we can see that the smallest unit of the resolution (represented by the blue arrow) in this case is 0.75 metres – this is the value we will use to resample our images.

Once the images have been resampled to 0.75 metres, we may go ahead with our mosaic.

The above example demonstrates the possibility of a pixel shift after a mosaic for two images with a different pixel alignment. It should be noted that this example explains the problem in one-dimension (looking at only the X coordinate) when the image in reality is in two-dimension (looking at both X and Y coordinates). The basic principal of the pixel shift in 2D is the same, but it would include the direction of the shift when mosaicking images. In addition, it’s important to keep in mind that although resampling your images to the smallest unit of the resolution will improve the final mosaic, this is not always an efficient process when mosaicking with more than two images. Another thing to remember is that resampling your images will make your file size much larger. However, in cases where high precision is desired, resampling the images beforehand is a process that should be considered.

Defining the Projection or Projecting the Data?

Have you ever imported data that doesn’t quite line up how you’d expect? It may be that you’ve fallen victim to a common workflow error when importing GIS data. Some file types such as CSV can be used for GIS data but don’t contain coordinate system information. When you are importing data from this format, you first have to define the correct coordinate system.

In this example, we’re going to look at the common mistakes people make and how to avoid them. We’ll start with a world map in the Robinson projection.

Robinson mapWe have a CSV file containing points for large cities that we’d like to add to the map. We know from our data source that the CSV uses the WGS84 coordinate system. After selecting the file for import, the MAPublisher Import dialog box helpfully notifies us that some required settings are missing. We’ll click the blue ‘Required settings are missing’ link to continue.

required settingsSetting up the import, the coordinate column settings are easy since we have an X_COLUMN and a Y_COLUMN, but we can’t forget to check that the format is correct. The default is Projected units, but we know the file uses WGS84, and can tell by the numbers in the column that the coordinates are in decimal degrees, so we’ll change the format to reflect this information and click OK.

csv correct settingsBack at the import window, we see the message ‘Data loaded successfully’. Great! Let’s click OK and add the large cities to the map.

csv settings are okThe data has been imported but the result isn’t what we expected. The new layer has been added to a new MAP View, so let’s try dragging it into the Robinson MAP View with the world map.

import incorrectWe get a prompt saying that there isn’t any coordinate system information. We want it to be in Robinson like the rest of the map so we’re going to leave the default setting of Same as: Robinson.

coordinate system undefinedThe data has moved, but it still doesn’t look like we were expecting. Where did we go wrong here?

transformation incorrectThere are actually two places in the workflow where we could have avoided this common mistake. When we dragged the point layer into the Robinson MAP View, the pop-up dialog box prompted that a coordinate system wasn’t specified. We specified Same as: Robinson, thinking this was the correct choice, but we had already determined during import that the CSV was in WGS84. What we should have done here was to specify the coordinate system as WGS84.

missing coordinates correctThe other place where we could have avoided this error was right after setting up the CSV file for import. In MAPublisher 9.4, there’s a new button on the Import dialog box that allows you to see more detailed information about files being imported. By clicking the Advanced button in the Import dialog box, we would have noticed that there was no coordinate system specified.

advanced import windowEven here, it might have been tempting to choose Same as: Robinson to add it to the Robinson MAP View, but this would import the points exactly the same as before – all in one location in the middle of the map. Instead, what we want to do is click the blue ‘No Coordinate System Specified’ link and choose WGS84. After this is set up, we’ll click OK to add the data to the map.

correct import settingsThe data still isn’t quite right – it looks the same as when we first imported it. But again we notice that it has been imported into a new MAP View, so we’re going to drag the layer into the Robinson MAP View and see what happens.

import incorrectPerfect! By assigning the correct coordinate system to the data during import, the points have been imported correctly!

correct map with pointsMistakes during data import are common amongst GIS users, especially those who are just starting out. In the first scenario, when we imported the CSV and added the data directly to the Robinson MAP View, we thought we were telling MAPublisher that we’d like it to match up with the map. What we really did was tell MAPublisher that the data was already in the Robinson projection, even though we knew it was in WGS84. What we should have done first was to define the projection by telling MAPublisher what coordinate system the data is already using. Once MAPublisher knows what system the data is starting in, we can then ask it to project or transform the data into the coordinate system that we’d like to use.

When working with data that doesn’t have coordinate systems already defined, it is very important to follow the workflow in the correct order to avoid frustration when the data doesn’t line up as expected. Always check your sources when using data that isn’t defined, and make sure you’re assigning the correct coordinate system before performing any transformations or projections.

New Image Data Type Available in MAPublisher

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”.

Edit Schema with a new data type "Image Data Type

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 Let's insert an image file to an attribute cell 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.

Inserting a photo as an attribute value

There are other controls in this dialog box.

Edit Image Attribute Window: button for Select an image 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.
Edit Image Attribute Window: button for Export image attribute as jpg or png Export image as jpg or png
Edit Image Attribute Window: button for removing image from the attribute cell Remove image from the attribute cell
Edit Image Attribute Window: button for navigation control (zoom to fit) Navigation control – zoom to fit
Edit Image Attribute Window: button for navigation control (zoom to actual size) Navigation control – zoom to actual size
Edit Image Attribute Window: button for navigation control (zoom in) Navigation control – zoom in
Edit Image Attribute Window: button for navigation control (zoom out) Navigation control – zoom out
Edit Image Attribute Window: Textbox to change the name of the imageChange 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.

An image file is inserted to an attribute cell as image data

The Image attribute type also supports images exported from PDF Maps (in KML format) and images exported to Google (in KML format).

 

What is the difference between Grid Bounds vs Grid Constraints?

In MAPublisher, the grid bound is the visual extent of the grid or graticule. The grid constraint is the geographic extent of the grid or graticule. It may be a little confusing since both grid bound and grid constraint are defined by coordinate values. In terms of hierarchy, think of the grid bound as the overall container of the grid and the constraint as being contained within the bound.

MAPublisher Grids & Graticules dialog box

These examples may help you better understand it.

1. In this example, the grid bounds are specified as the lower-left and upper-right of the artboard corners. Notice that the graticule extends all the way to the edge of the artboard (as specified). This is a very typical way to use a grid or graticule.

Grid bound extent set to artboard corners

2. Here, the grid bounds are still the lower-left and upper-right of the artboard. The grid constraint is based on the minimum and maximum longitude and latitude values of the specified MAP Locations. Notice that the rectangular black border of the grid bound is at the edge of the artboard. This is also a common way to use a grid or graticule, especially for larger scale maps.

Grid constraints set to MAP Locations

3. In this example, the grid constraints were disabled and, instead, the two MAP Locations are used to define the grid bounds. Notice that the rectangular black border of the grid bound is defined by two MAP Locations.

Grid bound extent set to MAP Locations

4. When both grid bound and grid constraint are set to the same coordinates (in this case, MAP Locations) you can see the result here. The grid bounds are clipping the grid constraints. This would not be an ideal situation to use grid constraints, but it is definitely possible to use it in this fashion.

Both grid bound and grid constraints set to MAP Locations

MAPublisher Grids & Graticules are highly customizable and we’ll be blogging more about its features.

News Archive

Blog Archive

November 2024 (1)
October 2024 (1)
September 2024 (2)
August 2024 (2)
July 2024 (2)
June 2024 (1)
May 2024 (2)
April 2024 (2)
March 2024 (2)
February 2024 (1)
January 2024 (1)
December 2023 (1)
November 2023 (2)
October 2023 (2)
September 2023 (1)
August 2023 (1)
July 2023 (3)
June 2023 (1)
February 2023 (1)
January 2023 (2)
December 2022 (1)
November 2022 (2)
October 2022 (2)
September 2022 (1)
May 2023 (1)
August 2022 (2)
July 2022 (1)
June 2022 (2)
May 2022 (1)
February 2022 (1)
January 2022 (2)
August 2022 (1)
December 2021 (3)
November 2021 (5)
October 2021 (1)
September 2021 (3)
August 2021 (2)
July 2021 (1)
June 2021 (2)
May 2021 (2)
April 2021 (2)
March 2021 (3)
April 2021 (1)
February 2021 (1)
January 2021 (1)
November 2020 (1)
October 2020 (1)
June 2020 (2)
May 2020 (1)
April 2020 (3)
March 2020 (2)
December 2019 (1)
November 2019 (2)
September 2019 (1)
August 2019 (1)
July 2019 (1)
June 2019 (3)
May 2019 (4)
April 2019 (2)
March 2019 (1)
February 2019 (2)
January 2019 (3)
December 2018 (2)
November 2018 (1)
October 2018 (1)
September 2018 (2)
August 2018 (4)
July 2018 (2)
June 2018 (1)
July 2018 (1)
June 2018 (4)
May 2018 (1)
April 2018 (2)
March 2018 (4)
February 2021 (1)
February 2018 (1)
January 2018 (1)
November 2017 (1)
October 2017 (2)
August 2017 (2)
July 2017 (1)
March 2017 (1)
February 2017 (2)
January 2017 (2)
November 2016 (1)
January 2017 (1)
November 2016 (1)
October 2016 (2)
May 2016 (1)
March 2018 (1)
April 2016 (2)
December 2015 (2)
June 2015 (1)
May 2015 (1)
April 2015 (2)
December 2014 (4)
October 2014 (2)
May 2014 (4)
February 2014 (1)
October 2013 (3)
April 2013 (1)
January 2013 (2)
August 2012 (1)
October 2012 (1)
July 2012 (3)
May 2012 (2)
January 2012 (2)
August 2011 (1)
July 2011 (2)
June 2011 (2)
May 2011 (2)
March 2011 (1)
February 2011 (1)
January 2011 (5)
December 2010 (1)
November 2010 (1)
December 2010 (1)
November 2010 (1)
October 2010 (1)
August 2010 (4)
July 2010 (2)
June 2010 (3)
May 2010 (2)
April 2010 (2)
March 2010 (2)