How to convert MapInfo to Shapefile (MIF/MID to SHP)

Liz Sanderson
Liz Sanderson
  • Updated

FME Version

  • FME 2019.x

Introduction

This tutorial will show you how to convert MapInfo MIF/MID (*.mif or *.mid) data to Esri Shapefile (*.shp) using FME. Our source data contains area features representing the parks. Each park has an attribute called NeighborhoodName. Using FME, we will create a separate shapefile containing all of the parks for each unique neighborhood, and in doing so we will discover just how easy it is to split data into separate files based on an attribute value. For more information on splitting up data into separate files see the article Fanout.

 

Video

This video was created with FME version 2016.0. Some of the steps might be slightly different, but the overall process is the same for newer versions of FME.

 

Step-By-Step Instructions

1. Inspect the Data in FME

The first step is to inspect the Parks.mif file. Open a blank FME Workspace and add a new reader. In the reader dialog, type in MapInfo MIF/MID, then browse to the Parks.mif file. Click OK to add the reader to the canvas.

reader.png

 

Now to view the data, click on the Parks reader feature type on the canvas to open the popup menu. Then on the popup menu click the View Source Data button to view the data in the Visual Preview Window.

viewdata.png

 

In the Visual Preview window (or FME Data Inspector), take note of the length of the attribute names. Since we are planning on writing out to Esri shapefile we will need to shorten the attribute names to only 10 characters.

visualpreview.png

 

Note: This step can also be completed in FME Data Inspector for versions previous to FME 2019. Just be sure to add the MapInfo (MIF/MID) reader to FME Workbench after inspecting the data.

 

2. Set the Output (Writer) Format to Esri Shapefile

Next, we need to add a writer to the canvas. Click on the Add Writer and in the Add Writer dialog box, for the Format, select Esri Shapefile.

Then for Dataset, browse to a folder to save the shapefile and then click OK to add the writer. Since we will be creating lots of shapefiles, it is a good idea to create a new folder.

writer.png

 

3. Clean up Attribute Names

To shorten the attribute names we will need to use an AttributeManager transformer. Add an AttributeManager transformer to the canvas and connect the input port to the Parks reader feature type and the output to the Parks writer feature type.

workflow.png

 

Open the AttributeManager parameters and change the following Output Attributes:

Input Attribute

Output Attribute

NeighborhoodName

NeighName

SpecialFeatures

Features

 

attributemanager.png

 

4. Update Writer Properties

Now that we have renamed the attributes, we need to reflect the name change in the writer. Open the writer feature type parameters and switch to the User Attributes tab. In this tab, we can see that the attributes are not the same as the ones we just renamed in the AttributeManager. To easily fix this, switch the Attribute Definition to Automatic and it will automatically update to the attributes we renamed.

userattributes.png

 

5. Set Destination Feature Type Name to Attribute Value

Remember our goal is to create separate shapefiles of all the parks based on neighborhood name. In the Feature Type Properties dialog, switch back to the Parameters tab. Then click on the drop-down list next to the Shapefile Name parameter, click on Attribute Value, then select NeighName. Click OK to dismiss the Feature Type Properties dialog.

fanout.png

 

6. Run the Workspace

The workspace is now ready to be run. Run the workspace by clicking on the green play button.

 

7. View the Output Dataset

To view the output dataset, click on the @Value(NeighName) writer feature type to open the popup menu, then click on the Open Containing Folder button.

openfolder.png

 

In the Output folder, there will be a shapefile containing all the parks for each neighborhood.

outputdata.png

 

 

Data Attribution

The data used here originates from open data made available by the City of Vancouver, British Columbia. It contains information licensed under the Open Government License - Vancouver.

Was this article helpful?

Comments

0 comments

Please sign in to leave a comment.