MapInfo Pro

 View Only
  • 1.  MapInfo Monday: Airport Zones in 3D - Part 2

    Posted 03-04-2024 09:53
    Edited by Peter Møller 03-05-2024 01:10
      |   view attached

    Happy #MapInfoMonday!

    This is the second article where we will look into creating 3D objects for use in the 3D map that we added to MapInfo Pro v2023.

    In the first article published last week, we looked into updating all nodes on objects with the same Z values. Today, we will look at have you can update the nodes on your objects with different values.

    To show this, we will create some altitude zones where one end is positioned higher than the other end. They will look like this in a normal map in MapInfo Pro. The altitude zones are the blue trapezoids at the end of each runway.

    First, I have created some helplines to help me position these altitude zones a few kilometers away from the runways but still as extensions to the runways. I'll show you how to do this in a later article. It's a question of rotating and offsetting a copy of the runways.
    The first thing, we need to do is to create a table that can hold the trapezoid that we are creating. Click on the New Table control on the Table tab. I'll use the runways table as a template for the altitude zones table.
    In the New Table Structure dialog, make sure to check the Support M/Z option near the Projection... button.
    Next, make sure you have DrawTools running and make sure the altitude zone layer is editable.

    Creating Altitude Zones

    Now from the Spatial tab, click on the Isosceles Trapezoid control in the Insert dropdown. This will enable a draw tool allowing you to draw a line where you want to create the trapezoid.
    Enable snap and snap to one end of the helper line that is an extension to the runway. Now hold down the mouse button and move the cursor to the other end of the runway drawing an angle and release the mouse button when you snap to the other end of the helper line.
    You will now be prompted to specify the parameters for the isosceles trapezoid.
    Below you can see the initial values. The X, Y, Direction, and Length are coming from the line you drew. You may want to change some of these when you draw your trapezoids.
    In our case, we want to change the direction. It is supposed to be completely opposite to the direction we drew. This means that we should either subtract or add 180 to the value in the Direction, 360 degrees field.
    We also want to change the length of the trapezoid, and finally, we also need to specify the width of the trapezoid at each end. Below you can see the Isosceles Trapezoid dialog with the modified values.
    When we now hit the OK button, the trapezoid will be drawn in the editable layer.
    Now repeat this for the other end of the runway, and then repeat it for the other runways. You will now end up with 6 altitude zones for the three runways. It should look like what you see below.
    There are a couple of ways you can change the Z values on the nodes of the altitude zones. Let's start with doing it one node at a time.

    Update Z Values on a Single Altitude Zone.

    Select the altitude zone that you want to modify and make sure the layer still is editable.
    From the Nodes dropdown on the Spatial tab, select the Set Node Coordinate control. Now click close to a node on the selected object.
    The Set Node Coordinate dialog now shows. Also note that in the map, you can see which node currently is shown in the dialog. It's marked with a different symbol in the map.
    You can use the arrow buttons to the right of the Node y of y text to run through the nodes. The map will keep showing which node you are at.
    You can also change the coordinate values for the current node. This means the X, Y, Z, and M coordinate values. We will set the nodes closest to the runway to 60 and the nodes at the other end of the trapezoid to 150. You may have to enable Z values by checking the Z: checkbox. When you have set the Z value on all nodes, click on the Save button to save the changes to the selected object. Note that the changes aren't yet saved to the table. You have only updated the selected record.

    Updating Z Values using a Nodes Table

    Another way, which often will be quick if you have many nodes or many objects, is to update a table of nodes.
    Let's start by creating a nodes table. Select all the altitude zones and now click on Extract Nodes control on the Spatial tab.
    This will create a new table holding all the nodes from the selected objects. If you browse this table, you can see that it holds a number of columns.
    These columns allow us to determine which node each record matches. Also when you select a node from the browser, you can zoom to this node and see which node it matches in your original polygon table.
    Below you can see that I have selected a few records in the browser window. These are the nodes from the object we changed above using Set Node Coordinate. Note that I mistakenly entered 1500 instead of 150. We also need to change this.
    Using the browser, I can understand what value to assign to which node. The nodes from the trapezoids are all in the same order. This means I can sort the nodes in the Nodes table using the NODE_ID column, and now I can quickly set the new value for the nodes through the browser window.
    Below you can see that I have sorted the browser and changed all the Z attributes.
    I did this manually by pasting the new value into the field and using the arrow keys to run through the records. Had there been more than these 6 records, I could also have used the Update Column dialog to update the Z column with the new values.
    I'll now just have to write the changed Z values on the nodes back to the altitude zone objects.
    Make sure the altitude zone layer still is editable. We can use Update ZM using Nodes from the Nodes dropdown on the Spatial tab. It will try to update the editable layer but also requires that there is a nodes table open where the first part of the table name is the same as the editable layer.
    In the Update MZ Using Nodes dialog, you have to specify where how you want to get the values from the nodes table onto the original table.
    In our example, we will only update the Z values and we will get the updated values from the Z column in the Nodes table.
    When you click OK, the changed Z values will be written back to the objects in the editable layer. Also note that only the records that are referenced in the OBJECT_ID column in the nodes table, will be updated. That's why it's important to select all the altitude zones before extracting the nodes.

    Add a Multiplication Factor to the Z values

    The final step is to multiply the Z values on the nodes with a factor of ten to make them stand out a bit more. We use Update MZ Values from the Nodes dropdown
    Remember to save the changes to the altitude zones table.

    Show the Result in a 3D map

    Now we can show the result in a 3D map.
    I'll pick the Mapzen Terrarium elevation source and a Precisely Maps Tile Server layer as the basis of my 3D map.
    I'll also select a few layers to add to the 3D map from my existing map window.
    The final result should look like this.
    I have also this time included a zip file with the tables required for you to reproduce this. The Zip file contains the runways, the helper lines, and the ZoneMZ tables.
    Let me also again stress that the runways and zones that I have created here are all my making. They are in now way the official runways and airport zones.

    Peter Horsbøll Møller
    Principal Presales Consultant | Distinguished Engineer
    Precisely | Trust in Data


    Altitude   23 KB 1 version

  • 2.  RE: MapInfo Monday: Airport Zones in 3D - Part 2

    Posted 03-05-2024 05:01
    thank you Peter for your explanation work

    Thomas Delaire
    Knowledge Community Shared Account