Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Welcome 
MapInfo User Conference 2014: GIS Gets Personal 
#MapInfoUC
Hands on Lab 
14D Automating Repetitive 
Tasks with MapBasic 
Peter Horsbøll Møller 
GIS/LI Pre-Sales Specialist 
June 13,...
Automating Repetitive Tasks 
with MapBasic 
Time to look under the hood. 
Open up the MapBasic 
window to see how you can ...
MapBasic Documentation 
MapBasic Help file: Help System (zip) 
MapBasic Reference Guide: Reference 
MapBasic User Guide: U...
MapBasic Help File 
INTRODUCTION 
How to read the Help File? 
MapBasic Fundamentals 
MapInfo User Conference 2014: GIS Get...
MapBasic Documentation 
MapInfo User Conference 2014: GIS Gets Personal 
#MapInfoUC
The Features of the MapBasic Window 
The MapBasic window in MapInfo Professional: 
•Can be opened via Options > Show MapBa...
MapInfo User Conference 2014: GIS Gets Personal 
#MapInfoUC 
Be adviced! 
Please note that 
•The MapBasic statements in th...
Using the MapBasic window 
Open the MapBasic window 
Perform one or more actions using the interface in MapInfo 
Professio...
MapInfo User Conference 2014: GIS Gets Personal 
#MapInfoUC 
Example
MapInfo User Conference 2014: GIS Gets Personal 
#MapInfoUC 
Update Column 
Normally you are limited to updating one colum...
MapInfo User Conference 2014: GIS Gets Personal 
#MapInfoUC 
Exercise 
Dataset 
•Exercise_DataCriminalActivity.TAB 
•Updat...
Append Rows to table 
With Append Rows to Table you can insert records from one 
table into another table 
Using the dialo...
MapInfo User Conference 2014: GIS Gets Personal 
#MapInfoUC 
Exercise 
Dataset 
•USCITY_125.TAB 
•USSTATECAP.TAB 
•Save a ...
MapInfo User Conference 2014: GIS Gets Personal 
#MapInfoUC 
Exercise 
Modify your script to have the style of the state c...
Creating Spatial Features 
You can create points using Table > Create Points. 
And you can create other basic spatial feat...
MapInfo User Conference 2014: GIS Gets Personal 
#MapInfoUC 
Exercise 
Dataset 
•USStates.TAB 
•USUS_HIWAY.TAB 
•USUSCitie...
From Points to Squares 
MapInfo User Conference 2014: GIS Gets Personal 
#MapInfoUC
MapInfo User Conference 2014: GIS Gets Personal 
#MapInfoUC 
Exercise 
Dataset 
•USStates.TAB 
•USUS_HIWAY.TAB 
•USUSCitie...
MapInfo User Conference 2014: GIS Gets Personal 
#MapInfoUC 
Solutions 
Set CoordSys Table CriminalActivity 
Update Crimin...
MapInfo User Conference 2014: GIS Gets Personal 
#MapInfoUC 
Solutions 
Commit Table STATECAP As “…USUSCities.tab" TYPE NA...
MapInfo User Conference 2014: GIS Gets Personal 
#MapInfoUC 
Solutions 
Commit Table STATECAP As “…USUSCities.tab" TYPE NA...
MapInfo User Conference 2014: GIS Gets Personal 
#MapInfoUC 
Solutions 
Set Style Brush(1, 16777215, 16777215) 
Set Style ...
MapInfo User Conference 2014: GIS Gets Personal 
#MapInfoUC 
Solutions 
Alter Table "USCities" 
(add X1 Float,Y1 Float,X2 ...
Get the latest 
MapInfo User Conference news: 
Twitter via #MapInfoUC 
and follow us @MapInfo 
MapInfo User Conference 201...
Upcoming SlideShare
Loading in …5
×

Automating Repetitive Tasks with MapBasic

Time to look under the hood.
Open up the MapBasic window to see how you can automate data processing and other tasks using MapInfo Professional.
You might find some great time savers in this session.
You do not need to be a programmer to benefit from these techniques.

  • Login to see the comments

Automating Repetitive Tasks with MapBasic

  1. 1. Welcome MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC
  2. 2. Hands on Lab 14D Automating Repetitive Tasks with MapBasic Peter Horsbøll Møller GIS/LI Pre-Sales Specialist June 13, 2014 Every connection is a new opportunity™ MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC
  3. 3. Automating Repetitive Tasks with MapBasic Time to look under the hood. Open up the MapBasic window to see how you can automate data processing and other tasks using MapInfo Professional. You might find some great time savers in this session. You do not need to be a programmer to benefit from these techniques. MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC
  4. 4. MapBasic Documentation MapBasic Help file: Help System (zip) MapBasic Reference Guide: Reference MapBasic User Guide: User Guide MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC
  5. 5. MapBasic Help File INTRODUCTION How to read the Help File? MapBasic Fundamentals MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC
  6. 6. MapBasic Documentation MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC
  7. 7. The Features of the MapBasic Window The MapBasic window in MapInfo Professional: •Can be opened via Options > Show MapBasic Window •Records, when open, (most) actions performed by the user in MapInfo Professional •Can also ”play back” actions/statements • Put the cursor in the line and hit the Enter-key • Highlight several lines and hit the Enter-key •You can save statements from the window to a text file via the MapBasic menu •You can clear the content in the window via the MapBasic menu MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC
  8. 8. MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC Be adviced! Please note that •The MapBasic statements in the MapBasic window can be very specific. They can for example refer to a specific window, a specific table or similar •The scenario might not be completely similar next time you want to run a MapBasic statement. Maybe you don’t have any tables open, maybe there are no open windows, maybe the active window isn’t a map window and so on
  9. 9. Using the MapBasic window Open the MapBasic window Perform one or more actions using the interface in MapInfo Professional, that is a menu item, a button or similar Notice that the statements are written to the MapBasic window Now try to execute the statements one at a time via the MapBasic window Remember to clean up before you repeat the actions via the MapBasic window: Close tables or revert changes to tables and so forth. MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC
  10. 10. MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC Example
  11. 11. MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC Update Column Normally you are limited to updating one column at a time thru the Update Column dialog. The MapBasic statement Update Table, however, lets you update several columns at a time Update table Set column = expr [ , column = expr, ...] [ Where RowID = idnum ] Use the dialog to get the syntax for one column and then modify the statement to update several afterwards
  12. 12. MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC Exercise Dataset •Exercise_DataCriminalActivity.TAB •Update X with CentroidX(OBJ) thru the dialog •Modify the Update Table statement to also update: • Y with CentroidY(OBJ) • CRIMEID with RowID •Consider setting the Coordinate System with: • Set CoordSys Table C
  13. 13. Append Rows to table With Append Rows to Table you can insert records from one table into another table Using the dialog you can however not control which column is inserted into which column. When using the dialog the order of the columns is important You can get around this issue using the MapBasic window Insert Into table [ ( columnlist ) ] { Values ( exprlist ) | Select columnlist From table } Using columnlist you can specify columns with names like ID, X, Y, NAME instead of COL1, COL2, COL2, COL4 MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC
  14. 14. MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC Exercise Dataset •USCITY_125.TAB •USSTATECAP.TAB •Save a copy of StateCap as USCities •Append City_125 to USCities using Append Rows to Table •Revert changes to USCities •Modify the statement to use column names •Modify the statement to set FIPS_Code to ”00” for the cities inserted
  15. 15. MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC Exercise Modify your script to have the style of the state capitals as red circles using the statement: Set Style Symbol(35,16711680,12,"MapInfo Symbols",0,0) And the style of the cities as grey circles using this statement: Set Style Symbol (35,8421504,8,"MapInfo Symbols",0,0) Use CreatePoint to recreate the points using the new style You can set the style using Symbol Style and use this statement to get the symbol printed to the Message window: Print CurrentSymbol()
  16. 16. Creating Spatial Features You can create points using Table > Create Points. And you can create other basic spatial features using the MapBasic window and some MapBasic functions:  CreatePoint(x, y)  CreateLine(x1, y1, x2, y2)  CreateCircle(x, y, radius)  Buffer(OBJ, resolution, distance, units) *  MBR(OBJ)  Offset(OBJ, direction, distance, units) *  OffsetXY(OBJ, offsetx, offsety, units) * * Some of the functions above can be used in a Cartesian as well as a Spherical version MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC
  17. 17. MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC Exercise Dataset •USStates.TAB •USUS_HIWAY.TAB •USUSCities.TAB (the table that we created in a previous exercise) •Create buffers around the cities based on the population •Set the size to (POP_1990 / 20000) miles – or pick your own size •Set the style as blue border for cities and red for state capitals
  18. 18. From Points to Squares MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC
  19. 19. MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC Exercise Dataset •USStates.TAB •USUS_HIWAY.TAB •USUSCities.TAB (the table that we created in a previous exercise) •Add four columns (X1, Y1, X2, Y2) of type Float to the table USCities •Update these with: • CentroidX(Offset(OBJ, 45, (POP_1990 / 20000), ”mi”)) • CentroidY(Offset(OBJ, 45, (POP_1990 / 20000), ”mi”)) • CentroidX(Offset(OBJ, 225, (POP_1990 / 20000), ”mi”)) • CentroidY(Offset(OBJ, 225, (POP_1990 / 20000), ”mi”)) •Create a square around each city using CreateLine and MBR
  20. 20. MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC Solutions Set CoordSys Table CriminalActivity Update CriminalActivity Set X = CentroidX(obj) , Y = CentroidY(obj) , CrimeID = ROWID
  21. 21. MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC Solutions Commit Table STATECAP As “…USUSCities.tab" TYPE NATIVE Charset "WindowsLatin1" Interactive Open Table “…USUSCities.TAB" Interactive Insert Into USCities ( Capital, State, Pop_1990, Num_HU_90) Select City, State, Tot_Pop, Tot_hu From CITY_125 Insert Into USCities ( Capital, State, Pop_1990, Num_HU_90) Select City, State, Tot_Pop, Tot_hu From CITY_125
  22. 22. MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC Solutions Commit Table STATECAP As “…USUSCities.tab" TYPE NATIVE Charset "WindowsLatin1" Interactive Open Table “…USUSCities.TAB" Interactive Set Style Symbol(35,16711680,12,"MapInfo Symbols",0,0) Update USCities Set OBJ = CreatePoint(CentroidX(OBJ), CentroidY(OBJ)) Set Style Symbol (35,8421504,8,"MapInfo Symbols",0,0) Insert Into USCities ( Capital, State, Pop_1990, Num_HU_90, FIPS_CODE, OBJ) Select City, State, Tot_Pop, Tot_hu, "00“ , CreatePoint(CentroidX(OBJ), CentroidY(OBJ)) From CITY_125
  23. 23. MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC Solutions Set Style Brush(1, 16777215, 16777215) Set Style BorderPen(1, 2, 16711680) Select * From USCities Where FIPS_Code <> "00" Into __TO_UPDATE Update __TO_UPDATE Set OBJ = Buffer(obj, 100, pop_1990 / 20000, "mi") Set Style BorderPen(1, 2, 3175935) Select * From USCities Where FIPS_Code = "00" Into __TO_UPDATE Update __TO_UPDATE Set OBJ = Buffer(obj, 100, pop_1990 / 20000, "mi")
  24. 24. MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC Solutions Alter Table "USCities" (add X1 Float,Y1 Float,X2 Float,Y2 Float ) Interactive Update USCities Set X1 = CentroidX(Offset(OBJ,45,(POP_1990/20000),"mi")) Update USCities Set Y1 = CentroidY(Offset(OBJ,45,(POP_1990/20000),"mi")) Update USCities Set X2 = CentroidX(Offset(OBJ,225,(POP_1990/20000),"mi")) Update USCities Set Y2 = CentroidY(Offset(OBJ,225,(POP_1990/20000),"mi")) Update USCities Set OBJ = CreateLine(X1, Y1, X2, Y2) Update USCities Set OBJ = MBR(OBJ)
  25. 25. Get the latest MapInfo User Conference news: Twitter via #MapInfoUC and follow us @MapInfo MapInfo User Conference 2014: GIS Gets Personal #MapInfoUC

×