Happy #MapInfoMonday!
We did in an earlier post look into connecting to a (spatial) database using ODBC from MapInfo Pro. In this article, we will take the use of a spatial database from MapInfo Pro a bit further.
Before MapInfo Pro can take advantage of spatial data in a (spatial) database, it needs a MapInfo MapCatalog in the database. This catalog holds information about the spatial data in the tables you want to use in MapInfo Pro. This can be details like the coordinate system, the type of spatial data, how to style the data when viewed in MapInfo Pro, the spatial extent of the data, and a few more details.
These details are stored in the MapInfo_MapCatalog
table under the MapInfo
schema in the database. The MapInfo_MapCatalog
table has these columns for storing this information:
SPATIALTYPE FLOAT
TABLENAME CHAR(32)
OWNERNAME CHAR(32)
SPATIALCOLUMN CHAR(32)
DB_X_LL FLOAT
DB_Y_LL FLOAT
DB_X_UR FLOAT
DB_Y_UR FLOAT
VIEW_X_LL FLOAT
VIEW_Y_LL FLOAT
VIEW_X_UR FLOAT
VIEW_Y_UR FLOAT
COORDINATESYSTEM CHAR(254)
SYMBOL CHAR(254)
XCOLUMNNAME CHAR(32)
YCOLUMNNAME CHAR(32)
RENDITIONTYPE INTEGER
RENDITIONCOLUMN CHAR(32)
RENDITIONTABLE CHAR(32)
NUMBER_ROWS INTEGER
The specific column type may differ from database to database.
As the MapCatalog has to be created under the MapInfo schema, you will need to have some elevated permission on the database to create the MapCatalog. In PostgreSQL, you will at least need the CREATE
privilege for the current database. For SQL Server you will need the CREATE
permission which typically will be included in the db_ddladmin
role and also in the db_owner
role.
Creating the MapCatalog with MapInfo EasyLoader
If your spatial database doesn'øt have the MapCatalog, you will have to create it. That's done very easily with MapInfo EasyLoader. MapInfo EasyLoader is an add-on for MapInfo Pro that can help you upload tables to a spatial database. MapInfo EasyLoader is also a stand-alone application that can be used without MapInfo Pro to upload MapInfo tables.
From the Tools window, ensure that MapInfo EasyLoader has been loaded from the Registered tab. If you use it a lot, consider checking the AutoLoad option to have MapInfo Pro load it automatically on start.
Now double-click on MapInfo EasyLoader in the Running tab, or right-click and click on MapInfo EasyLoader.
The MapInfo EasyLoader dialog will now get loaded.
If this is the first time, you use MapInfo EasyLoader, you will first have to create a new database connection. From the Database Connection dropdown, select <New Connection> and now click on the Manage Connection List control to the right of the list. You can also use this to create another connection in case you have multiple spatial databases.
You will need to give the connection a name and select the type of connection. Oracle is disabled for me as I don't have any Oracle client installed.
I select ODBC as the Connection Type, and then I click on the button next to the DSN Name to select my data source. This will bring up the Select Data Source dialog allowing me to either create a new data source or select an existing one. I switch to the Machine Data Source tab and select my data source from the list.
With a name specified and a data source selected, I can now click on the OK button back in the Database Connection dialog to create a new connection for MapInfo EasyLoader.
Back in the MapInfo EasyLoader dialog, I ensure that the right connection has been selected from the Database Connection list. The next step is to create the MapInfo_MapCatalog
table in the database. To do this, I click on the Map Catalog button.
Now the MapInfo_MapCatalog has been created in the database and you can register spatial tables in the catalog. You can register existing spatial tables using the Make DBMS Table Mappable control on the Table tab. If you upload new tables using MapInfo EasyLoader or via Save Copy As through MapInfo Pro, the tables will automatically get added to the Map Catalog in the database.
Besides creating the Map Catalog, you can as I alluded to above, also use MapInfo EasyLoader to upload existing native tables into your database. This can be done through the MapInfo EasyLoader dialog or you can use the batch approach through batch files.
If you prefer, you can also manually create the MapCatalog in your database. We will not cover this in this article.
------------------------------
Peter Horsbøll Møller
Principal Presales Consultant | Distinguished Engineer
Precisely | Trust in Data
------------------------------