Monday, December 17, 2007

Navigating the G/Tech Metadata with GTI’s Metadata Explorer (GTMetaExp) – Part 1

GTI has gained considerable experience with Intergraph’s G/Technology metadata through the development of our export tools that take GIS data out of Oracle and into the GTViewer format (which can then be used with GTViewer, Pocket GTViewer, and/or GTWeb). GTI’s G/Tech Exporter is now in its fourth generation and offers better support and flexibility for quickly and accurately getting graphic and tabular data out of a G/Tech database. The current incarnation of GTI’s G/Tech Exporter provides a full GUI interface, provides dynamic style and label rule evaluation, and automatically extracts style and symbology information. The Exporter is a heavy user of the G/Tech Metadata when exporting the GIS data, so it was a small leap for GTI to reuse some of this technology in a tool other than the Exporter, and the GTI Metadata Explorer was born.

As many people who deal with G/Tech data know, Toad has been the tool of choice for navigating the G/Tech metadata. The G/Tech metadata contains all of the information describing the GIS and ranges from the list of features and their components, relationships between features, Display Legend info, to symbology. By using Toad’s Schema Browser or by executing home brewed SQL scripts, you can find anything you want to know in the metadata. And while I love Toad (I really do) and all it can do, and fully agree that this method of exploring the metadata is significantly better than what you could do with SQL*Plus or any of the G/Tech utilities, Toad doesn’t know anything about the G/Tech metadata or how the many tables interrelate. It should also be pointed out that Toad shouldn’t know these relationships because it is a database administration and SQL development tool, not a metadata viewer.

It is easy to illustrate the complexity of the metadata just by posing a simple question: “What are the components of a Pole feature?”

First, you need to find the Feature Number for a Pole Feature:

select *
from g3e_feature
where g3e_username='Pole';

Then use the feature number (208) to find the pole feature’s components:

select * from g3e_featurecomponent a, g3e_component b
where a.g3e_fno=208 and a.g3e_cno=b.g3e_cno
order by a.g3e_ordinal;

And you still have to wade through the entire list attributes for the joined table results to get the information you need. If you want to see all of the attributes for one of the tabular components, then SQL gets even more complicated.

With the GTI Metadata Explorer, you simply navigate from Feature to Attribute. To find information out about a Pole, just select it in the feature list:




Clicking on a feature will display all of its component information:





If you want to know the attributes for one of the feature’s tabular component, click on the tabular component in the list.




If you have an attribute associated with a value list, click on the attribute and to get a list of the values.


All together this process looks like the following:



The GTI Metadata Explorer does much more than navigate through the Feature/Component relationships. Other features include the:

Feature to Style functionality which allows the user to navigate from a Legend, to a Features, to the Style Rules, to the Style and Symbology. This feature will be discussed in detail in a later posting, but here is a screenshot of the information it can provide:




Another feature the explorer provides is a set of Validation routines. The correctness of certain aspects of the metadata can be verified.





  • Style Rule, Label Rule, and Label Format validation routines are provided to test the correctness of the expressions used in the metadata rules. It turns out that there are quite a few mistakes in these expressions that G/Tech does not catch and these validation routines can quickly identify them.
  • Other validation routines can detect Unreachable Rules. It is common to see in G/Tech data a list of rules for a feature where one or more rules have the same conditional expression. Obviously, something is wrong with these style rules because the first rule with the expression will always trigger the associated style and the duplicate(s) will never be reached.
  • Legend Validation will analyze a legend’s hierarchical structure and verify that there is a leaf node for legend level of the legend. It is not uncommon to see 3 levels of grouping, but no features at the lowest node.
  • Geometry Property Validation will search for obvious problems in a geometry table’s attributes. Whether these problems come from bulk data conversion when migrating from classic Framme data or from some other process, it is not uncommon to have poorly constructed geometry records in a G/Tech database. This validation is not technically testing metadata correctness since it is examining each geometry record in the database, but it is a useful test none the less.
More detailed information about the validation routines will be in a later posting.

One of the more interesting features of the GTI Metadata Explorer is the Summary Report feature. This report allows the user to select a set of features from a particular legend, then create a summary report for those features that will tell the number of times each style rule and label rule are used for the current data. This report is ideal for testing the integrity of both your data and metadata. For example, if you have no retired poles in your data, but the summary report show that there are 500,000 poles using the Retired Pole symbology, you know there is a problem that should be investigated. The report will also provide a quick and easy view of the usage of your style and label rules which is not something you can do by simply querying the database with Toad.



This posting just gives a taste of what the GTI Metadata Explorer can do. More postings will be added later describing the features in more detail. The Explorer is currently a beta application, but if you would like to try it, please contact me (joey.rogers@gti-us.com), and I will get you started in the beta program.

Friday, December 14, 2007

GTViewer version 7.0.x.20 is Available



Version 7.0.x.20 of GTViewer is available.

-----------------------
07.00.00.20 - 12/13/07
-----------------------

- FIX - Feature Tooltips were causing Data Monitor Tooltips to not display.

- FIX - Feature Tooltips with multiple items where one or more items were blank would unnecessarily show the separator.

- CHG - Feature selection tolerance was increased from 2 to 4.

- NEW - New properties for GetDataProperty and SetDataProperty: EmphasizeSessionGraphicsColor and SelectionTolerance

- FIX - If the GPS Components were not installed, bringing up the GPS dialog could cause unexpected results.

- NEW - Options/Settings now has Selection Tolerance as a property so the user can adjust the tolerance level.

- NEW - New Methods:

boolean SetCurrentBackgroundColor(long value);

long GetCurrentBackgroundColor();

GTVx version 7.0.x.12 is Available



Version 7.0.x.12 of GTVx is available.

-----------------------
07.00.00.12 - 12/13/07
-----------------------

- FIX - Feature Tooltip Definitions were not cleared between opening files.

- FIX - Feature Tooltips were causing Data Monitor Tooltips to not display.

- FIX - Feature Tooltips with multiple items where one or more items were blank would unneccesarily show the separator.

- CHG - Feature selection tolerance was increased from 2 to 4.

- NEW - New properties for GetDataProperty and SetDataProperty: EmphasizeSessionGraphicsColor and SelectionTolerance

- NEW - New Methods:

boolean SetCurrentBackgroundColor(long value);
long GetCurrentBackgroundColor();

Thursday, December 13, 2007

New Utility for GTData: GTDataSum

The GTDataSum utility has been added to GTData. This new utility provides a summary report of the information in an ASCII Tabular File (data.txt) including a list of tables, the number of records in each table, and the size of each table in bytes.

The summary report can be used to determine which tables are taking the most space and identify tables that could have non-essential attributes filtered out.

Monday, December 03, 2007

GTV .NET Control version 7.0.x.28



Version 7.0.x.28 of the GTViewer .NET Control is available.

------------
07.00.00.28 - 12/02/07
------------


- NEW - #158 - Attached Document support: Attach, Detach

- NEW - #159 - New Properties: DocumentId, ViewId, IsChild, ViewType

- NEW - #160 - Overview Mode support added: LinkOverviewToView


GTViewer version 7.0.x.19 is Available



Version 7.0.x.19 of GTViewer is available.

-----------------------
07.00.00.19 - 12/03/07
-----------------------

- FIX - Feature Tooltip was causing redline drawing to behave incorrectly.

-----------------------
07.00.00.18 - 11/20/07
-----------------------

- FIX - Reviewing Linked files with GTViewer would cause a problem.



GTVx version 7.0.x.11 is Available



Version 7.0.x.11 of GTVx is available.

-----------------------
07.00.00.11 - 12/03/07
-----------------------

- FIX - Feature Tooltip was causing redline drawing to behave incorrectly.


-----------------------
07.00.00.10 - 11/20/07
-----------------------

- FIX - Reviewing Linked files with GTViewer would cause a problem.

Tuesday, November 20, 2007

When is "none" really something?

GTViewer provides many ways to report on geospatial information as well as view it. One seldom used but powerful method works within the Query subsystem. If you define a query with the key word "none" enclosed in less-than-greater-than brackets for the PromptText parameter, then the user is not presented with the related attribute for the PromptColumn parameter to fill out when doing a query, but the values of that attribute are returned in the query results. What a sentence!?! Let me give an example. Here is a snippet of a query definition that uses (pipe) instead of the pipe symbol and "none" instead of the word none enclosed in less-than-greater-than brackets.

PromptText(pipe)Substation Name
PromptColumn(pipe)SUB_NAME_CODE
PromptHeading(pipe)Substation Name
PromptText(pipe)"none"
PromptColumn(pipe)FEEDER_NUM
PromptHeading(pipe)Feeder Number

This definition produces the following behavior: The user is presented only with the choice of submitting a Substation Name. But when the results come back on the query results form, the Feeder Number is listed along with the Substation Name.

Then the user can select the COPY button on the query results menu and paste the results into Word, Excel, or an email message as a report.

I used this technique recently to produce a report for a client of all the switches normally set to OPEN. I'm sure the resourceful readers of the GTViewer Blog will come up with more useful reports.

Friday, November 16, 2007

Feature Tooltips in GTViewer and GTVx

A new feature called Feature Tooltips has been added to GTViewer 7.0.x.17 and GTVx 7.0.x.9. A Feature Tooltip will automatically display when the user hovers the mouse cursor over a feature and will display a subset of the feature’s tabular information.

The Feature Tooltip must configured for each feature you want to support. This configuration is done in the .GTM file by adding a list of features and what attributes will be displayed for each feature. Any of the attributes from a feature’s associated tabular records are available for the tooltip.

The Feature Tooltip does not provide any information that cannot be displayed with the Attribute Info mode or by right clicking the mouse on a feature; however, it does provide another way to quickly provide key information for a feature with minimal user interaction.

Examples:

The following screenshot display a Feature Tooltip on a Pole feature:



The following screenshot show the Phase for a Primary Conductor. Note that only the phase value is display with no heading or attribute label.

GTVx version 7.0.x.9 is Available



Version 7.0.x.9 of GTVx is available.

-----------------------
07.00.00.09 - 11/16/07
-----------------------

- NEW - NEW Methods:

boolean AddFeatureTooltipItem(BSTR itemString);

boolean ResetFeatureTooltips();

- NEW - Feature Tooltip support added.

- NEW - Options/Settings has Feature Tooltip added.

- NEW - GetDataProperty and SetDataProperty now support "FeatureTooltips" and "FeatureToolTipMaximumThreshold".

- CHG - Selecting filled Shapes with now work for any point in the shape instead of just the border.




GTViewer version 7.0.x.17 is Available



Version 7.0.x.17 of GTViewer is available.

-----------------------
07.00.00.17 - 11/16/07
-----------------------

- NEW - Feature Tooltip support added.

- NEW - Options/Settings has Feature Tooltip added.

- NEW - GetDataProperty and SetDataProperty now support "FeatureTooltips" and "FeatureToolTipMaximumThreshold".

- CHG - Selecting filled Shapes with now work for any point in the shape instead of just the border.


Thursday, November 08, 2007

GTV .NET Control version 7.0.0.27 is Available



Version 7.0.x.27 of the GTViewer .NET Control is available.

------------
07.00.00.27 - 11/08/07
------------

- NEW - New Methods:

bool ClearStyleMap( int categoryId )

- FIX - #151 - GetFeatureInfo was not populating the OriginX and OriginY properties for symbol elements.

- FIX - #152 - GetFeatureInfo would returned a negative value for symbolId if greater than 127.

- FIX - #153 - GetFeatureRange would fail on groups with Data Only elements (Type 6) and other non-displayable elements.

- NEW - #154 - ClearStyleMap method has been added to allow all style mappings in the session category to be cleared.

- NEW - #155 - GetFeatureInfo will not populate element ranges if requested.

- FIX - #156 - If a device's GPS did not populate the time value for a Coordinate fix,
the coordinate would not be converted from lat/long and the GPS would
be stopped.

- FIX - #157 - ExtendedInfo property not property set for GetFeatureInfo.

PGTV .NET Control version 7.0.0.21 is Available



Version 7.0.x.21 of the PGTV Control is available.

------------
07.00.00.21 - 11/08/07
------------

- NEW - New Methods:

bool ClearStyleMap( int categoryId )

- FIX - #151 - GetFeatureInfo was not populating the OriginX and OriginY properties for symbol elements.

- FIX - #152 - GetFeatureInfo would returned a negative value for symbolId if greater than 127.

- FIX - #153 - GetFeatureRange would fail on groups with Data Only elements (Type 6) and other non-displayable elements.

- NEW - #154 - ClearStyleMap method has been added to allow all style mappings in the session category to be cleared.

- NEW - #155 - GetFeatureInfo will not populate element ranges if requested.

- FIX - #156 - If a device's GPS did not populate the time value for a Coordinate fix, the coordinate would not be converted from lat/long and the GPS would be stopped.

- FIX - #157 - ExtendedInfo property not property set for GetFeatureInfo.

Thursday, October 25, 2007

GTVx Version 7.0.x.8 is Available



Version 7.0.x.8 of GTVx is available.

-----------------------
07.00.00.08 - 10/25/07
-----------------------

- NEW - New Method:

boolean UpdateElementSetAngle(double angle)

boolean ExtractDataByRange(long coordinateMode, double xlow, double ylow, double xhigh, double yhigh, BSTR outputFile, BSTR parameterStr)

- NEW - The UpdateElement method now supports a Mode flag 1024 to modify angles on text and symbol elements. Use the UpdateElementSetAngle to set the new angle value.

- NEW - A Count button has been added to the element tab of the Attribute Info dialog so that the Feature Counting functionality can be launched when reviewing area features (similar to GTViewer).

- NEW - A Copy All Details button has been added to the Feature Count Summary dialog.

- NEW - The ExtractDataByRange method has been added to allow the creation of extract files without any dialogs.

- NEW - The FixedTextPlacementScale property is supported with SetDataProperty to change the text placement size and arrow head size for dimension elements to not be zoom dependent. Set to the zoom level you want the text size to be based or 0 (default) to work as it has in the past.

- NEW - Attribute Info's Element Tab will now show Area for a closed element and Distance. These additional property are for none latitude/longitude projections.

-----------------------
07.00.00.07 - 10/02/07
-----------------------

- CHG - Evaluation Expiration.

Pocket GTViewer version 7.0.x.7 is Available


Pocket GTViewer version 7.0.x.7 is now available.


-----------
07.00.00.07 - 10/25/07
-----------

- FIX - If the Trimble Components were not loaded, error message were displayed saying that certain object could not be initialized. These message have been hidden (it is not required to install the Trimble components).

- FIX - If an Intersection Query had 3 prompts, the 3rd field would be correct in the query results.

- NEW - Upgraded to PFTools 2.2. Requires upgraded PFTools installed on device when using GPS.


GTData Version 7.0.0.3 is Available



Version 7.0.0.3 of GTData is available.

-----------
07.00.00.03 - 10/25/07
-----------

- NEW - GTExtract, GTPack - The -ccen, -acen, and -z flags have been added to allow a default zoom level and/or center view location to be specified.

- NEW - GTQuery now supports the "GIS:" description tag in .flt file so that a feature can be specified by a feature:component number pair (as defined in the GIS: string).

- FIX - GTInterGtg - If an invalid mode was defined, the application would run, but no intersections would be found. Now if an invalid mode is given, it will report the error and stop.

- NEW - GTStyleMgr - The -update mode has been added to allow Style Definition files to be integrated into an existing style .def file. The properties defined in the update file will be added to the existing file (instead of replacing the modified style with the new style as the -import mode does).

- FIX - GTConv - Problem with certain arcs and ellipses with negative rotations.

- NEW - GTShapeConv - Multipoint type are now treated as a single point feature instead of an unsupported type.

GTViewer 7.0.x.16 is Available



Version 7.0.x.16 of GTViewer is available.

-----------------------
07.00.00.16 - 10/25/07
-----------------------

- NEW - New Method:

boolean UpdateElementSetAngle(double angle)

- NEW - The UpdateElement method now supports a Mode flag 1024 to modify angles on text and symbol elements. Use the UpdateElementSetAngle to set the new angle value.

- NEW - The FixedTextPlacementScale property is supported with SetDataProperty to change the text placement size and arrow head size for dimension elements to not be zoom dependent. Set to the zoom level you want the text size to be based or 0 (default) to work as it has in the past.

- NEW - Attribute Info's Element Tab will now show Area for a closed element and Distance. These additional property are for none latitude/longitude projections.

- CHG - Instead of the Text Element weight being reset to 1 for each new text element, it will remember its last setting.

- FIX - Placing the first text Element gave a bogus measurement for the movement distance.

-----------------------
07.00.00.15 - 10/02/07
-----------------------

- CHG - Evaluation Expiration Extended.

PGTV .NET Control Version 7.0.x.20 is Available



Version 7.0.x.20 of the PGTV Control is available.

------------
07.00.00.20 - 10/25/07
------------


- NEW - New Methods:

bool SetDisplayFilters( ArrayList list )

- NEW - #139 - Raster property added. True if raster is available and false if not.

- NEW - #140 - SetDisplayFilters has added to define a new set of filter entries for the Session Category.

- NEW - #141 - ActivateCaptureFeature was not respecting the supplied filter string.

- CHG - #143 - To allow the same FilterItemType class to be used to retrieve and set filter items, priority was added as a class property.

- NEW - #144 - GetDisplayFilterList will now populate the priority property for a filter.

- FIX - #145 - ProcessFeaturesAtPoint would trigger the feature captured event and then button up event would trigger it again.

- FIX - #146 - ActiveCaptureFeatureMode was overriding the filter string for regular attribute info (tap-and-hold and ProcessFeaturesAtPoint).

- FIX - #147 - ActivateMeasureMode was sending a Capture_Mode message event instead of a Measure_Mode message event.

- CHG - #148 - ImportSession was returning a long instead of an int.

- FIX - #149 - GetFilterListToBuffer was not ordering the items by feature, component, and priority.

- FIX - #150 - Updates to the GPS Indicator so that if it is not Kept in View and it leaves the view, the last indicator in the view is erased.


GTV .NET Control Version 7.0.0.26 is Available



Version 7.0.x.26 of the GTViewer .NET Control is available.

------------
07.00.00.26 - 10/25/07
------------

- FIX - #147 - ActivateMeasureMode was sending a Capture_Mode message event instead of a Measure_Mode message event.

- CHG - #148 - ImportSession was returning a long instead of an int.

- FIX - #149 - GetFilterListToBuffer was not ordering the items by feature, component, and priority.

- FIX - #150 - Updates to the GPS Indicator so that if it is not Kept in View and it leaves the view, the last indicator in the view is erased.

------------
07.00.00.25
------------

- FIX - #145 - ProcessFeaturesAtPoint would trigger the feature captured event and then button up event would trigger it again.

- FIX - #146 - ActiveCaptureFeatureMode was overriding the filter string for regular attribute info (tap-and-hold and ProcessFeaturesAtPoint).

------------
07.00.00.24
------------

- NEW - New Methods:

bool SetDisplayFilters( ArrayList list )

- NEW - #140 - SetDisplayFilters has added to define a new set of filter entries for the Session Category.

- NEW - #141 - ActivateCaptureFeatureMode was not respecting the supplied filter string.

- NEW - #142 - The Feature Capture mode will now accept the mouse up event to trigger feature selection.

- CHG - #143 - To allow the same FilterItemType class to be used to retrieve and set filter items, priority was added as a class property.

- NEW - #144 - GetDisplayFilterList will now populate the priority property for a filter.

------------
07.00.00.23
------------
- NEW - New Methods:

bool AddCustomMenuItem(String name, CustomMenuDelegate clickDelegate, CustomMenuEnabledDelegate enabledDelegate,
CustomMenuCheckedDelegate checkedDelegate)

- NEW - #136 - Mode Property now supports the Measure, Draw_Line, Draw_Circle, Draw_Ellipse, Draw_Recantangle, Draw_Freehand, Draw_Area, and Draw_Delete. AddCustomMenuItem will also support these new modes.

- CHG - #137 - Tap-And-Hold will now trigger the custom menu items as well as the ProcessFeaturesAtPoint method.

- NEW - #138 - New AddCustomMenuItem method with a checkmark and enabled callbacks.

- NEW - #139 - Raster property added. True if raster is available and false if not.

------------
07.00.00.22
------------

- NEW - New Methods:

bool ClearCustomMenuItems()

bool AddCustomMenuItem(String name, CustomMenuDelegate clickDelegate)

bool AddCustomMenuItem(String name, ModeType mode)

- NEW - #135 - Custom Menu Item support.

Monday, October 15, 2007

GTV .NET Control Version 7.0.0.21 is Available



Version 7.0.x.21 of the GTViewer .NET Control is available.

------------
07.00.00.21 - 10/15/07
------------

- NEW - New Methods:

bool InitializeGetSessionElements(String filterStr, bool keyFlag, bool dataFlag)
bool GetNextSessionElement( out int offset )
long ImportSession(String filename)
bool ExportSession(String filename, String filterStr, bool keyFlag, bool dataFlag)

- FIX - #128 - Intersection queriers with 3 prompts would return garbage for the third value in the query results.

- CHG - #129 - Filter Ids per category increased from 500 to 2000.

- CHG - #130 - UDLS limit increased from 75 to 250.

- NEW - #131 - InitializeGetSessionFeatures and GetNextSessionFeature have been added to allow reading of all Session features.

- NEW - #133 - ExportSession and ImportSession have been added.

- FIX - #134 - Fix to Shape Element rendering.

PGTV .NET Control Version 7.0.x.19 is Available



Version 7.0.x.19 of the PGTV Control is available.


------------
07.00.00.19 - 10/15/07
------------


- NEW - New Methods:

bool InitializeGetSessionElements(String filterStr, bool keyFlag, bool dataFlag)
bool GetNextSessionElement( out int offset )
long ImportSession(String filename)
bool ExportSession(String filename, String filterStr, bool keyFlag, bool dataFlag)

- NEW - #131 - InitializeGetSessionFeatures and GetNextSessionFeature have been added to allow reading of all Session features.

- FIX - #132 - Intersection queries with 3 prompts would return garbage for the third value in the query results.

- NEW - #133 - ExportSession and ImportSession have been added.

- FIX - #134 - Fix to Shape Element rendering.

Monday, October 08, 2007

Gold Sponsor at Rocket City Geospatial Conference



Come by the GTI booth at the Rocket City Geospatial Conference in Huntsville, Alabama, October 16-17. See GTViewer show off its ease of use and speedy map display performance. Ask us about network tracing solutions and field data collection. See the ultimate in portability: map display on a cell phone.

Thursday, October 04, 2007

PGTV .NET Control Version 7.0.x.18 is Available



Version 7.0.x.17 of the PGTV Control is available.

------------
07.00.00.18 - 10/04/07
------------
- NEW - #125 - OriginOffsetX and OriginOffsetY have been implemented for TrueType Text Element symbols.


- FIX - #126 - Updating the view while in Capture Point with Keys mode did not update the cursor position to the new view. Now, the cursor position will be updated to the center of the view if the view changes (as with a query locate).

- FIX - #127 - Capture Point with Keys mode was only sending 0 for the capture id.

- FIX - #128 - Key Cursor was erased by GPS Indicator.

- CHG - #129 - Filter id per category increased from 500 to 2000.

- CHG - #130 - UDLS limit increased from 75 to 250.

Tuesday, October 02, 2007

Pocket GTViewer version 7.0.x.6 is Available


Pocket GTViewer version 7.0.x.6 is now available.


-----------

07.00.00.06 - 10/02/07
-----------

- NEW - OriginOffsetX and OriginOffsetY have been implemented for TrueType Text Element symbols.

- NEW - Upgraded to PFTools 2.1. Requires upgraded PFTools installed on device when using GPS.

- NEW - Trimble Battery Event implemented. Will display message if battery is Low, Critical, or Dead. Tracking will be automatically stopped if battery is Critical or Dead.

- CHG - Maximum number of UDLS definitions has been increased from 75 to 250.

- CHG - Maximum number of Filter Id per category has been increased from 500 to 2000.

- FIX - Linked File was not adding a "\" character after a base path if one was not already present. So a base path of \jpg and a file of test.jpg would be \jpgtest.jpg instead of \jpg\test.jpg.

- NEW - token now supported in Link path definitions.


Friday, September 28, 2007

Creating Features with FME by combining Graphics From CAD files and a Database

It is not uncommon to have CAD files (such as Autocad or Microstation) whose elements have embedded keys to an external database (such as an Access file or even Oracle). While these systems are not traditional GIS systems, the data can be combined with FME to appear like GIS features when viewing them in GTViewer. When I say appears like GIS features, I mean that if you review the graphic representation of a feature, you will get one or more tabular records related to that feature, and you can locate on a feature based on its associated tabular attributes.

Using FME and the GTViewer plug-in, you can take CAD files and a database and pretty easily make a GIS-like dataset for GTViewer. In this posting, I am going to take an Autocad file (.dwg) and an Access File (.mdb) with two tables. To make this task a little more interesting, the feature in the CAD file is a customer location with an embedded customer number (as a string value) and the Access file has two tables (Customer and Tap) where one record out of each table will be associated with each graphic.

Fortunately, FME provides the Joiner transformer to do all of the hard work. If we only had one table to join to the graphic feature, the task is trivial, so I will begin by using a Joiner to add one of the records to the geometry and create a new GTViewer destination feature called Customer.

Using the Joiner transformer, we can specify a table (Customer) in the .mdb file and then a key from the CAD feature (Con_Number) and key from the database records (Cust_Num). The destination is a GTViewer feature and it has the attributes copied from the transformer to look like the following:


This simple configuration will do all that is required for joining one record into the graphics. But in our case, we have records from two different tables that need to be associated with the geometry and the configuration is a little more complicated.

First, we need to add a Counter transformer to generate a unique key that we can be use for the geometry and the two records. This key links the geometry to the tabular data and vice versa.

The count output attribute can be named gti_key2 and will be one part of the key used by GTViewer. The count should start at 1 too, since 0 is not a valid key in GTViewer.



On the Customer output feature, two format attributes need to be exposed: gti_key1 and gti_key2. Normally, these keys are automatically populated by FME to keep the graphic and tabular components associated with one another, but we need to control the key generation process in this example so that we can use the same keys on another record. Since we renamed the count output value as gti_key2, it is automatically linked up (it doesn’t have to be exposed, but the green arrow is a good confirmation that you have things setup). The gti_key1 value needs to be set to some arbitrary value (I picked 9999). The key 1 value is usually a table id, but can be assigned anything. We just need to make sure that the graphic and its tabular data and the additional tabular record all use the same key1 and key2 values. The schematic below will now work for the first table (producing the same output as the previous schematic), but we have control over the keys:




The next step is to add another GTViewer Destination Feature for the additional tabular record. Since this is going to be records for the Tap table, I will call it Tap:




Now comes the fun part. We add a second Joiner (called Joiner_Tap) and specify the Tap table in our .mdb file. We then set the key from the autocad feature (Con_Number) and a key from the tap table (AccountNum). Our newly created Tap output feature needs to have three format attributes exposed: gti_key1, gti_key2, and gti_type. The key attributes are the same as in our first feature. The gti_type needs to be set to gti_data because we don’t want another graphic generated for the feature, just the tabular record. We then copy the attributes from the Joiner_Tap transformer, and voila!



In GTViewer, you can review one of the customer graphics and get both of the record just like it was real GIS feature:




GTViewer 7.0.x.14 is Available



Version 7.0.x.14 of GTViewer is available.

-----------------------
07.00.00.14 - 09/28/07
-----------------------

- FIX - Upgraded ECW Library to version 3.3.0.185 to correct a color depth problem encountered when printing.

GTVx Version 7.0.x.6 is Available



Version 7.0.x.6 of GTVx is available.

-----------------------
07.00.00.06 - 09/28/07
-----------------------

- FIX - Upgraded ECW Library to version 3.3.0.185 to correct a color depth problem encountered when printing.

- CHG - Max UDLS defintions increased to 1000.

- CHG - Max Filter Definitions increased to 2500.


Tuesday, September 25, 2007

GTViewer 7.0.x.12 is Available



Version 7.0.x.12 of GTViewer is available.

-----------------------
07.00.00.12 - 09/25/07
-----------------------
- CHG - Max UDLS defintions increased to 1000.


- CHG - Max Filter Definitions increased to 2500.

- NEW - Additional Logging for GPS points has been added when Logging is on Maximum.

- NEW - External Application Mode 2 has been added to provide single instance non-modal external applications.

- FIX - NMEA GPS sentence validations relaxed for devices like the Panasonic Toughbook that does not provide certain information in the NMEA sentences (such as Time).

Monday, September 17, 2007

GTVx Version 7.0.x.5 is Available



Version 7.0.x.5 of GTVx is available.

-----------------------
07.00.00.05 - 09/17/07
-----------------------
- NEW - OriginOffsetX and OriginOffsetY have been implemented for TrueType Text Element symbols.


- NEW - Upgraded ECW Library to version 3.3 and added support for .JP2 and .ERS files.

- FIX - Additional Properties were not being between session and could duplicate cumulative item entries like RasterPC.

- NEW - Magnify Window can not be dynamically sized and moved.

- NEW - Magnify Window can now be position at any location (instead of just 0,0).

- FIX - Magnify Window was not updating correctly if the height and width were not equal.

- NEW - New Methods:

oolean SetMagnifyWindowPosition(long x, long y);
boolean GetMagnifyWindowPosition(long* x, long* y);

Wednesday, August 29, 2007

Raster Updates



GTViewer, GTVx, and the GTV .NET Control all received upgrades to their raster functionality.
Updates to ER Mapper’s ECW file functionality include various enhancements and fixes as well as adding support for .ERS files (which provide header information in a simple ASCII format while pointing to a .ECW file).

JPEG 2000 support has also been added. A .jp2 file can now be included in a non-Category raster list or a Raster Category’s raster file list. The .ERS file can also be used to specify header information for a .jp2 file.

Including the LizardTech's MrSID format, the GTViewer family of products offers a wide range of Raster support making it easy to being in background imagery.

The screenshot above show the ER Mapper sample data composited with Country and State bounary shapes.

GTViewer .NET Control Version 7.0.0.20 is Available



Version 7.0.x.20 of the GTVControl is available.

------------
07.00.00.20 - 08/29/07
------------


- FIX - #127 - Problem with Draw Area removing the last point in the area.

------------
07.00.00.19 - 08/28/07
------------

- FIX - #126 - Fixes the the Draw Line and Draw Area commands. Finish Button did not take away the floating point and right mouse button did not work.

------------
07.00.00.18 - 08/28/07
------------

- NEW - #125 - OriginOffsetX and OriginOffsetY have been implemented for TrueType Text Element symbols.

- NEW - #124 - Upgraded ECW Library to version 3.3 and added support for .JP2 and .ERS files.

- CHG - New License Key Scheme.


Tuesday, August 28, 2007

GTViewer 7.0.x.11 is Available



Version 7.0.x.11 of GTViewer is available.

-----------------------
07.00.00.11 - 08/28/07
-----------------------

- NEW - Relative link path will now check for URL type address before decomposing the path. Previously, only absolute link paths could be used.

- NEW - Upgraded ECW Library to version 3.3 and added support for JPEG 2000 (.JP2) and .ERS files.

- NEW - OriginOffsetX and OriginOffsetY have been implemented for TrueType Text Element symbols.



Monday, August 13, 2007

.NET Controls Version 7.0.x.17 are Available



Version 7.0.x.17 of the PGTV Control and GTVControl are available.


PGTV Control
------------
07.00.00.17 - 08/09/07
------------


- FIX - #123 - GPS indicator was erased during drawing and zoom in commands.

- FIX - #121 - FindClosestColor would sometimes fail if a color table was not available in the data.

------------
07.00.00.16 - 08/06/07
------------

- NEW - New Methods:
bool GetSatelliteInfo(ArrayList list)
void TriggerGpsEvents()

- FIX - #120 - Overview map automatically suspends GPS updates.

- NEW - #119 - SuspendGps property added.

- NEW - #118 - A new method called GetSatelliteInfo was added to retrieve a list of current satellite information (azimuth, elevation, id, SNR).

- NEW - #117 - A new method called TriggerGpsEvents has been added to cause all GPS events to be fired with their last set of values. Since most GPS events are only fired when a value changes, this method is an easy way to get all of the event to fire without waiting for values to change to get the events.

- FIX - #116 - Placing text elements with the maximum number of character (1024) caused problems.

- FIX - #114 - Coordinate Conversion did not allow for data being in a Lat/Long projection.



GTVControl
------------
07.00.00.17 - 08/09/07
------------


- FIX - #123 - GPS indicator was erased during drawing and zoom in commands.

- FIX - #122 - Problem with Graphics resource when GPS was updating.

- FIX - #121 - FindClosestColor would sometimes fail if a color table was not available in the data.

------------
07.00.00.16 -
------------

- NEW - New Methods:
bool GetSatelliteInfo(ArrayList list)
void TriggerGpsEvents()

- NEW - #119 - SuspendGps property added.

- NEW - #118 - A new method called GetSatelliteInfo was added to retrieve a list of current satellite information (azimuth, elevation, id, SNR).

- NEW - #117 - A new method called TriggerGpsEvents has been added to cause all GPS events to be fired with their last set of values. Since most GPS events are only fired when a value changes, this method is an easy way to get all of the event to fire without waiting for values to change to get the events.

- FIX - #116 - Placing text elements with the maximum number of character (1024) caused problems.

- FIX - #115 - ToLatitudeLongitude and FromLatitudeLongitude were not implemented.

- FIX - #114 - Coordinate Conversion did not allow for data being in a Lat/Long projection.

- FIX - #113 - GetFileProperties did not work.

Friday, August 03, 2007

GTVx Version 7.0.x.4 is Available



Version 7.0.x.4 of GTVx is available.

-----------------------
07.00.00.04 - 08/03/07
-----------------------

- FIX - #C1001 - Text elements with 1024 character were causing problems. The text size limit is supposed to be 1024.

- FIX - Complex Shape with Hole elements were having problems if the rendering points in neighboring shapes had the same start point.

- NEW - New Methods:

long GetFontType(long fontId);

boolean GetGeoLocatePoint(long catId, long offset, double number, double low, double high, long mode, double* x, double* y);

Pocket GTViewer version 7.0.x.5 is Available


Pocket GTViewer version 7.0.x.5 is now available.


-----------

07.00.00.05 - 08/03/07
-----------

- FIX - Placing text elements with the maximum number of character (1024) caused problems.

- FIX - Complex Shape with Hole elements were having problems if the rendering points in neighboring shapes had the same start point.

Tuesday, July 31, 2007